我正在嘗試制作一個應用程式,該應用程式僅在呼叫 dll 的那一刻才運行某些內容,此時聚焦的視窗與給定的值具有相同的路徑。話雖如此,以下代碼將添加到一個 dll 中,該 dll 將具有一個函式,該函式將路徑值作為它的引數,如果滿足條件則回傳 true,否則回傳 false。我遇到的問題是我似乎找不到獲取焦點視窗路徑的方法,以下代碼總是回傳一個空字串。而且我不能簡單地使用視窗的標題,因為有些應用程式是的,標題是靜態的Task Manager,但還有其他應用程式更改了標題,例如Windows Explorer根據用戶所在的位置更改標題。我有什么改變?
以下代碼僅用作測驗,因為稍后這是我需要的基礎,我只需要添加對path變數的比較,并基于此回傳 true 或 false:
#include "Windows.h";
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main() {
// 2 seconds delay to have time to switch windows
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
HWND hWnd = GetForegroundWindow();
int length = GetWindowTextLength(hWnd);
wchar_t* title = new wchar_t[length];
GetWindowTextW(hWnd, title, length);
DWORD id;
GetWindowThreadProcessId(hWnd, &id);
wchar_t* path = new wchar_t[MAX_PATH];
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
GetModuleFileNameW((HMODULE)hProc, path, MAX_PATH);
CloseHandle(hProc);
wcout << "ID: " << id << " | Title: " << title << " | Path: " << path << endl << endl;
return 1;
}
輸出示例: ID: 2536 | Title: Task Manage | Path:
uj5u.com熱心網友回復:
為了得到我想要的結果,我切換到了QueryFullProcessImageName(就像 CherryDT 建議看一看),但是你必須小心,你需要使用Admin權限運行它才能獲取我遇到的一些應用程式的路徑Task Manager,也許是因為它是一個 Windows 應用程式,不確定,如果您需要更多詳細資訊,則必須對此進行一些研究。這是一個小例子:
#include "Windows.h";
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main() {
// 2 seconds delay to have time to switch windows
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
HWND hWnd = GetForegroundWindow();
int lgth = GetWindowTextLength(hWnd) 1;
wchar_t* title = new wchar_t[lgth];
GetWindowTextW(hWnd, title, lgth);
DWORD id;
GetWindowThreadProcessId(hWnd, &id);
wchar_t* path = new wchar_t[MAX_PATH];
DWORD size = MAX_PATH;
HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, id);
QueryFullProcessImageNameW(hProc, 0, path, &size);
CloseHandle(hProc);
wcout << "ID: " << id << " | Title: " << title << " | Path: " << path << endl << endl;
return 1;
}
輸出示例: ID: 12580 | Title: Task Manage | Path: C:\Windows\System32\Taskmgr.exe
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314734.html
