我收到錯誤代碼2,無法找到該文件。但我已經嘗試了完整的路徑而沒有。 我已經沒有運氣讓這個過程開始,我不知道我的錯誤是什麼,有人可以指出它嗎?CreateProcess將無法啓動
這是全碼:
#include "stdafx.h"
#include <map>
#include <psapi.h>
#include "shlwapi.h"
#define ERROR_FILE_NOT_FOUND = 2;
void Debug(char* path[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
char* p = path[0];
char* args = path[1];
int dwProcess = CreateProcess((LPCWSTR)p, (LPWSTR)args, NULL, NULL, false, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi);
if (!dwProcess)
{
DWORD dwLastErrorCode = GetLastError();
printf("Error: %d", dwLastErrorCode);
}
DEBUG_EVENT debug_event = {0};
DWORD dwContinueStatus = DBG_CONTINUE;
DWORD dwResume = DBG_EXCEPTION_HANDLED;
while (!WaitForDebugEvent(&debug_event, INFINITE))
{
switch(debug_event.dwDebugEventCode)
{
case EXCEPTION_DEBUG_EVENT:
{
EXCEPTION_DEBUG_INFO& exception = debug_event.u.Exception;
if (exception.ExceptionRecord.ExceptionCode == 0x0EEDFADE && exception.dwFirstChance)
dwContinueStatus = dwResume;
}
}
ContinueDebugEvent(debug_event.dwProcessId, debug_event.dwThreadId, dwContinueStatus);
}
}
int main(char* argv[])
{
char* p[2] = { "Notepad.exe", "args" };
Debug(p);
return 0;
}
任何幫助表示讚賞。
你有沒有嘗試執行錯誤檢查?這是你應該做的第一件事。在你這樣做之後,你可能會意識到哪些參數導致了麻煩,以及爲什麼盡你所能編譯代碼是一個壞主意。這是一個開始:*如果函數失敗,返回值爲零。要獲得擴展錯誤信息,請致電GetLastError。* – chris
需要爲notepad.exe提供絕對路徑? – billz
@billz,你不應該爲notepad.exe。它通常位於PATH覆蓋的目錄中。 – chris