请问delphi7怎么才能调用迅雷5去下载相关资源?
试了网上.NET C#的代码他老会出现"确认窗口",
希望能用代码实现跳过该步骤.

解决方案 »

  1.   

    对于迅雷5来说,跳过"确认窗口"是不可能的。(当然,通过汇编,直接修改JMP汇编指令等例外)迅雷5从设计上就是要用户确认的。本意是担心被不法的程序用于下木马,病毒。
      

  2.   

    模拟点击??
    你用mouse event发送确定消息,获得按钮的屏幕坐标之后就行
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Button2: TButton;
        Button4: TButton;
        Edit2: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses ShellAPI;
    {$R *.DFM}procedure SendShift(H: HWnd; Down: Boolean);
    var
       vKey, ScanCode: Word;
       lParam: longint;
    begin
        vKey:= $10;
        ScanCode:= MapVirtualKey(vKey, 0);
        lParam:= longint(ScanCode) shl 16 or 1;
        if not(Down) then
           lParam:= lParam or $C0000000;
        SendMessage(H,WM_KEYDOWN, vKey, lParam);
    end;procedure SendCtrl(H: HWnd; Down: Boolean);
    var
       vKey, ScanCode: Word; //wParam
       lParam: longint;
    begin
        vKey:= $11;
        ScanCode:= MapVirtualKey(vKey, 0);{虚拟键转换为扫描码}
        lParam:= longint(ScanCode) shl 16 or 1;
        if not(Down) then
           lParam:= lParam or $C0000000;
        SendMessage(H,WM_KEYDOWN, vKey, lParam);
    end;procedure SendKey(H: Hwnd; Key: char);
    var
      vKey, ScanCode, wParam: Word;
      lParam, ConvKey: longint;
      Shift, Ctrl: boolean;
    begin
        ConvKey:= OemKeyScan(ord(Key));
        Shift:= (ConvKey and $00020000) <> 0;
        Ctrl:= (ConvKey and $00040000) <> 0;
        ScanCode:= ConvKey and $000000FF or $FF00;
        vKey:= ord(Key);
        wParam:= vKey;
        lParam:= longint(ScanCode) shl 16 or 1;
        if Shift then SendShift(H, true);
        if Ctrl then SendCtrl(H, true);
        SendMessage(H, WM_KEYDOWN, vKey, lParam);
        SendMessage(H, WM_CHAR, vKey, lParam);
        lParam:= lParam or $C0000000;
        SendMessage(H, WM_KEYUP, vKey, lParam);
        if Shift then SendShift(H, false);
        if Ctrl then SendCtrl(H, false);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      pt: TPoint;
    begin
        pt:= edit1.ClientToScreen( Point( 4,4 ));
        SetCursorPos( pt.x, pt.y );
        mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
        mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );  
        mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
        mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        SendMessage(edit1.Handle,WM_LBUTTONDOWN ,0,0);
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
        SendKey(edit1.handle, 'T');
        SendKey(edit1.handle, 'e');
        SendKey(edit1.handle, 's');
        SendKey(edit1.handle, 't');
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
       SendKey(edit2.Handle, Key);
    end;end.
    刚好有一个,不过按键不同,你自己要改的话看看改成回车行不行
    然后就是找屏幕坐标,这个我也没法帮你,用spy++什么的看看也许行,我不怎么用迅雷的
      

  4.   

    谢谢你的帮助
    其实在D下我也不知道怎么调用迅雷....我只找的.NET调用的代码.
    恩.我在等等看有人出手没,没的话我再结贴.
    这个问题,如果是分数太少了,我可以加.希望会的帮帮.