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 ) ) |