1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
   | procedure TForm1.Button2Click(Sender: TObject);
var hiExplorer,ClientWork,Toolbar,ComboBox,ComboBoxChild,Edit:HWND;
    wnd: HWND ;
    i,Len:integer ;
    result:array of char ;
    s : string ;
begin
hIExplorer := FindWindow('IEFrame',nil);
//SetForegroundwindow(hIExplorer)  ;
//Handle de la fenêtre de travail
ClientWork:=FindWindowEx(hiExplorer,0,'WorkerA',nil);
if ClientWork=0 then //Compatibilité XP / 98
    ClientWork:=FindWindowEx(hiExplorer,0,'WorkerW',nil);
// Handle de la ToolBar (casert pas)
Toolbar:=FindWindowEx(ClientWork,0,'ReBarWindow32',nil);
// Handle du ComboBox
ComboBox:=FindWindowEx(Toolbar,0,'ComboBoxEx32', nil);
ComboBoxChild:=FindWindowEx(ComboBox,0,'ComboBox',nil);
// Cherche le Handle du Edit
Edit:=FindWindowEx(ComboBoxChild,0,'Edit',nil);
//envoie les messages pour récupérer la longueur de l'URL 
Len:=SendMessage(Edit,WM_GETTEXTLENGTH,0,0)+1;
// récupère l'URL (mais c'est juste pour le fun)
SetLength(Result,Len);
SendMessage(Edit,WM_GETTEXT,Len,Integer(@Result[1]));
// envoie le "End" puis les backspaces
wnd:=Edit ;
Sendmessage(wnd,WM_KEYDOWN, VK_END,0);
Sendmessage(wnd,WM_CHAR   , VK_END,0);
Sendmessage(wnd,WM_KEYUP  , VK_END,0);
for i:=0 to Len-1 do begin
    Sendmessage(wnd,WM_KEYDOWN, VK_BACK,0);
    Sendmessage(wnd,WM_CHAR   , VK_BACK,0);
    Sendmessage(wnd,WM_KEYUP  , VK_BACK,0);
    end ;
// envoie la nouvelle URL 
s:='MyUrl' ;
for i:=1 to Length(s) do begin
    Sendmessage(wnd,WM_KEYDOWN, ord(s[i]),0);
    Sendmessage(wnd,WM_CHAR   , ord(S[i]),0);
    Sendmessage(wnd,WM_KEYUP  , ord(S[i]),0);
    end ;
exit ;
end ; | 
Partager