Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Поиск 3-х одинаковых объектов в чужом окне   Найти похожие ветки 

 
Sesh   (2006-08-30 18:16) [0]

Подскажите пож-ста, нашел чужое окно, в нем объект, в том обекте есть 3 одинаковых TPanel, как мне перейти ко 2-й панели, всегда находит только 1-ю
 s:=FindWindow("TForm1",nil);
 x:=FindWindowEx(s,0,"TPageControl" ,nil);
 a:=FindWindowEx(x,0,"TPanel" ,nil);
 f:=FindWindowEx(x,0,"TPanel" ,nil);


 
begin...end ©   (2006-08-30 18:19) [1]

FindWindowEx(x, a, "TPanel", nil)


 
Sesh   (2006-08-31 09:44) [2]

написал так, помогло, теперь на ней ищу объект TPageControl и почему-то не находит хотя знаю точно что есть, и именно такой объект (проверил window scanner"om), а как мне можно получить список всех объектов, находящихся на TPanel?


 
Handle ©   (2006-08-31 11:53) [3]


> а как мне можно получить список всех объектов, находящихся
> на TPanel?


Можно вот таким вот извращённым способом придуманным мной в прошлом году, только сильно не бейте.

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 ComCtrls, Buttons, StdCtrls, ShellAPI, ExtCtrls;
const
WH_Mouse_LL = 14;
type
 TForm1 = class(TForm)
   ListView1: TListView;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure ListView1CustomDrawItem(Sender: TCustomListView;
     Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
 private

 public
 end;

var
 Form1:         TForm1;
 Mouse_SysHook:      HHOOK;
 Wnd:                hWnd;
 ChWnd:              hWnd;
 WndText:            string;
 WndClassName:       array [0..MAX_PATH] of CHar;

implementation

{$R *.dfm}

function Mouse_SysMsgProc(code: integer;
wParam: longint; lParam : longint):longint; stdcall;
var
 HWndParents:        Longint;
begin
if (Code=HC_ACTION) then
if (wParam = WM_MOUSEMOVE) then
begin
 // Parents -------------------------------------------------------------------
 ChWnd:= WindowFromPoint(Mouse.CursorPos);
 if ChWnd <> Wnd then
 begin
   Wnd:= WindowFromPoint(Mouse.CursorPos);
   Form1.ListView1.Clear;
   GetClassName(Wnd, WndClassName, SizeOf(WndClassName));
   SetLength(WndText, SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0)+1);
   SendMessage(Wnd, WM_GETTEXT, length(WndText), Integer(PChar(WndText)));
 with Form1.ListView1.Items.Add do
 begin
   Data := Pointer(clGray);
   Caption:= "000";
   SubItems.Add(IntToStr(Wnd));
   SubItems.Add(WndClassName);
   SubItems.Add(WndText);
 end;
 while Wnd <> 0 do
 begin
   HWndParents:= GetWindowLong(Wnd,GWL_HWNDPARENT);
   Wnd:= GetParent(Wnd);
   GetClassName(HWndParents, WndClassName, SizeOf(WndClassName));
   SetLength(WndText, SendMessage(HWndParents, WM_GETTEXTLENGTH, 0, 0)+1);
   SendMessage(HWndParents, WM_GETTEXT, length(WndText), Integer(PChar(WndText)));
 if HWndParents <> 0 then
 with Form1.ListView1.Items.Add do
 begin
   Caption:= "00" + IntToStr(Form1.ListView1.Items.Count - 1);
   SubItems.Add(IntToStr(HWndParents));
   SubItems.Add(WndClassName);
   SubItems.Add(WndText);
 end;
 end;
 end;
 end;
Wnd:= WindowFromPoint(Mouse.CursorPos);
Result := CallNextHookEx(Mouse_SysHook, Code, wParam, LParam);
end; // End of function Mouse_SysMsgProc

procedure TForm1.FormCreate(Sender: TObject);
begin
Mouse_SysHook := SetWindowsHookEx(WH_Mouse_LL, @Mouse_SysMsgProc, HInstance, 0);
end;  // End of procedure TfrmWinInfo.FormCreate

procedure TForm1.FormDestroy(Sender: TObject);
begin
if Mouse_SysHook <> 0 then
   UnhookWindowsHookEx(Mouse_SysHook);
end; // End of procedure TfrmWinInfo.FormDestroy

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
Sender.Canvas.Font.Color := TColor(Item.Data);
end; // End of procedure TfrmWinInfo.ParentsListViewCustomDrawItem


 
Handle ©   (2006-08-31 11:56) [4]

ListView1.ViewStyle:= vsReport;



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

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
2-1158664456
Василий Блаженный
2006-09-19 15:14
2006.10.08
TIdPOP3Client


15-1158435187
Real
2006-09-16 23:33
2006.10.08
Какой каталогизатор посоветуете?


3-1154572849
VitalikS
2006-08-03 06:40
2006.10.08
Трансформация таблицы


2-1158942531
J_SABER
2006-09-22 20:28
2006.10.08
Папки


2-1158730599
svt
2006-09-20 09:36
2006.10.08
Уважаемые мастера, подскажите как правильно выполнить