Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Как получить доступ к панели задач   Найти похожие ветки 

 
Гном1   (2004-07-06 21:54) [0]

Здравствуйте, уважаемые мастера!

Я недавно начал разбираться с API- функциями…И мне непонятно…

Чтобы получить доступ к панели задач мне нужно воспользоваться функцией:
FindWindow("Shell_TrayWnd", nil);

А как вообще получить список всех доступных  окон классов? То есть, как узнать, что  Shell_TrayWnd – окно класса панели задач. И вообще сколько подобных окон?

Заранее благодарен, Гном…school26@rikt.ru


 
Rouse_ ©   (2004-07-06 22:59) [1]

Рекурсивный проход... (по Child)


 
jack128 ©   (2004-07-06 23:39) [2]


> То есть, как узнать, что  Shell_TrayWnd – окно класса панели
> задач
в поставке дельфи есть утилитка WinSight32, вот с помощью этой утилитки и выясняешь названия классов..

> И вообще сколько подобных окон?
каких таких подобных?


 
Rouse_ ©   (2004-07-07 10:06) [3]

////////////////////////////////////////////////////////////////////////////////
//
//  Автор: Александр (Rouse_) Багель
//  © Fangorn Wizards Lab 1998 - 2002
//  16 октября 2002 18:21

//  Данный код приведен лишь для демонстрации
//  А простой вариант поиска Handle Ричедита выглядит так
//  var
//    Handle : HWND;
//  begin
//    Handle:= FindWindowEx(FindWindow(Название формы например "Form1",nil), 0, Название элемента например "Button1",  nil),  0, true);

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ComCtrls;

type
 TMainForm = class(TForm)
   TreeView1: TTreeView;
   procedure FormCreate(Sender: TObject);
   procedure Sys_Windows_Tree(Node: TTreeNode; Handle: HWND);
 end;

var
 MainForm: TMainForm;

implementation

{$R *.DFM}

////////////////////////////////////////////////////////////////////////////////
//
//  Стартовая функция, запускаем рекуссию используя хэндл рабочего стола
//

procedure TMainForm.FormCreate(Sender: TObject);
var
 StartHandle : THandle;
begin
 //Если требуется найти только данные по одному приложению
 //замени 2 строки в функциях их закоментированными аналогами
 StartHandle := GetDeskTopWindow;
 //StartHandle := 67324;//FindWindow(PChar(Caption), nil);  //На примере Винампа
 Sys_Windows_Tree(nil, StartHandle);
end;

////////////////////////////////////////////////////////////////////////////////
//
//  Рекурсивная функция, строит дерево всех открытых окон, кнопок, едитов и т.д.
//  В качестве входных данных получает узел дерева и Хэндл окна
//

procedure TMainForm.Sys_Windows_Tree(Node: TTreeNode; Handle: HWND);
const
 MAX = 128;
var
 TmpArray  : array[0..MAX - 1] of Char;
 Result    : String;
begin
 //Запускаем цикл пока не закончатся окна
 while Handle <> 0 do
 begin
   //Получаем имя класса окна
   GetClassName(Handle, @TmpArray, MAX);
   Result := String(TmpArray);
   //Получаем текст (Его Caption) окна
   GetWindowText(Handle, @TmpArray, MAX);
   Result := Result + "(" + String(TmpArray) +
     "): Handle = "+ IntToStr(Handle);
   //В следующей процедуре, в скобках, добавляем результат
   //в дерево, получаем хэндл дочернего окна и с результатами
   //выполнения этих двух функций выполняем процедуру Sys_Windows_Tree
   Sys_Windows_Tree(TreeView1.Items.AddChild(Node, Result),
     GetWindow(Handle, GW_CHILD));
   //Получаем хэндл следующего (не дочернего) окна
   Handle := GetNextWindow(Handle, GW_HWNDNEXT);
   //Handle := 0;
 end;
end;

end.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.03 c
1-1091470128
GanibalLector
2004-08-02 22:08
2004.08.15
Word с двумя документами


14-1091014194
peypivo
2004-07-28 15:29
2004.08.15
Для абонентов UMC и Киевстар


6-1085922572
Piter
2004-05-30 17:09
2004.08.15
NetMessageBufferSend


3-1090407050
Алексей
2004-07-21 14:50
2004.08.15
Вопрос по сортировке данных


3-1090280687
bigfoot
2004-07-20 03:44
2004.08.15
Вопрос по синтаксису запроса в TQUERY





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский