今日、私はwindows.hをちょっと混乱させることにしました。私は少し練習をすることを考えました。これは私が書いたコードですが、頭痛を与えています。GetModuleFileNameExが0を返し、GetLastErrorがオーバーフローエラーを返します。私は間違って何をしていますか?
0を返すので、名前はExecNameに渡されず、GetLastError()で参照した場合のエラーはオーバーフローエラーです。
私は実行可能ファイルの名前を取得するさまざまな方法を試みましたが、常に同じ終了します。
#include <iostream>
#include <Windows.h>
#include <Psapi.h>
TCHAR* ExeToFind = "Discord.exe";
BOOL CALLBACK CB_EW(
_In_ HWND hwnd,
_In_ LPARAM lParam
)
{
TCHAR ExecName[MAX_PATH];
DWORD ProcesID = NULL;
GetWindowThreadProcessId(hwnd, &ProcesID);
HANDLE handle = OpenProcess(NULL, false, ProcesID);
if (GetModuleFileNameEx(handle, NULL, ExecName, MAX_PATH) == 0) {
std::cout << "Error " << GetLastError();
return true;
}
//GetWindowText(hwnd, ExecName, GetWindowTextLength(hwnd)+1);
//GetProcessImageFileName(hwnd, ExecName, MAX_PATH);
std::cout << ExecName;
if (ExecName == ExeToFind) {
std::cout << "Here it is\n";
return false;
}
else {
std::cout << "next\n";
return true;
}
}
int main()
{
//HWND hWnd = FindWindow(0,0);
EnumWindows(CB_EW, NULL);
while (true) {
}
return 0;
}
私は間違っていますか?
を働いていた、アクセス許可の問題でした;'あなたが書くために何を意味するのか、ほぼ確実ではありません。 –
ありがとうございました、気付かれていない、ちょうどそれを変更しましたが、それでも同じ結果に終わります – Myownway
これでOpenProcessの戻り値に対してerrorcheckを追加しました。アクセスが拒否されました – Myownway