|

楼主 |
发表于 2024-9-2 17:59:28
|
显示全部楼层
湖南省岳阳市
|
系统_取DOS执行结果 | 文本型 | | |
命令行文本 | 文本型 | | | | 即时回显 | 子程序指针 | | | | 超时间隔 | 整数型 | | | |
如果 (是否为空 (即时回显 ))  szBuf = 系统_取DOS执行结果T (编码_Ansi到Unicode (命令行文本, ), , , 超时间隔 ) szBuf = 系统_取DOS执行结果T (编码_Ansi到Unicode (命令行文本, ), 即时回显, , 超时间隔 )返回 (取字节集 数 据 (szBuf, #文本型, ))|
系统_取DOS执行结果T | 字节集 | | |
命令行文本 | 字节集 | | | | 即时回显 | 子程序指针 | | | | 返回宽字符 | 逻辑型 | | | | 超时间隔 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hRead | 整数型 | | | hWrite | 整数型 | | | sa | SECURITY_ATTRIBUTES | | | nMaxCount | 整数型 | | | szPath | 字节集 | | | szCmdLine | 字节集 | | | si | STARTUPINFO | | | pi | PROCESS_INFORMATION | | | dwBytesInStdOut | 整数型 | | | lRes | 逻辑型 | | | dwExitCode | 整数型 | | | szTemp | 字节集 | | | szBuf | 字节集 | | |
sa.nLength = 12 sa.lpSecurityDescriptor = #NULL sa.bInheritHandle = 真 lRes = CreatePipe (hRead, hWrite, sa, 0 ) 如果真 (lRes = 假) 返回 ({ })si.cb = 68
si.dwFlags = 位或 ( #STARTF_USESTDHANDLES, #STARTF_USESHOWWINDOW )si.wShowWindow = #SW_HIDE si.hStdInput = hRead si.hStdOutput = hWrite si.hStdError = hWrite szPath = 取空白字节集 (incShl ( #MAX_PATH, 真)) SHGetSpecialFolderPathW ( #NULL, 取指针字节集_ (szPath ), #CSIDL_SYSTEM, 假)写到内存 (编码_Ansi到Unicode (选择 (_WIN32_WINNT ≥ #_WIN32_WINNT_WINXP, “\cmd.exe”, “\command.com”), ), 取指针字节集_ (szPath ) + incShl (文本_取长度W (szPath ), 真), )szCmdLine = 编码_Ansi到Unicode (“ /c ”, 真) + 命令行文本 nMaxCount = 取字节集长度 (szCmdLine )szCmdLine = szCmdLine + 取空白字节集 (incShl ( #MAXSHORT, 真) - nMaxCount ) lRes = CreateProcessW (取指针字节集_ (szPath ), 取指针_字节集型 (szCmdLine ), 取 数 据 _通用型 (sa ), #NULL, 真, 0, #NULL, #NULL, si, pi )CloseHandle (hWrite ) 如果真 (lRes = 假) CloseHandle (hRead ) 返回 ({ })CloseHandle (pi.hThread) 如果真 (超时间隔 ≤ 0 ) 超时间隔 = #INFINITE WaitForInputIdle (pi.hProcess, 1000)
判断循环首 (dwBytesInStdOut ≠ -1 ) 如果真 (WaitForSingleObject (pi.hProcess, 超时间隔 ) = #WAIT_TIMEOUT ) TerminateProcess (pi.hProcess, 0 ) PeekNamedPipe (hRead, #NULL, 0, #NULL, dwBytesInStdOut, #NULL ) 如果 (dwBytesInStdOut > 0 )  szTemp = 取空白字节集 (dwBytesInStdOut ) ReadFile (hRead, szTemp, dwBytesInStdOut, dwBytesInStdOut, #NULL )  szBuf = szBuf + szTemp   如果真 (是否为空 (即时回显 ) = 假)   如果 (返回宽字符 )    szTemp = A2W_CP (szTemp, m_CodePage )    szTemp = szTemp + { 0 }  lRes = 程序_执行整数子程序 (即时回显, 取指针_字节集型 (szTemp), , ) ≠ 0   如果真 (lRes )   跳出循环 ()  GetExitCodeProcess (pi.hProcess, dwExitCode )  如果真 (dwExitCode ≠ #STILL_ACTIVE )  跳出循环 () Sleep (1) 判断循环尾 ()CloseHandle (pi.hProcess )CloseHandle (hRead ) 如果真 (szBuf = { }) 返回 ({ }) 如果 (返回宽字符 ) 返回 (A2W_CP (szBuf, m_CodePage ))  szBuf = szBuf + { 0 }返回 (szBuf)
|
|