Тема: Казнить Exe
Показать сообщение отдельно
Старый 14.12.2006, 23:50   #11
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Re: Казнить Exe

Сообщение от Diplomat
Насколько помню, в Варсике 4 и 5 ЕХЕ-шники запускаются с помощью команды Shell
Вот я посмотрел как использовать эту комманду в MSDN в коде VBNET:
Функция Shell
Запускает исполняемую программу и возвращает целочисленное значение, содержащее идентификатор процесса программы, если она все еще выполняется.

[highlight=VBNET]Public Function Shell( _
ByVal Pathname As String, _
Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _
Optional ByVal Wait As Boolean = False, _
Optional ByVal Timeout As Integer = -1 _
) As Integer[/highlight]


Параметры
Pathname
Обязательный. String. Имя исполняемого файла со всеми необходимыми аргументами. Pathname может также содержать имя диска и путь.
Style
Необязательный. AppWinStyle. Значение, выбираемое из перечисления AppWinStyle, соответствующее стилю окна, в котором запускается программа. Если параметр Style опущен, Shell использует значение AppWinStyle.MinimizedFocus, запускающее программу в свернутом окне с фокусом.
Аргумент Style может принимать одно из следующих значений:

Сообщение от Значение перечисления
AppWinStyle.Hide - Окно скрыто, и фокус передан скрытому окну.
AppWinStyle.NormalFocus - Окно получает фокус и отображается в своих предыдущих размере и позиции.
AppWinStyle.MinimizedFocus - Окно отображается как значок и имеет фокус.
AppWinStyle.MaximizedFocus - Окно получает фокус и развернуто во весь экран.
AppWinStyle.NormalNoFocus - Окно восстанавливает свои последние размер и позицию. Активное в данный момент окно остается активным.
AppWinStyle.MinimizedNoFocus - Окно отображается в виде значка в панели задач. Активное в данный момент окно остается активным.
Wait
Необязательный. Boolean. Значение, определяющее, должна ли функция Shell ожидать завершения выполнения программы. Если параметр Wait опущен, Shell использует False.
Timeout
Необязательный. Integer. Длительность в миллисекундах интервала, в течение которого ожидается завершение выполнения программы, если Wait равно True. Если параметр Timeout опущен, Shell использует-1, то есть таймаут не используется и Shell ожидает завершения выполнения программы. Таким образом, если вы опустите Timeout или установите его в -1, существует возможность, что Shell никогда не передаст управления вашей программе.


Примечания
Значение, возвращаемое Shell, зависит от того, находится ли программа, указанная в Pathname, до сих пор в процессе выполнения (на момент возврата Shell). Если вы установите Wait в True и программа завершится до окончания таймаута, Shell возвращает ноль. Если таймаут истекает или вы опускаете Wait или установили его в значение в False, Shell возвращает идентификатор процесса программы. Идентификатором процесса называется уникальный номер, определяющий запущенную программу.

Если функция Shell не может запустить указанную программу, возникает ошибка System.IO.FileNotFoundException. Это может произойти, например, когда вы пытаетесь запустить 16-разрядную программу, такую как command.com, из приложения, использующего System.Windows.Forms. Для обработки подобной ситуации можно запустить 32-разрядную программу, которая запустит требуемую 16-разрядную. В случае с command.com можно в качестве альтернативы запустить cmd.exe.

По умолчанию функция Shell выполняет программу асинхронно. Это означает, что программа, запущенная функцией Shell может не прекратить выполнения до того, как операторы, следующие за Shell, будет выполнены. Если вы желаете дождаться окончания выполнения программы, установите Wait в True.

Следует всегда заключать полный путь и имя файла в кавычки, согласно следующему примеру:

ID = Shell("""C:\Program Files\MyFile.exe"" -a -q", , True, 100000)
Каждая пара прилежащих двойных кавычек ("") в строковом литерале интерпретируется, как кавычка внутри строки. Таким образом, в предыдущем примере функции Shell передается следующая строка:

"C:\Program Files\MyFile.exe" -a -q
Если путь не заключен в кавычки, Windows будет искать файл Program.exe в каталоге C:\, вместо MyFile.exe в C:\Program Files.


Пример:

Данный пример использует функцию Shell для выполнения приложения, указанного пользователем. Задание AppWinStyle.NormalFocus в качестве второго аргумента раскрывает окно нормального размера и передает ему фокус.

[highlight=VBNET]Dim ProcID As Integer
' Run Calculator.
ProcID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)
' The preceding path is for Windows XP;
' The Windows 2000 path is C:\WINNT\system32\calc.exe.[/highlight]
__________________
Blitz3d to Unity Wiki
(Offline)