#

 

 

 

Wenn ein Start-Parameter unter Windows mit Leerzeichen versehen ist, dann führt das automatisch dazu, dass das Programm mit mehreren Argumenten gestartet wird

Ein Pfad mit Leerzeichen wie hier im Beispiel: „C:\2016-12-23 Test“  führt automatisch dazu, dass das Args[0] der erste Teil ist und Args[1] enthält Test.

Lösung:

Deshalb muss man in solchen Fällen entweder die Startparameter mit Hochkommas übergeben oder alle StartupArgumente zusammenfügen.

        private void Application_Startup(object sender, StartupEventArgs e)

        {

            //--------< Application_Startup() >--------

 

            //--< get Start Arguments >--

            String start_Folder = "";

            if (e.Args.Length > 1)

            {

                //*concat spaces C:\2016-12-23 Test

                foreach (string sArg in e.Args)

                {

                    start_Folder = start_Folder + " " + sArg ;

                    //MessageBox.Show("Startup Argument is: \n\n" + e.Args[0]);

                }

            }

            //--</ get Start Arguments >--

 

 

Hier dargestellt:

Beim Start der Anwendung mit dem Parameter %W wird der Pfad korrekt mit dem Leerzeichen übergeben.

 

 

Kompletter WPF, C# Code der App.xaml.cs, welche die Methode zum Staten der App enthält. Hier werden die Startargume zusammengefasst.

        private void Application_Startup(object sender, StartupEventArgs e)

        {

            //--------< Application_Startup() >--------

            String start_Folder = "";

            //--< get Start Arguments >--

            //* myProgram.exe %1

            //* myProgram.exe c:\\Data

            //* C:\_Daten\Desktop\WPF\Gruppiere_Verzeichnis\Gruppiere_Verzeichnis\bin\Debug\Gruppiere_Verzeichnis.exe %1

            //* C:\_Daten\Desktop\WPF\Gruppiere_Verzeichnis\Gruppiere_Verzeichnis\bin\Debug\Gruppiere_Verzeichnis.exe  C:\_Daten\Desktop\Test_Fotos\2016-12-23

            if (e.Args.Length > 1)

            {

                //*concat spaces C:\2016-12-23 Test

                foreach (string sArg in e.Args)

                {

                    start_Folder = start_Folder + " " + sArg ;

                    //MessageBox.Show("Startup Argument is: \n\n" + e.Args[0]);

                }

            }

            //--</ get Start Arguments >--

 

            //-< correct: Folder >-

            //*C:\_Daten\Desktop\Test\Test_Fotos\Karotten 2016-12-23 131034.jpg

            //start_Folder = "C:\\_Daten";

            //start_Folder = "G:";

            if (start_Folder !="")

            {

                if (start_Folder.LastIndexOf(":") ==start_Folder.Length )

                {

                    //*Drive G:

                    //start_Folder is ok

                }

                else if (start_Folder.LastIndexOf("\\") < start_Folder.LastIndexOf("."))

                {

                    //Folder C:\\_Daten

                    start_Folder = start_Folder.Substring(0, start_Folder.LastIndexOf("\\"));

                }

            }

            //-</ correct: Folder >-

 

            // Create main application window, starting minimized if specified

            MainWindow mainWindow = new MainWindow();

            mainWindow.Startup_Folder_Path = start_Folder;

            mainWindow.Show();

            mainWindow.reload();

            //--------</ Application_Startup() >--------

        }

 

 

 

Start Paramter für die Windows Apps richtig eintragen:

Man kann bei Registry Startparametern die Parameter %1 %D %L %V für den Pfad der Datei mitgeben.

Unter dem Parameter %W wird dann die Parent oder Working Directory übergeben.

//--------< btnRegister_Context_Click() >--------

//*add additional Context-Menu in File-Explorer for: Folders, Images, Videos, right-click on background of folder

String app_Key = "GroupInSubfoldersByDate";

String menu_Title = "≡ SubFolders → Images @byDate";

String app_Fullname_with_Path = System.AppDomain.CurrentDomain.BaseDirectory + "\\" + System.AppDomain.CurrentDomain.FriendlyName;

//parameter %1 %D %L %V Long Fully Qualified Path of FIle

//parameter %W Long Fully Qualified Path of parent Working Folder

 

//--< Folder >--

String menu_Path = "Folder\\shell" + "\\" + app_Key;

clsRegistry.add_Menu_of_App(menu_Path, menu_Title, app_Fullname_with_Path," %1" );

//--</ Folder >--

 

//--< Images > --

menu_Path = "SystemFileAssociations\\image\\shell" + "\\" + app_Key;

clsRegistry.add_Menu_of_App(menu_Path, menu_Title, app_Fullname_with_Path, " %1");

//--</ Images > --   

 

//--< Videos > --

menu_Path = "SystemFileAssociations\\.mov\\shell" + "\\" + app_Key;

clsRegistry.add_Menu_of_App(menu_Path, menu_Title, app_Fullname_with_Path, " %W");

menu_Path = "SystemFileAssociations\\.mp4\\shell" + "\\" + app_Key;

clsRegistry.add_Menu_of_App(menu_Path, menu_Title, app_Fullname_with_Path, " %W");

//--</ Videos > --   

 

//--< Background > --

menu_Path = "Directory\\Background\\shell" + "\\" + app_Key;

clsRegistry.add_Menu_of_App(menu_Path, menu_Title, app_Fullname_with_Path, " %W");

//--</ Background > --

System.Windows.Forms.MessageBox.Show("Contextmenu Keys installed");

//--------</ btnRegister_Context_Click() >--------

 

Mobile

.

yesmovies