Форум: "Потрепаться";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
ВнизКак сделать список компонентов чужой программы Найти похожие ветки
← →
De$criptR (2004-06-04 13:25) [0]как взять количество компонентов и взять имя каждого чужой программы по его хендлу или еще как. и как скрыть чтонибудь.
← →
Алхимик © (2004-06-04 15:02) [1]Есть программа Far. Какие компоненты хотим? Правую или левую панель?
← →
Mim1 © (2004-06-04 16:41) [2]Я поптаюсть перевести вопрос чтобы было понятно всем. "ХОЧУ!"
← →
Nous Mellon © (2004-06-04 16:46) [3]
> и как скрыть чтонибудь.
LOL
← →
Agent13 © (2004-06-04 16:47) [4]
> и как скрыть чтонибудь.
Выключить монитор. Уверяю - скроется всё.
← →
Алхимик © (2004-06-04 16:52) [5]
> [4] Agent13 © (04.06.04 16:47)
Мой вариант - закрыть глаза. :)
← →
Rouse_ © (2004-06-04 17:06) [6]Мдя :)
////////////////////////////////////////////////////////////////////////////////
//
// Автор: Александр (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);
private
{ Private declarations }
public
{ Public declarations }
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.
← →
Игорь Шевченко © (2004-06-04 17:10) [7]Про EnumWindows+EnumChildWindows натурально, забываем
← →
Rouse_ © (2004-06-04 17:13) [8]> [7] Игорь Шевченко © (04.06.04 17:10)
Ну это я как вариант привел :)
← →
Игорь Шевченко © (2004-06-04 17:16) [9]Rouse_ © (04.06.04 17:13)
Совет. Не используй слово Result в качестве имени переменной в процедурах.
← →
Rouse_ © (2004-06-04 17:18) [10]> [9] Игорь Шевченко © (04.06.04 17:16)
Учту ...
← →
Anatoly Podgoretsky © (2004-06-04 18:38) [11]Смотреть мультики про Тома и Джерри
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c