系统相关
首页 > 系统相关> > 获取当前焦点窗口进程名

获取当前焦点窗口进程名

作者:互联网

 1 void GetForegroundWindowProc(CString& szProcPath)
 2 {
 3     HWND hWnd = ::GetForegroundWindow();
 4     WCHAR winClass[128];
 5     WCHAR winTitle[128];
 6     //通过句柄获取窗口类名
 7     ::GetClassName(hWnd, winClass, 128);
 8 
 9     //通过句柄获取窗口标题
10     ::GetWindowText(hWnd, winTitle, 128);
11 
12     printf("!!!%s, winClass = %S!\n", __FUNCTION__, winClass);
13     printf("!!!%s, winTitle = %S!\n", __FUNCTION__, winTitle);
14 
15     DWORD dwThreadId;
16     DWORD dwProcId;
17     dwThreadId = GetWindowThreadProcessId(hWnd, &dwProcId);
18     printf("dwProcId = %ul\n", dwProcId);
19     printf("dwThreadId = %ul\n", dwThreadId);
20 
21     HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwProcId);
22     WCHAR proname[MAX_PATH] = { 0 };
23 
24     DWORD dwRetLength = GetModuleFileNameEx(hProcess, NULL, proname, MAX_PATH);
25     if (dwRetLength)
26     {
27         szProcPath = proname;
28     }
29 }
 1 bool ParseFileName(_In_ const CString& filePath, _Out_ CString& fileName)
 2 {
 3     WCHAR fPath[MAX_PATH] = { 0 };
 4     PWCHAR pfTail;
 5     wcscpy_s(fPath, filePath.GetString());
 6     pfTail = fPath + filePath.GetLength();
 7     while (pfTail != fPath && *pfTail != L'\\')
 8     {
 9         pfTail--;
10     }
11     if (pfTail == fPath)
12         return false;
13     fileName = ++pfTail;
14     return true;
15 }

 

标签:__,窗口,dwProcId,焦点,pfTail,printf,fPath,获取,hWnd
来源: https://www.cnblogs.com/endenvor/p/10882709.html