一直試圖從我的Visual Studio C++應用程序調用Truecrypt exe,但CreateProcess
只是不工作。 GetLastError()
顯示127
。
其目標是調用exe 而不顯示命令窗口。請幫忙。我試過搜索並閱讀CreateProcess parameter explanation。使用CreateProcess調用exe文件?
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include<Windows.h>
int main(void)
{
HANDLE StdInHandles[2];
HANDLE StdOutHandles[2];
HANDLE StdErrHandles[2];
CreatePipe(&StdInHandles[0], &StdInHandles[1], NULL, 4096);
CreatePipe(&StdOutHandles[0], &StdOutHandles[1], NULL, 4096);
CreatePipe(&StdErrHandles[0], &StdErrHandles[1], NULL, 4096);
STARTUPINFO si; memset(&si, 0, sizeof(si)); // zero out
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = StdInHandles[0]; // read handle
si.hStdOutput = StdOutHandles[1]; // write handle
si.hStdError = StdErrHandles[1]; // write handle
PROCESS_INFORMATION pi;
std::cout<< CreateProcess("\"C:\\Program Files\\TrueCrypt\\cmd.exe\\TrueCrypt.exe\"", " //b" , NULL, NULL, FALSE, CREATE_NO_WINDOW , NULL, NULL, &si, &pi)<< "\n" << GetLastError() << "\n";
std::cin.get();
}
'CreatePipe'工作正常。它們返回1.設置'STARTUPINFO'的大小是在'memset(&si,0,sizeof(si));'中完成的。我也嘗試過你的技術,但它不起作用。需要幫忙。 – Nav
@Nav:不,您的memset()行會將整個結構清零。斯科特告訴你,第一個成員(cb)需要自己包含sizeof(STARTUPINFO)。 –
@Drew:我在memset後註釋了他的代碼。仍然沒有工作。 – Nav