создаешь файл под запрись, в StartupInfo.hStdOutput записываешь его хэндл, createprocess вызываешь с наследованием хэндлов. вот, видимо... а с командной строки можно так: лгураловрлоралу > file.txt да, кстати, и в StartupInfo.hStdError тоже єтот хандл записать нужно - мало ли кто куда что пишет
Да пробовал я так - не идет. С командной строки из под Far'а идет со знаком ]", из под ShellExecute нет. Код (Text): invoke ShellExecute, 0, tx("open"), tx("ipconfig.exe>1.txt"), 0, 0, 0 так тоже не идет Код (Text): myprog proc hInst:DWORD, par1:DWORD, par2:DWORD, par3:DWORD Local l1:DWORD Local hFile:DWORD Local prinfo2:PROCESS_INFORMATION Local stinfo2:STARTUPINFO invoke CreateFile, tx("1.txt"), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE,\ 0, OPEN_EXISTING, 0, 0 mov hFile,eax CP eax, INVALID_HANDLE_VALUE, z, @@100 invoke fill_memory, ADDR stinfo2, SIZEOF stinfo2, 0 mov [stinfo2.cb], SIZEOF stinfo2 mov [stinfo2.dwFlags], STARTF_USESTDHANDLES mov eax, hFile ;mov [stinfo2.hStdInput], eax mov [stinfo2.hStdOutput], eax ;mov [stinfo2.hStdError], eax invoke CreateProcess, tx("ipconfig.exe>1.txt"), 0, 0, 0, TRUE, \ 0, 0, 0, ADDR stinfo2, ADDR prinfo2 invoke CloseHandle, hFile ...
попробовал - пока не вышло (хрен его знает но одно скажу - c:\winnt\system32\ipconfig.exe надо полностью писать... тогда запускается
Вот, подобрал я Код (Text): ;invoke AllocConsole ;invoke CreateFile, tx("CONOUT$"), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE,\ ; td(SIZEOF SECURITY_ATTRIBUTES, 0, TRUE), OPEN_EXISTING, 0, 0 invoke CreateFile, tx("C:\WORK\1\probalib\1.txt"), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE,\ td(SIZEOF SECURITY_ATTRIBUTES, 0, TRUE), OPEN_EXISTING, 0, 0 mov hFile,eax CP eax, INVALID_HANDLE_VALUE, z, @@100 ;mov edx, tx("proba") ;invoke len_str, edx ;invoke WriteFile, hFile, edx, [dlina_str], ADDR l1, 0 invoke fill_memory, ADDR stinfo2, SIZEOF stinfo2, 0 mov [stinfo2.cb], SIZEOF stinfo2 mov [stinfo2.dwFlags], STARTF_USESTDHANDLES mov eax, hFile ;mov [stinfo2.hStdInput], eax mov [stinfo2.hStdOutput], eax mov [stinfo2.hStdError], eax invoke CreateProcess, tx("C:\WINXP\system32\ipconfig.exe"), 0, 0, 0, TRUE, \ 0, 0, 0, ADDR stinfo2, ADDR prinfo2 mpectex 'press ok' invoke CloseHandle, hFile ;invoke FreeConsole Можно или в файл (уже существующий или флаг поменять) или на свою консоль. td - макрос ( td(1, 2, 3) -> OF xxxx , xxxx dd 1, 2, 3 )
Код (Text): invoke ShellExecute, 0, tx("open"), tx("cmd.exe"),tx("/C ipconfig.exe > 1.txt"), 0, 0 только лучше вместо cmd.exe юзай то, что лежит в %COMSPEC%