
13.09.2008, 11:27
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
GetCommandLine, откидуешь имя файла, чтоб остались только аргументы(вручную либо CommandLineToArgvW+lstrcatW, либо исчо както). то, что получицо пинаешь в WinExec
WinExec неудобно использовать вместе с CommandLineToArgvW, потому что нет версии WinExec для юникода.
Можно использовать следующий код:
Код:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\shell32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shell32.lib
.data?
argc dd ?
st_info STARTUPINFO <>
pr_info PROCESS_INFORMATION <>
.code
start:
invoke GetCommandLineW
invoke CommandLineToArgvW, eax, addr argc
mov esi, eax
mLoop:
dec argc
cmp argc, 0
je mQuit
add esi, 4
invoke RtlZeroMemory, addr pr_info, sizeof pr_info
invoke RtlZeroMemory, addr st_info, sizeof st_info
mov st_info.cb, sizeof st_info
mov edx, [esi]
invoke CreateProcessW, 0, edx, NULL, NULL, FALSE, 0, NULL, NULL, addr st_info, addr pr_info
invoke WaitForSingleObject, pr_info.hProcess, INFINITE
invoke CloseHandle, pr_info.hProcess
invoke CloseHandle, pr_info.hThread
jmp mLoop
mQuit:
invoke ExitProcess, 0
end start
но тогда запускать надо примерно так:
Код:
startproc "netstat /a" >> log.txt
|
|
|