delphi7 调用 迅雷5 请问delphi7怎么才能调用迅雷5去下载相关资源?试了网上.NET C#的代码他老会出现"确认窗口",希望能用代码实现跳过该步骤. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对于迅雷5来说,跳过"确认窗口"是不可能的。(当然,通过汇编,直接修改JMP汇编指令等例外)迅雷5从设计上就是要用户确认的。本意是担心被不法的程序用于下木马,病毒。 模拟点击??你用mouse event发送确定消息,获得按钮的屏幕坐标之后就行 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;implementationuses 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++什么的看看也许行,我不怎么用迅雷的 谢谢你的帮助其实在D下我也不知道怎么调用迅雷....我只找的.NET调用的代码.恩.我在等等看有人出手没,没的话我再结贴.这个问题,如果是分数太少了,我可以加.希望会的帮帮. 变量赋值问题 哪有播放常用格式的声音文件的控件? (wav,mp3等) stringlist中去掉相同字符的项 怎样打开文件属性窗口. 有人会用装EhLib吗? 高手请进,自定义组件问题 用TQuery提交数据时发现一个奇怪的问题; '`d* p:0~'不能被提交 可以把一个大系统里的子系统做成DLL吗? 如何调整TEdit内容的对齐方式? 如何将数据表的几个指定字段的数据写进文本文件? 关于动态加载delphi package问题 如何在字符串提取数字-- in Delphi
你用mouse event发送确定消息,获得按钮的屏幕坐标之后就行
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++什么的看看也许行,我不怎么用迅雷的
其实在D下我也不知道怎么调用迅雷....我只找的.NET调用的代码.
恩.我在等等看有人出手没,没的话我再结贴.
这个问题,如果是分数太少了,我可以加.希望会的帮帮.