void CMFCApplication3Dlg::TestFunktion() { while(true){ Sleep(1000); EnumWindowStations(EnumWindowStationProc, NULL); } } BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { TITLEBARINFO ti; ti.cbSize = sizeof(ti); GetTitleBarInfo(hwnd, &ti); if(ti.rgstate[0] & STATE_SYSTEM_INVISIBLE) return TRUE; // Tool windows should not be displayed either, these do not appear in the // task bar. if(GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOOLWINDOW) return TRUE; wchar_t name[100]; GetWindowModuleFileNameW(hwnd, name, 100); if(wcslen(name)<2) { return TRUE; } if(counter <= 500) { for(int i = 0; i < 100; ++i) { names[counter][i] = name[i]; } } ++counter; return TRUE; } BOOL CALLBACK EnumDesktopProc(LPTSTR lpszDesktop, LPARAM lParam) { ... return true; } BOOL CALLBACK EnumWindowStationProc( LPTSTR lpszWindowStation,LPARAM lParam) { ... return true; } |
DWORD processID[] = {NULL}; GetWindowThreadProcessId(hwnd, processID); HANDLE ph = OpenProcess(PROCESS_QUERY_INFORMATION, 0, *processID); HMODULE module = NULL; DWORD needed = NULL; wchar_t szProcessName[260] = L"<UNKNOWN>"; EnumProcessModulesEx(ph, &module, sizeof(DWORD), &needed, false); { K32GetProcessImageFileNameW(ph,szProcessName , 260); } DWORD lpdwHandle[] = {NULL}; GetFileVersionInfoSizeExW(FILE_VER_GET_NEUTRAL,szProcessName, lpdwHandle); LPVOID data = new LPVOID(); GetFileVersionInfoExW(FILE_VER_GET_NEUTRAL,szProcessName,0,*lpdwHandle,data); if( VerQueryValue( data,L"\\", (LPVOID *) &data, (PUINT)&lpdwHandle ) ) |