以下代码在Form Application没有任何问题,但是作为服务的DLL代码内运行就出现错误,而且GetLastError返回0initialization
  CoInitialize(nil);
finalization
  CoUninitialize;
end.这个代码也添加了,还是不行,只能让各位大侠看看了function IEIsOpened: Boolean;
var 
  ShellWindow: IShellWindows;
  nCount: integer;
  spDisp: IDispatch; 
  i: integer; 
  vi: OleVariant;
  IE1: IWebBrowser2; 
begin
  ShellWindow := CoShellWindows.Create;
  nCount := ShellWindow.Count;
  for i := 0 to nCount - 1 do
  begin
    vi := i;
    try
      spDisp := ShellWindow.Item(vi);
    except
    end;
    if (spDisp <> nil) then
    begin
      try
        spDisp.QueryInterface(iWebBrowser2, IE1);
      except
      end;
      if (IE1 <> nil) then
      begin
        Result := IE1.LocationURL =‘http://www.baidu.com/;
        Exit;
      end;
    end;
  end;  Result := false;end;

解决方案 »

  1.   

    你不要抱着希望了````高人都不用delphi的```
      

  2.   

    这什么啊,全的自己var的.那返回都是FALSE咯 没看明白
    要么加  shareMem单元试试...
      

  3.   

    先不要把異常吃掉,在try except end語句塊捕捉看看是什么錯誤,或者是其他錯誤沒有捉到
      

  4.   

    高手都不用Delphi,用什么了VC?C#?
      

  5.   

    服务里运行webbrowser/shellwindows,它的运行账号是否允许?
      

  6.   

    system的权限好像是相当大的了
    那会不会是服务运行的“交互桌面”的问题:是与普通的用户登录后的交互桌面有一些不同的
      

  7.   

    那里最好是加上这个判断一下,随便调用初始化只会浪费资源。
    initialization
      if IsLibrary then
        CoInitialize(nil);finalization
      if IsLibrary then
        CoUninitialize();==========================
    Result := IE1.LocationURL =‘http://www.baidu.com/;
    ????这啥能编译通过?========================
    另外,先做调试知道哪里错误再说吧,
    写程序报错谁没碰过,人家写驱动还蓝屏呢,自己不调一下就想让人解决,别人有啥兴趣帮你调。