C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Перечисление всех открытых окон в системе / Окна и интерфейс / Visual C++

Перечисление всех открытых окон в системе.

Данный пример показывает, как создать программу наподобие Spy++. Для этого нам понадобятся следующие API функции: BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam); - перечисляет все окна в системе: lpEnumFunc – адрес функции: BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam); lParam – число которое передается в функцию.
int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount); - получение заголовка окна: hWnd – хэндл окна; lpString – буфер, куда будет помещен заголовок; nMaxCount – максимальная длина буфера. int GetClassName(HWND hWnd, LPTSTR lpClassName, int nMaxCount ); - получение имени класса окна: hWnd - хэндл окна; lpClassName – строка куда будет помещено имя класса; nMaxCount - максимальная длина имени. DWORD GetWindowThreadProcessId(HWND hWnd, LPDWORD lpdwProcessId); - возвращает индефикатор потока, создавшего окно; hWnd – хэндл окна; lpdwProcessId – сюда возвращает индефикатор процесса, создавшего окно. Теперь запускай VC++, создавай проект Win32 Console Application и напиши следующее: #include <windows.h> #include <iostream> using namespace std; BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam); int main() { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY); cout<<"Code by Lazy_elf"<<endl; if(EnumWindows(&EnumWindowsProc,NULL)) { cout<<"EnumWindows - ok"<<endl; }else{cout<<"Error EnumWindows..."<<endl;} return 0; } BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam) { char szTextWin[255];DWORD dwPID = NULL; if(GetWindowText(hwnd,szTextWin,sizeof(szTextWin))) { CharToOem(szTextWin,szTextWin); cout<<szTextWin<<" --- CLASS: "; szTextWin[0] = '\0'; if(GetClassName(hwnd,szTextWin,sizeof(szTextWin))) { cout<<szTextWin<<" - TID: "<<GetWindowThreadProcessId(hwnd,&dwPID); cout<<" - PID:"<<dwPID<<endl; } } else { cout<<"no text"<<" --- CLASS: "; szTextWin[0] = '\0'; if(GetClassName(hwnd,szTextWin,sizeof(szTextWin))) { cout<<szTextWin<<" - TID: "<<GetWindowThreadProcessId(hwnd,&dwPID); cout<<" - PID:"<<dwPID<<endl; } } szTextWin[0] = '\0'; return TRUE; }