Delphi funktionen direkt im BCB nutzen?
-
Wie kann man im BCB delphi funktionen direkt nutzen? Sowas wie inline assembler...
mir ist bekannt das man .pas dateien einbinden kann und dann über den generierten header drauf zugreifen kann aber wie geht es im C++ quelltext direkt? möchte gerne folgenden code im BCB nutzen:uses ActiveX, Shdocvw_tlb, MSHTML_TLB; type TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; wParam: wParam; out pObject): HRESULT; stdcall; function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT; var hInst: HWND; lRes: Cardinal; Msg: Integer; pDoc: IHTMLDocument2; ObjectFromLresult: TObjectFromLresult; begin hInst := LoadLibrary('Oleacc.dll'); @ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult'); if @ObjectFromLresult <> nil then begin try Msg := RegisterWindowMessage('WM_HTML_GETOBJECT'); SendMessageTimeOut(WHandle, Msg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes); Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc); if Result = S_OK then (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE); finally FreeLibrary(hInst); end; end; end; function GetActiveIEURL: string; var Document: IHtmlDocument2; IE: IWebBrowser2; Wnd: HWND; WndChild: HWND; begin Wnd := GetForeGroundWindow; 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 //Get Iwebbrowser2 from Handle GetIEFromHWnd(WndChild, IE); if IE <> nil then begin Result := IE.LocationURL; // Document := IE.Document as IHtmlDocument2; end; end; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Caption := GetActiveIEURL; end;da ich scheitere diesen nach C++ zu konvertieren

-
Oder wie komme ich an das Handle von der internet explorer leiste? Mit FindWindow müsste ich ja einen fenster titel angeben und da der beim IE ja unterschiedlich ist (xyz - Microsoft Internet Explorer) geht das ja nicht. Also wie bekomme ich das handle der IE adress leiste von dem derzeit aktiven IE?

-
Mit
alle Fenster abklappern und prüfen, ob "Internet Explorer" in den gefundenen Fensternamen vorkommt