Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Taking multiple files (arguments) from Windows shell context menu on C#

Tags:

c#

windows

I am writing a C# application and it takes files as argument, I added it to shell context menu with code listed below;

if (((CheckBox)sender).CheckState == CheckState.Checked)
            {
                RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Classes\\*\\shell\\" + KEY_NAME + "\\command");

                if (key == null)
                {
                    key = Registry.CurrentUser.CreateSubKey("Software\\Classes\\*\\shell\\" + KEY_NAME + "\\command");
                    key.SetValue("", Application.ExecutablePath + " \"%1\"");
                }
            }
            else if (((CheckBox)sender).CheckState == CheckState.Unchecked)
            {
                RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Classes\\*\\shell\\" + KEY_NAME);

                if (key != null)
                {
                    Registry.CurrentUser.DeleteSubKeyTree("Software\\Classes\\*\\shell\\" + KEY_NAME);
                }

It is working good, but if I select multiple files, multiple instances of application running. for example if I select 5 files 5 application is opening, how can I fix this?

like image 211
ZipPy Avatar asked Dec 10 '09 01:12

ZipPy


1 Answers

Detect if an instance of your application is already running on startup.

If it does, send the command line arguments to the running instance and exit the new instance.

like image 189
dtb Avatar answered Oct 30 '22 06:10

dtb