现在我使用WebBrowser1想实现自动在网页上自动点击链接。请问如果网页是一个文字链接或者图片连接,该怎么办? 是否还有办法自动点击链接?  千万别告诉我让我模拟鼠标去点击啊!
──────────────────────────────────────────
【 我的意思不知各位听明白了没有,举个例子说吧,在www.163.com的网页上,我已经实现了自动填入帐号密码,然后自动按“登陆”按钮,接着弹出来一个新页面,提示我要选取的服务,我想有什么办法能自动让网页选取“免费油箱”这一文字连接?同样的,此后的网页还有一个“进入油箱”(图片)  用WebBrowser1是否还可以实现?? 】
──────────────────────────────────────────

解决方案 »

  1.   

    A、用SendKeys函数向WebBrowser发送回车键
        在Delphi 5光盘上的Info\Extras\SendKeys目录下有一个SndKey32.pas文件,其中包含了两个函数SendKeys和AppActivate,我们可以用SendKeys函数来向WebBrowser发送回车键,我现在用的就是这个方法,使用很简单,在WebBrowser获得焦点的情况下(不要求WebBrowser所包含的文档获得焦点),用一条语句即可:   Sendkeys('~',true);// press RETURN key   SendKeys函数的详细参数说明等,均包含在SndKey32.pas文件中。  B、在OnMessage事件中将接受到的键盘消息传递给WebBrowser。   procedure TForm1.ApplicationEvents1Message(var Msg: TMsg; var Handled: Boolean); 
       {fixes the malfunction of some keys within webbrowser control}
       const
        StdKeys = [VK_TAB, VK_RETURN]; { standard keys }
        ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { extended keys }
        fExtended = $01000000; { extended key flag }
       begin
        Handled := False;
        with Msg do
        if ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) and
         ((wParam in StdKeys) or 
         {$IFDEF VER120}(GetKeyState(VK_CONTROL) < 0) or {$ENDIF}
         (wParam in ExtKeys) and 
         ((lParam and fExtended) = fExtended)) then
        try
         if IsChild(Handle, hWnd) then { handles all browser related messages }
         begin
          with {$IFDEF VER120}Application_{$ELSE}Application{$ENDIF} as
            IOleInPlaceActiveObject do
           Handled := TranslateAccelerator(Msg) = S_OK;
           if not Handled then
           begin
            Handled := True;
            TranslateMessage(Msg);
            DispatchMessage(Msg);
           end;
           end;
        except
        end;
       end; // MessageHandler