Как передать аргументы командной строки в форму при запуске?

У меня есть простое приложение с графическим интерфейсом, которое должно выполнять определенную функцию при запуске, но не при запуске вручную с рабочего стола или из меню "Пуск". Чтобы включить эту функцию, я подумал о предоставлении аргументов командной строки приложению, чтобы в зависимости от аргумента командной строки мы могли различать запуск при запуске и запуск вручную.
Мой вопрос заключается в том, как мне убедиться, что всякий раз, когда пользователь щелкает значок приложения на своем рабочем столе, необходимые аргументы командной строки передаются программе.
Я использую C# для программирования своего приложения и хочу запустить его на Windows 7

1 ответ

Решение

Общий шаблон проектирования для приложений Windows, который может быть запущен либо при запуске (т. Е. Автоматически), либо вручную (т. Е. Когда пользователь запускает приложение), заключается в передаче аргумента командной строки, когда приложение запускается при запуске, но не когда пользователь запускает его вручную. Зачем? Потому что вы контролируете механизм, с помощью которого приложение запускается автоматически (например, потому что вы создаете раздел реестра в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run). Так, например, вы можете добавить значение "c:\program files\MyCompany\MyApp.exe" /Startup И тогда вы можете проверить startup аргумент в вашем коде:

bool isStartupLaunch;
foreach (string arg in args)
   isStartupLaunch |= (arg.toLower() == "/startup");

Напротив, вы никогда не можете контролировать, как пользователь собирается запускать ваше приложение. Возможно, они дважды щелкают по ярлыку, но, может быть, они дважды щелкают по фактическому исполняемому файлу, или, может быть, они открывают командную строку и запускают таким образом. Поэтому вы не хотите полагаться на получение определенного аргумента командной строки, когда пользователь запускает ваше приложение. Гораздо безопаснее искать автоматический запуск, потому что вы контролируете, как это делается, и, следовательно, можете контролировать передаваемые аргументы командной строки.

Другие вопросы по тегам