不知怎么的,家里的網(wǎng)速明明是10M,迅雷全速下載的速度總是維持在500 KB/s左右,去年還是好好的,最重要的是還有一個月的天翼光速試用,現(xiàn)在沒有了。。。偶然之間,發(fā)現(xiàn)”高速通道加速“按鈕,有時候會變成”試用光速通道“,可提升到30M,不過只有2分鐘的試用時間。但貌似迅雷在這點上有bug,只要在試用結(jié)束后,徹底刪除獲得加速機會的文件,再重新下載,即可再次獲取光速試用。
接下來,就有疑問了,要怎樣的文件才可獲得光速試用的機會?回答是,我也不知道!不過一定不是隨機的,要不就不會有同一個文件可不斷重復的獲得光速試用的事了。
所以就有了下面有點腦殘的想法,如果是通過程序不斷重復新建下載,刪除下載任務,獲取光速試用呢?oh,dear, 這個可憐的文件。
//********************************************************************************************************************************************************************//
//********************************************************************************************************************************************************************//
本想通過程序獲取迅雷窗口中的各句柄,再用SendMessage或PostMessage直接發(fā)送“立即下載”按鈕等命令,這樣就很簡單了,不過后來用Spy++發(fā)現(xiàn)迅雷7以后的窗口都是”畫“出來的,只能獲取一個迅雷的大窗口,按鈕的句柄沒找到,所以這個行不通。
在網(wǎng)上搜了下,迅雷官網(wǎng)上有半公開的迅雷云加速SDK,通過加載dll,可以實現(xiàn),但這個對我來說需要大量的投入時間。
所以我就盲人摸象,設(shè)定位置,模擬鼠標運動了。
具體思路:
1、單擊“新建”
2、下載地址復制到剪貼板
3、單擊“立即下載”
4、點擊“暫停”
5、點擊“刪除”
6、單擊“光速試用”
7、125后程序徹底刪除該文件,再重新回到步驟1。
//********************************************************************************************************************************************************************//
//********************************************************************************************************************************************************************//
程序一樣是用delphi平臺編寫的。
界面布局:
部分關(guān)鍵代碼:
//************************************************************** 點擊啟動按鈕 ************************************************************************//
procedure TForm1.activeButtonClick(Sender: TObject);
begin
if activeButton.Caption ='啟動' then
begin
if downloadAdd.Text = '' then //判斷是否是空地址
begin
ShowMessage('下載地址無效!');
Exit;
end;
activeButton.Caption:='停止';
downloadAdd.Enabled:=false;
Timer1.Enabled:=false;
handle1:=FindWindow(nil, PChar('迅雷VIP尊享版')); //查找迅雷主窗口,獲得句柄 handle1
if handle1 <> 0 then
begin
//SetWindowPos(handle1,HWND_TOPMost,0,0,0,0,0);
GetWindowRect(handle1,R1); //定位窗口位置
ImitateClick(R1.Left+189,R1.Top+88); //設(shè)置鼠標位置 (“新建”),單擊
Sleep(300);
handle2:=FindWindow(nil, PChar('新建任務')); //查找新建任務窗口,獲得句柄 handle2
//SendMessage(handle2,WM_SETTEXT,255,Integer(PChar(downloadAdd.Text))); //模擬發(fā)送字符
GetWindowRect(handle2,R2); //定位新建任務窗口位置
ImitateClick(R2.Left+55,R2.Top+75); //設(shè)置鼠標位置,單擊
clipboard.AsText:=downloadAdd.Text; //下載地址復制到剪貼板
Sleep(300);
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); //模擬Ctrl+V
keybd_event(Ord('V'),MapVirtualKey(Ord('V'),0),0,0);
keybd_event(Ord('V'),MapVirtualKey(Ord('V'),0),KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
Sleep(100);
ImitateClick(R2.Left+386,R2.Top+184); //設(shè)置鼠標位置(“立即下載”),單擊
Sleep(5000);
ImitateClick(R1.Left+296,R1.Top+89); //設(shè)置鼠標位置 (“開始/暫停”)
Sleep(300);
ImitateClick(R1.Left+326,R1.Top+88); //設(shè)置鼠標位置 (“刪除”),單擊
ImitateClick(R1.Left+460,R1.Top+120); //設(shè)置鼠標位置 (第一個文件位置),單擊
ImitateClick(R1.Left+626,R1.Top+166); //模擬鼠標單擊(“光速試用”),單擊
Timer1.Enabled:=true; //125s定時開始
end;
end
else
begin //結(jié)束任務
activeButton.Caption:='啟動';
Timer1.Enabled:=false; //停止計時
downloadAdd.Enabled:=true;
DeleteDF(fileName.Text); //刪除下載文件
DeleteDF('unknown');
DeleteDF('401');
end;
end;
//************************************************************** 點擊刪除按鈕 ************************************************************************//
procedure TForm1.deleteButtonClick(Sender: TObject);
begin
DeleteDF(fileName.Text); //刪除下載文件
DeleteDF('unknown');
DeleteDF('401');
ShowMessage('文件已刪除!');
end;
//************************************************************** 子函數(shù)DeleteDF ************************************************************************//
procedure TForm1.DeleteDF(fName: String); //功能:刪除相同前綴文件
begin
if FindFirst(downloadPath.Text+'\'+fName+'*.*',faAnyFile,SearchRec) =0 then
begin //查找相同前綴文件
repeat
DeleteFile(downloadPath.Text+'\'+SearchRec.Name); //刪除相同前綴文件
until(FindNext(SearchRec)<>0);
FindClose(SearchRec);
end;
end;
//******************************************* 保持設(shè)置的下載鏈接與文件名一致,方便刪除等操作 ****************************************************//
procedure TForm1.downloadAddChange(Sender: TObject);
begin
fileName.ItemIndex:=downloadAdd.ItemIndex; //保持下載鏈接與文件名一致
end;
procedure TForm1.fileNameChange(Sender: TObject);
begin
downloadAdd.ItemIndex:=fileName.ItemIndex; //保持下載鏈接與文件名一致
end;
//**************************************************************** 子函數(shù)ImitateClick **************************************************************************//
procedure TForm1.ImitateClick(x, y: integer); //功能:模擬鼠標單擊
begin
SetCursorPos(x,y);
Mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //模擬鼠標單擊
Mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
//**************************************************************** 定時器Timer1 :125s *************************************************************************//
procedure TForm1.Timer1Timer(Sender: TObject); //125s計時任務:刪除下載文件,重復下載文件
begin
Timer1.Enabled:=false;
DeleteDF(fileName.Text); //刪除下載文件
DeleteDF('unknown');
DeleteDF('401');
//下面代碼與 procedure TForm1.activeButtonClick(Sender: TObject)中的操作相一致,不再重復
(*
1、單擊“新建”
2、下載地址復制到剪貼板
3、單擊“立即下載”
4、點擊“暫停”
5、點擊“刪除”
6、單擊“光速試用”
*)
Timer1.Enabled:=true;
end;
//********************************************************************************************************************************************************************//
//********************************************************************************************************************************************************************//
顯示效果:



速度基本都在2MB/s以上,當然,還是有缺陷的,必須保持迅雷窗口在桌面上!致命一擊,只能在晚上睡覺時用了。
|