Шаг 1 - Окна Windows и функции доступа
к ним.
Мы с Вами в этом шаге каснемся работы с окнами в Windows. У каждого
окна есть уникальный идентификатор HWND. Этот идентификатор указывает
на окно. Окна в Windows можно представить в виде дерева с корнем
в DeskTop. Это легко увидеть запустив SPY.
Итак, как и у любого дерева, у дерева окон есть корень. Получить
указатель на него можно функцией GetDesktopWindow(), которая вернет
HWND корня в виде рабочего стола. Ага начало есть. Дальше как
у того богатыря на картинке. Налево, направо или куда. От текущего
HWND можно получить HWND либо ребенка, вот так GetWindow(hwnd,
GW_CHILD), либо соседа вот так GetWindow(hwnd, GW_HWNDNEXT). И
так далее. Дерево господа и алгоритм его обхода. Имея HWND можно
получить заголовок окна GetWindowText. Ну пора. Вот код получения
имен окон первого уровня.
// GetWindow.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
void main()
{
HWND hwnd;
char p[100];
hwnd = GetDesktopWindow();
hwnd = GetWindow(hwnd, GW_CHILD);
while (hwnd !=0)
{
hwnd = GetWindow(hwnd, GW_HWNDNEXT);
GetWindowText(hwnd,p,100);
if (strlen(p)>0) cout << p << endl;
}
}
А вот результат работы у меня
GetWindow // это программа наша !!!!
Source File Properties
GetWindow - Microsoft Visual C++ - [GetWindow.cpp] // Это я делаю
программу :-))))
Step1.htm - -ыюъэюЄ // Это редактируеться страница которую вы
читаете
C:\WINDOWS\-рсюўшщ ёЄюы\Step1\Step1.htm - Microsoft Internet Explorer
// Смотрю на то что пишу
Step1 // каталог с нашим шагом
OLEChannelWnd
OLEChannelWnd
OLEChannelWnd
DDE Server Window
OleMainThreadWndName
-юъЁрЄ 97
OLEChannelWnd
-ряюьшэрэшх
+эфшърЄюЁ срЄрЁхщ
WIN95 RPC Wmsg Window
DDE Server Window
OleMainThreadWndName
RPCSSWindow
OleMainThreadWndName
MS_WebcheckMonitor
Program Manager
Press any key to continue
Загрузить
проект | Следующий
Шаг | Оглавление
By Artem.
|