From e1ed3577096a4bc53eda36c882144e31485448a8 Mon Sep 17 00:00:00 2001 From: Manuel Kamper Date: Sat, 30 Mar 2019 14:07:41 +0100 Subject: [PATCH] refactoring singleinstance +pass parameter to active singleinstance --- Mk0.Software.ImageSorter/Main.Designer.cs | 3 +- Mk0.Software.ImageSorter/Main.cs | 40 +++++++++++++++--- .../Mk0.Software.ImageSorter.csproj | 5 --- Mk0.Software.ImageSorter/Program.cs | 39 ++++++++++++++--- .../Properties/AssemblyInfo.cs | 2 +- .../dll/Mk0.Tools.SingleInstance.dll | Bin 6144 -> 0 bytes 6 files changed, 70 insertions(+), 19 deletions(-) delete mode 100644 Mk0.Software.ImageSorter/dll/Mk0.Tools.SingleInstance.dll diff --git a/Mk0.Software.ImageSorter/Main.Designer.cs b/Mk0.Software.ImageSorter/Main.Designer.cs index 29c210d..8a15e1a 100644 --- a/Mk0.Software.ImageSorter/Main.Designer.cs +++ b/Mk0.Software.ImageSorter/Main.Designer.cs @@ -472,8 +472,9 @@ this.MinimumSize = new System.Drawing.Size(983, 605); this.Name = "Main"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Image Sorter v1.27 | © 2015-2019 by manuelkamper.com"; + this.Text = "Image Sorter v1.28 | © 2015-2019 by manuelkamper.com"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing); + this.Load += new System.EventHandler(this.Main_Load); this.Shown += new System.EventHandler(this.Main_Shown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Main_KeyDown); this.Resize += new System.EventHandler(this.Main_ResizeEnd); diff --git a/Mk0.Software.ImageSorter/Main.cs b/Mk0.Software.ImageSorter/Main.cs index da8e2eb..f67bd15 100644 --- a/Mk0.Software.ImageSorter/Main.cs +++ b/Mk0.Software.ImageSorter/Main.cs @@ -6,7 +6,6 @@ using Mk0.Tools.Randomization; using System; using System.Collections.Generic; using System.ComponentModel; -using System.Data; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; @@ -41,21 +40,48 @@ namespace Mk0.Software.ImageSorter private string zoomType = "auto"; private string startuppath; private string startupimage; + public string[] Args; - public Main(string startuppath) + public Main() { InitializeComponent(); banner = new Banner(components, panel3, pictureBox1, pictureBox2, label1, label2); pictureBox.Cursor = grabCursor; DoubleBuffered = true; - if (!string.IsNullOrEmpty(startuppath) && File.Exists(startuppath)) - { - this.startuppath = Path.GetDirectoryName(startuppath); - startupimage = Path.GetFileName(startuppath); - } SetDefaultPath(); } + private void Main_Load(object sender, EventArgs e) + { + if (Args != null) + { + ProcessParameters(null, Args); + Args = null; + } + } + + public delegate void ProcessParametersDelegate(object sender, string[] args); + public void ProcessParameters(object sender, string[] args) + { + if (args != null && args.Length != 0) + { + if (!string.IsNullOrEmpty(args[0]) && File.Exists(args[0])) + { + startuppath = Path.GetDirectoryName(args[0]); + startupimage = Path.GetFileName(args[0]); + if (!string.IsNullOrEmpty(startuppath) && File.Exists(startuppath)) + { + startuppath = Path.GetDirectoryName(startuppath); + startupimage = Path.GetFileName(startuppath); + } + SetDefaultPath(); + SearchImages(); + CountPicsInPath(); + LoadPicture(GetImageIndex(Path.Combine(startuppath, startupimage))); + } + } + } + /// /// Default: Lädt das erste Bild /// diff --git a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj index 89e6b0e..37b3458 100644 --- a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj +++ b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj @@ -95,10 +95,6 @@ ..\Mk0.Tools.Randomization.dll False - - ..\Mk0.Tools.SingleInstance.dll - False - @@ -175,7 +171,6 @@ - diff --git a/Mk0.Software.ImageSorter/Program.cs b/Mk0.Software.ImageSorter/Program.cs index b29ff39..b47ab2b 100644 --- a/Mk0.Software.ImageSorter/Program.cs +++ b/Mk0.Software.ImageSorter/Program.cs @@ -1,6 +1,5 @@ using System; -using System.Windows.Forms; -using Mk0.Tools.SingleInstance; +using Microsoft.VisualBasic.ApplicationServices; namespace Mk0.Software.ImageSorter { @@ -12,9 +11,39 @@ namespace Mk0.Software.ImageSorter [STAThread] static void Main(string[] args) { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - SingleApplication.Run(args.Length == 0 ? new Main(string.Empty) : new Main(args[0]), Properties.Settings.Default.singleInstance); + App myApp = new App(); + myApp.Run(args); + } + + class App : WindowsFormsApplicationBase + { + public App() + { + IsSingleInstance = Properties.Settings.Default.singleInstance; + EnableVisualStyles = true; + + ShutdownStyle = ShutdownMode.AfterMainFormCloses; + StartupNextInstance += new StartupNextInstanceEventHandler(SIApp_StartupNextInstance); + } + + protected override void OnCreateMainForm() + { + MainForm = new Main(); + ((Main)MainForm).Args = new string[CommandLineArgs.Count]; + CommandLineArgs.CopyTo(((Main)MainForm).Args, 0); + } + + protected void SIApp_StartupNextInstance(object sender, StartupNextInstanceEventArgs eventArgs) + { + string[] args = new string[eventArgs.CommandLine.Count]; + eventArgs.CommandLine.CopyTo(args, 0); + + object[] parameters = new object[2]; + parameters[0] = MainForm; + parameters[1] = args; + + MainForm.Invoke(new Main.ProcessParametersDelegate(((Main)MainForm).ProcessParameters), parameters); + } } } } diff --git a/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs b/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs index c25d0c0..e5ef9a9 100644 --- a/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs +++ b/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.27.*")] +[assembly: AssemblyVersion("1.28.*")] //[assembly: AssemblyFileVersion("1.6.0.0")] diff --git a/Mk0.Software.ImageSorter/dll/Mk0.Tools.SingleInstance.dll b/Mk0.Software.ImageSorter/dll/Mk0.Tools.SingleInstance.dll deleted file mode 100644 index 490cde19102e8ee81d20b59e0271e41ef62fa2f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmeHLU2Ggz6+SbwJG)*x8?T)>n>1-AbsBABXIaOljiG7%pDe_&<8|yLxY)D1V|$w2 zneEJM9U~E3Rjt&AR*4W5K|DYnh)RkeQd>#|LV$oGQ6z|p5UQX;LR26`#8dc7_|Bc( z_1Z~_@=ANxbME=O=bm%!xp(e(^wc?0h$w*P=1rp4(R1q)@cqFG#L=B^MCp}=w|2cQ z9eHcl~kag&}(@5@DMc%T=xBDhRT533LfyeDKz&CtMcD!Um=-=_F5;= z7$bd{ij%Ou%@H+$_nQu)1M6k)M{70Lg;p5!;X3`KXPogsH*WxdOvGC88--wgT&r+FI3^+S$l}Zq|+u#LlY3v}LQzC>=rw{EQ>jiuT$XZhh9Yc?) zVe=jgwzqQ}s=EUnGIuY!rY#O~S_&t2f@o1(4c!Vjfd-DVa|4}a!rlcoQA67esWph8 zgIE$8$b4czs;n;8%9B0GRI)qO-PH>M>t6tzK|t+iiQYti7>=}OJjb*aT-IpDe#8P% z`|%9z2F|6}e&~352z?LeS1@z?K*7#}=7y9>(>vr%$PUpzrEacCs1VX3N)&Qp8J9Ku z6+GVdm{#b)g<6l@D)U&@{*`n_QRz{cp(>3i8|jNsRVgW{;Jhl}ivsSEne%snHwt`M z;M=5=;9n<(%Yri}eNI;CZRILpW8g74LO)SPlqmgHz6727mCdmKD5Md(LL=Z@kgv*7 z`m2z(2Y8n4(BbBL$$6HLp+Ct7sbAnR6yq1@*h+*h(748$&&GQ(&eva|^V&7#%XQQ{ z%0;dgG?pdkBJwh$F@2sax`g$*UZJMwGN^|+h4doDm2dJ|)~MGgMCSyBaWYfvqhJ63 z!UR5Eg};}Zn`Qcn+(5mGgfe6gw*p4!0l;SJ60ldmegV@09ux4SfI8r2G6nvGfXf0t z1*p7|Cco7HH6?zl=?@(vp5IE1%C`KI!9HSo~x-9*S zwgeo&f5_eROJVt|^nIcK3uTF(1Lw1Vfq;q^NSIzgU2Ub$Q<56#4Zv3V5#T-a2f%jv z3t$H|NJ)%m_;CRT1^<(@5uA+Rd`iF^YAi{o=>(ulhO~{Q=`mWQ%Q8tgKanw#LiCR4 z8z_O?23D#SfwYTu5Rfap+MXfoWVE%stGqeZ@hC$qe>&!AM)Kr&~FL zGE1hHTb#59%Z_7MUX6dq@Yb=WO)GCN9oDUU!4S4bb5fes1KO->rR@=x(zMS)J6%5*?Wyf4tysfBM(yisyF%xCWGm8e# ziFvYS!Sw2+l{%VSbPPR@3PBb17Z_j0IExt-jf$CMB@sd*-W8;mN*TlRm{WEQr+a@g zUntzM@PyE}Nh7vXqv1x0>+_LoWpGba)vYVC+!A*yZ|^93Wv=_GhWyfkTR-WG_j zBFIyQV^cEc*$$;GZ`^aLVGNo2f@Qm&nRBbGYGhEvD8%ACX`+7Di~U72oSNLPNQ8|- zUsd-vhMVNrTw2{tmFgzc3nHSi?BfW7kT@tB3yxj3^8QfDEZR#I)EX@2nIx2np}WQ? zcETAd3JBA~XN+8#6JISxvP-kWPn30DW5&~#QKfLaY&?W_zD-%u(a-RKL;pFybp7JB z=LastzLEO5`qXg>Xp$6GG@NfhVlgJ84CLleINp-pA^yTGX*n*dahzc-X(&hWT7x7C zG#t>VBuQ!+Z3wB+mSa)SY{P(7G#U+QiX=yyeY%kRI!HifJD0u zqr0m|Pxb6e_2g3fdgkY|`+9qObNdeTcF#Z9W#m5Eo6X~{j#;~K{lbrERHE(4qr;Q6 zBd4>nsSe_b_F%FL?ngJ(ghQrVD(K=!+{B}_nnV-Y91ETN$hIGIFXQ5j$oUy*fDW#8L(;5JkBw0yTzzUNOf>s$aV6dXM^(Fw*pOkQott1YT z@G5fK3#;{Z{guvRo+9RPpj}-J!isTxW0g61r8&N8)iA{?h~xJzb6p?jgotw-bJ&Q! zjJ5FUGI;m4ImRBbj%#hMU(NMvc|eTmNA&nEL0nlxx{Un&uW>xzhwTHJ0nPuPVH1Cn Ke%L;68Tc=9o{#JR