这段代码直接写在.dpr文件里为何不能执行? ( 积分: 50 )

  • 主题发起人 主题发起人 asklux
  • 开始时间 开始时间
A

asklux

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
function GetIEFromHWND(hWnd:HWND;var IE:IWebbrowser2):HRESULT;
type  
TObjectFromLResult=function(LRESULT:lResult;const IID:TIID;WPARAM:wParam;out pObject):HRESULT;stdcall;
var  
hInst:THandle;
lRes:Cardinal;
MSG:Integer;
pDoc:IHTMLDocument2;
ObjectFromLresult:TObjectFromLresult;
begin
  Result:=S_OK;
  if(hWnd<=0)then
    exit;
  hInst:=LoadLibrary('Oleacc.dll');
  if(hInst>0)then
  try
    @ObjectFromLresult:=GetProcAddress(hInst,'ObjectFromLresult');
    MSG:=RegisterWindowMessage('WM_HTML_GETOBJECT');
    SendMessageTimeOut(hWnd,MSG,0,0,SMTO_ABORTIFHUNG,1000,lRes);
    Result:=ObjectFromLresult(lRes,IID_IHTMLDocument2,0,pDoc);
    if Result=S_OK then
    begin
      (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp,IWebbrowser2,IE);
    end;
  finally
    FreeLibrary(hInst);
  end;
end;
这段代码我在包含Form的正常窗口中可以正确执行"IE"返回正常,但当我删除窗体直接在.dpr里写入这些代码时"IE"值总为nil,谁能帮我解决一下?
 
因为 hWnd:HWND 需要窗口句柄。
 
你在DPR单元前面加上对Forms的引用试试
 
可能application.handle还未创建
 
后退
顶部