Versuch es mal über die Winapi, ist zwar nicht besonders dynamisch, aber wenn es nur um diese eine Seite geht, sollte das ja egal sein.
Ich habe vor längerem mal ein ähnliches Problem gehabt, nur musste ich die Felder einer DatenbankAnwendung ausfüllen und nicht im Iexplorer.
Ich stelle mir das so vor:
Shellexecute( iexplore: DeineURL)
- GetHandle (iexplorer)
- sendmessage(Tabulator,HandleIexplorer) bis du das Feld findest
-sendmessage(Pfad,HandleIexplorer) //Pfad eingeben
-sendmessage(Enter,Handleiexplorer) //Enter schicken
Das ist der Code zum meiner WinApi-Applikation, du findest noch mehr info zur Winapi in der MSSDKoder im Forum.
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: 45:
| function GetFocusEx(): HWND; var FgWnd: HWND; FgTid: DWORD; Tid: DWORD; begin Result := 0; FgWnd := GetForegroundWindow(); FgTid := GetWindowThreadProcessId(FgWnd, nil); Tid := GetCurrentThreadId(); if (FgTid = Tid) then Result := GetFocus() else if AttachThreadInput(Tid, FgTid, True) then begin Result := GetFocus(); AttachThreadInput(Tid, FgTid, False); end; end;
function send1key(Thread:HWND;Key1:Byte):boolean; begin SetForeGroundWindow(Thread); keybd_event(Key1,MapVirtualKey(Key1,0),0,0); keybd_event(Key1,MapVirtualKey(Key1,0),KEYEVENTF_KEYUP,0); end;
function SendStr2Handle(Thread:HWND;Text:String):boolean; begin SendMessage(Thread,WM_SETTEXT,0,lParam(PChar(Text))); result:=true; end;
function send2keys(Thread:HWND;Key1:Byte;Key2:Byte):boolean; var vk1,vk2:UINT; begin SetForeGroundWindow(Thread); vk1:=MapVirtualKey(Key1,0); vk2:=MapvirtualKey(Key2,0); keybd_event(Key1,vk1,0,0); keybd_event(Key2,vk2,0,0); keybd_event(Key1,vk1,KEYEVENTF_KEYUP,0); keybd_event(Key2,vk2,KEYEVENTF_KEYUP,0); result:=true; end; |
Mit GetfocusEx bekommst du den Handle des Aktiven Fensters, es gibt auch einen anderen weg an den Handle zu kommen, über den Namen des Prozesses, aber das habe ich vergessen, schau mal im Forum nach.
Oder noch besser: Shellexecute liefert den Handle, wenn ich mich recht erinnere.
Good Luck
subTiTan