![]() |
URL an IE senden der mittels shellexecute erzeugt wurde
Moin,
ich benutze Delphi um eine IE-Anwendung zu starten. Leider kann die IE-Anwendung schon laufen und ich muß bestehende IE-Instanzen mit einer Logout-URL versorgen bevor ich die Anwendung starte. Die abgewandelten sourcen aus dsdt ergeben eine Exception in der Zeile if (Pos ... Geht das wie hier beschrieben oder ist ein api-call mit sendmessage an das ie-Handle sinnvoll - falls ja wie sieht dieser aufruf aus ? danke für die mühen
Delphi-Quellcode:
// ermittle ob eine ziel_url geoeffnet ist
procedure URL(const ziel_url: string); function EnumWindowsProc (Wnd: HWND; const liste: TStringList): BOOL; stdcall; var theClassname: array [0..128] of Char; //caption: Array [0..128] of Char; IE: IWebbrowser2; WndChild: HWND; a, b, c, d : OleVariant; begin Result := True; Windows.GetClassname( Wnd, theClassname, Sizeof( theclassname )); if theClassname='IEFrame' then begin WndChild := FindWindowEX(Wnd, 0, 'Shell DocObject View', nil); if WndChild <> 0 then begin WndChild := FindWindowEX(WndChild, 0, 'Internet Explorer_Server', nil); if WndChild <> 0 then begin if GetIEFromHWND(WndChild, IE)=S_OK then begin if IE<>nil then begin if (Pos(ziel_url,IE.LocationURL)>0) then begin; IE.Navigate(HOST + LOGOUT + '?logout=yes',a,b,c,d); end; end; end; end; end; end; end; begin EnumWindows(@EnumWindowsProc, integer(liste)); end; |
Re: URL an IE senden der mittels shellexecute erzeugt wurde
hmm so geht's schon fast,
das ergebnis findet sich bei gründlicher suche in delphi + c++ foren :) der fenstertitel ist die ie-instanz, die ich mit einer neuen url versorgen moechte dank an thomas stutz findcontrolbynumber funzt merkwuerdigerweise nicht daher der umweg ueber findwindowex der code schreibt die url in die url-leiste aber die return-tasten-simulation
Delphi-Quellcode:
mag nicht ... kann mir jemand sagen warum oder den goldenen link senden :-D SendMessage(hadr, WM_KEYDOWN, VK_RETURN, 0); SendMessage(hadr, WM_KEYUP, VK_RETURN, 0);
Delphi-Quellcode:
function sende_url(const Fenster_Titel:string; const logout_url : string): boolean;
var Whandle,child,ctl, hadr : HWND; begin sende_url := false; Whandle:=FindWindowbyTitle(Fenster_Titel); if Whandle=0 then exit else begin child := FindWindowEx(Whandle,0,'WorkerW',0); if child = 0 then exit else begin ctl := FindWindowEx(child,0,'ReBarWindow32',0); if ctl = 0 then exit else begin hadr := FindWindowEx(ctl,0,'ComboBoxEx32',0); if hadr = 0 then exit else begin SendMessage(hadr, WM_SETTEXT, 0, Integer(PChar(logout_url))); SendMessage(hadr, WM_KEYDOWN, VK_RETURN, 0); SendMessage(hadr, WM_KEYUP, VK_RETURN, 0); sende_url := true; exit; end; end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz