簡體   English   中英

WinApi OpenProcess錯誤87

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM