Как получить handle на editbox в Internet Explorer?

Previous  Top  Next

    
 

 

 

Code:

var

hndl: HWND;

main: HWND;

begin

main := FindWindow('IEFrame', nil);

 

if main <> 0 then

begin

   hndl := findwindowex(main, 0, 'Worker', nil);

 

   if hndl <> 0 then

   begin

     hndl := findwindowex(hndl, 0, 'ReBarWindow32', nil);

 

     if hndl <> 0 then

     begin

       hndl := findwindowex(hndl, 0, 'ComboBoxEx32', nil);

 

       if hndl <> 0 then

       begin

         hndl := findwindowex(hndl, 0, 'ComboBox', nil);

 

         if hndl <> 0 then

         begin

           hndl := findwindowex(hndl, 0, 'Edit', nil);

©Drkb::03511

 


 

Code:

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

   Label1: TLabel;

   Button1: TButton;

   procedure Button1Click(Sender: TObject);

private

   { Private declarations }

public

   { Public declarations }

   procedure FindIEEditHandle;

end;

 

var

Form1: TForm1;

EditHandle: THandle;

 

implementation

 

{$R *.DFM}

 

function EnumIEChildProc(AHandle: hWnd; AnObject: TObject): BOOL; stdcall;

var

tmpS: string;

theClassName: string;

theWinText: string;

begin

Result := True;

SetLength(theClassName, 256);

GetClassName(AHandle, PChar(theClassName), 255);

SetLength(theWinText, 256);

GetWindowText(AHandle, PChar(theWinText), 255);

tmpS := StrPas(PChar(theClassName));

if theWinText <> EmptyStr then

   tmpS := tmpS + '"' + StrPas(PChar(theWinText)) + '"'

else

   tmpS := tmpS + '""';

if Pos('Edit', tmpS) > 0 then

begin

   EditHandle := AHandle;

end;

end;

 

function IEWindowEnumProc(AHandle: hWnd; AnObject: TObject): BOOL; stdcall;

{callback for EnumWindows.}

var

theClassName: string;

theWinText: string;

tmpS: string;

begin

Result := True;

SetLength(theClassName, 256);

GetClassName(AHandle, PChar(theClassName), 255);

SetLength(theWinText, 256);

GetWindowText(AHandle, PChar(theWinText), 255);

tmpS := StrPas(PChar(theClassName));

if theWinText <> EmptyStr then

   tmpS := tmpS + '"' + StrPas(PChar(theWinText)) + '"'

else

   tmpS := tmpS + '""';

if Pos('IEFrame', tmpS) > 0 then

begin

   EnumChildWindows(AHandle, @EnumIEChildProc, longInt(0));

end;

end;

 

procedure TForm1.FindIEEditHandle;

begin

Screen.Cursor := crHourGlass;

try

   EnumWindows(@IEWindowEnumProc, LongInt(0));

finally

   Screen.Cursor := crDefault;

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

FindIEEditHandle;

if EditHandle > 0 then

   Label1.Caption := IntToStr(EditHandle)

else

   label1.Caption := 'Not Found';

end;

 

end.

©Drkb::03512

 

Взято с Delphi Knowledge Base: http://www.baltsoft.com/