Пытаюсь выполнить следующий код - ошибка приложения, наивный вопрос, что не так? Приведите плз ктонить рабочий пример запускающий dat.exe из тойже директории где и наш файл format PE GUI entry __main include 'INCLUDE\win32a.inc' include 'INCLUDE\APIA\kernel32.inc' __main push _dat push $05 call WinExec ret _dat: db 'dat.exe',0
Хм... Если в _dat лежит строка, которую надо выполнить - то поменяй местами push'ы Т.е. push $05 push _dat Хотя точно не уверен, т.к. я щас ещё пьян
Код (Text): UINT WinExec( LPCSTR lpCmdLine, // address of command line UINT uCmdShow // window style for new application ); push uCmdShow push lpCmdLine call WinExec или invoke WinExec,lpCmdLine,uCmdShow
Тож ошибку вызывает, видимо ему не годиться _dat за адресс, или еще чтото такое ПОмогите плз ктонить, что не так Вот как сейчас пробовал format PE GUI entry __main include 'INCLUDE\win32a.inc' include 'INCLUDE\APIA\kernel32.inc' ;push SW_SHOW ;push _dat ;call WinExec __main: invoke WinExec,_dat,SW_SHOW ret _dat: db "dat.exe",0
Note This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function. 246116721__TestWinExec.rar
предполагаю, что не работает не из-за этого, а из-за того, что нужно указывать полный путь к файлу (?)
jecxz Конечно, не из-за этого. WinExec вызывает CreateProcess с командной строкой и переменными окружения родительского процесса, потом ждёт пока новый процесс не создаст стек сообщений или не завершится. Не нужно. Чтобы не гадать, лучше посмотреть в оле, предварительно почитав msdn.
Просто в примерах Qpwoe не правильно компилировался импорт. Переделал свой пример так: format PE GUI 4.0 entry start include 'win32a.inc' dat db 'beer.exe',0 _StartUpInfo STARTUPINFO ? _ProcessInformation PROCESS_INFORMATION ? start: ; invoke CreateProcess,dat,0,0,0,0,0,0,0,_StartUpInfo,_ProcessInformation invoke WinExec,dat,SW_NORMAL invoke ExitProcess,1 data import library kernel32,'KERNEL32.DLL' import kernel32,\ CreateProcess,'CreateProcessA',\ WinExec,'WinExec',\ ExitProcess,'ExitProcess' end data И всё нормально заработало.