[英]WinApi OpenProcess error 87
我正在嘗試使用Wisual Studio 2012,C ++控制台應用程序打開進程並得到87錯誤:
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)
EXTERN_DLL_EXPORT int setLastObject(LPCWSTR wname) {
LPCWSTR str = _TEXT("Name of window");
HWND wnd = FindWindow(NULL,wname);
LPDWORD cpid = 0;
DWORD pid = GetWindowThreadProcessId(wnd,cpid);
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
int err = GetLastError();
return err;
}
PS我正確獲得PID
函數GetWindowThreadProcessId
返回創建窗口的線程的ID。
您需要使用相應的進程ID,該ID在第二個參數中返回。 所以像這樣
EXTERN_DLL_EXPORT int setLastObject(LPCWSTR wname) {
LPCWSTR str = _TEXT("Name of window");
HWND wnd = FindWindow(NULL,wname);
DWORD dwProcessId = 0;
DWORD dwThreadId = GetWindowThreadProcessId(wnd, &dwProcessId);
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS,false,dwProcessId);
int err = GetLastError();
return err;
}
另外,您實際上應該檢查FindWindow
是否成功,如果確實獲得了有效的HANDLE
,則必須記住在完成處理后使用CloseHandle
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.