function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
type
ff=function(hWnd: HWND; Msg: UINT; wParam: WPARAM;
lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT; stdcall;
type
TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall;
var
hInst: HWND;
lRes: Cardinal;
MSG: Integer;
pDoc: IHTMLDocument2;
ObjectFromLresult: TObjectFromLresult;
h:hwnd;
hh:ff;begin hInst := LoadLibrary('Oleacc.dll');
@ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
if @ObjectFromLresult <> nil then begin
try
MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
h:=Loadlibrary('user32.dll');
@hh:=GetProcAddress(h,'SendMessageTimeoutA');
hh(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
if Result = S_OK then ///这里是S_OK了
begin (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);///????? end;
finally
FreeLibrary(h);
FreeLibrary(hInst);
end;
end;
end;procedure aaa;
var
ie:IWebbrowser2;
begin
GetIEFromHWND(h,ie);
得不到ie
end;
initialization
CoInitialize(nil);
aaa;
finalization
CoUninitialize();
type
ff=function(hWnd: HWND; Msg: UINT; wParam: WPARAM;
lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT; stdcall;
type
TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall;
var
hInst: HWND;
lRes: Cardinal;
MSG: Integer;
pDoc: IHTMLDocument2;
ObjectFromLresult: TObjectFromLresult;
h:hwnd;
hh:ff;begin hInst := LoadLibrary('Oleacc.dll');
@ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
if @ObjectFromLresult <> nil then begin
try
MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
h:=Loadlibrary('user32.dll');
@hh:=GetProcAddress(h,'SendMessageTimeoutA');
hh(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
if Result = S_OK then ///这里是S_OK了
begin (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);///????? end;
finally
FreeLibrary(h);
FreeLibrary(hInst);
end;
end;
end;procedure aaa;
var
ie:IWebbrowser2;
begin
GetIEFromHWND(h,ie);
得不到ie
end;
initialization
CoInitialize(nil);
aaa;
finalization
CoUninitialize();
解决方案 »
- 查询与更新数据
- adoquery或ADOstoredproc的问题
- 限制使用期限的代码。。
- (十万火急)如何在Windows客户端程序和Unix服务器程序之间通讯
- 请问各位大侠,如何在DELPHI 6中用函数实现WIN2000 的重新启动????,在线急等!!1
- 如何从一个一定记录格式的字符串中读出格式?
- ··寻求《企业人事管理系统》实例的完整开发过程
- jpyc (九品御厨-为delphi学ASP.NE)新版主,解决问题先!
- 请教ShellListView的问题,还望大家多多指教!
- 奇怪!难道没一个中国的程序员知道这个问题的答案?!我可是问了n次呀!
- delphi调用CXF写的WebService出现的问题 希望各位高人解释
- 哪个大侠给个DELPHI 实现的简单文件上传 及下载的源码
不然会有很多未知错误的
var
ie:IWebbrowser2;
begin
GetIEFromHWND(h,ie);
得不到ie
end;ie:IWebbrowser2; 改为全局变量