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 }