本帖最后由 fym_wlll 于 2009-06-28 13:18:31 编辑

解决方案 »

  1.   

    COM+ 技术好像就可以吧!
      

  2.   

    在注册表登记自己程序的“协议”,如:myapp://就是执行一个prj1.execonst
      FPath='\htapp';
      sset='设置';
      sdo='“网页自动运行”';
    Var
      Reg : TRegistry;
      Reg := TRegistry.Create;
      try
        Reg.RootKey := HKEY_CLASSES_ROOT ;      try
            If Reg.OpenKey(FPath, False) then
              reg.DeleteKey(FPath);
            Reg.OpenKey(FPath,true);
            reg.WriteString('','htapp 自定义协议');
            reg.WriteString('URL Protocol','"'+htdebug.getcurfile('.exe')+'"' );
            Reg.OpenKey(FPath+'\DefaultIcon',true);
            reg.WriteString('','"'+htdebug.getcurfile('.exe')+'",0' );
            reg.OpenKey(FPath+'\shell\open\command',true);
            reg.WriteString('','"'+htdebug.getcurfile('.exe')+'" "%1"' );
            unitdialog.OKbox(sset+sdo+'成功!','',sender=nil);
          except on e:exception do
            unitdialog.Badbox(sset+sdo+'失败!'+ln+
              '因为:'+e.Message,'',sender=nil);
          end;  finally
        Reg.Free;
      end;
      

  3.   

    谢谢楼上两位.网上有一个文章《通过网页链接打开应用程序客户端的两种实现方式》网址是:
    http://blog.csdn.net/insidekernel/archive/2008/01/10/2033175.aspx
    估计就是楼上讲述的方法。又比如:
    [通过网页链接能够打开我们的IM软件]
    [点击链接mailto:[email protected],可以打开outlook程序]另外还有文章:
    http://www.cnblogs.com/CharlieSong/archive/2009/04/04/1429464.html
    也讲到了:在网页中点一个链接,启动我们自己的一个客户端程序,并接受链接传递过来的参数,
    但上述都是启动一个应用程序,如何启动一个窗体?
      

  4.   

    gui程序就是由窗体组成的。你是说启动程序并激活对应的功能窗体?
    可以由myapp://xxxx?yyyy里的yyyy告诉程序激活哪个的功能窗体
    程序可以从命令行参数得到yyyy
      

  5.   

    用COM可以实现,程序监听该网页的单击事件
      

  6.   

    如果webbrowser是嵌入在自己的DELPHI程序里的话,简单的办法就是在网页的链接上加上自定义的各种参数
    比如扫描木马的链接定义为:http://SAOMIAOMUMA
    Delphi在Webbrowser的OnBeforeNavigate2事件中可以根据URL来判断执行哪些操作
    比如:procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
    begin
      if Pos('SAOMIAOMUMA', Url) > 0 then
      begin
        // 写你要执行的代码
        Cancel := True; // 停止转向http://SAOMIAOMUMA
      end;
    end;
      

  7.   

    可以注册协议,也可以写一个ActiveX
      

  8.   

    QQ,迅雷,360安全卫士
    这些软件都在内部嵌入的webbrowser控件:
    例1:
    QQ的http://wallet.tenpay.com/wallet/frame.html例2:
    360安全卫士的帮助中心
      

  9.   

    本问题,说白了就是在应用程序中嵌入WebBrowser控件,在WebBrowser控件里显示网页代码,http://www.microsoft.com/mind/0798/webbrowfigs.htm#fig1
      

  10.   

    activex虽然号称已经过时了,但是写起来比com+要简单,你可以把自己的整个form都放进去,我以前就做过activex的例子,唯一美中不足的就是需要客户端下载自己的activex插件,而且有些浏览器禁用activex或者不能正常显示还要自己分析原因,最后不得不做了一个调整浏览器安全级别的程序发下去
      

  11.   

    我有完美的解决方案,不用协议,不用com,不用activex,直接代码实现,就是不知道楼主给多少分?