C#调用迅雷的时候 自动模拟点击”下载按钮” 关闭弹出窗口

来源:互联网 发布:软件开发 成都 编辑:程序博客网 时间:2024/04/29 17:01

免费标准下载:http://www.biaozhuns.com/

网上 关于 “不弹出《建立任务》的对话框的方法 在迅雷5.9貌似不适用了” 那么我改了一下网上的“监听方式”来进行模拟点击

#region Dll Import 需要导入的api 声明。         [DllImport("User32.dll", EntryPoint = "FindWindow")]        private static extern IntPtr FindWindow(string lpClassName,      string lpWindowName);         [DllImport("user32.dll", EntryPoint = "FindWindowEx")]        private static extern IntPtr FindWindowEx(IntPtr hwndParent,      IntPtr hwndChildAfter, string lpszClass, string lpszWindow);         [DllImport("User32.dll", EntryPoint = "SendMessage")]        private static extern int SendMessage(IntPtr hWnd,      int Msg, IntPtr wParam, string lParam);        const int WM_GETTEXT = 0x000D;        const int WM_SETTEXT = 0x000C;        const int WM_CLICK = 0x00F5;        #endregion        //关消息的方法        private void ClosePopWindow(object obj)        {            //这些用spy++可以看到            string lpszParentClass = "#32770"; //整个窗口的类名            string lpszParentWindow = "建立新的下载任务"; //窗口标题            string lpszClass_Submit = "Button"; //需要查找的Button的类名            string lpszName_Submit = "立即下载"; //需要查找的Button的标题                       IntPtr ParenthWnd = new IntPtr(0);            IntPtr EdithWnd = new IntPtr(0);            int i = 0;            while (true)            {                //查到窗体,得到整个窗体                ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);                //判断这个窗体是否有效                if (!ParenthWnd.Equals(IntPtr.Zero))                {                     //得到第一级子窗口                    EdithWnd = FindWindowEx(ParenthWnd,                        new IntPtr(0), "#32770", "");                    //Console.WriteLine("第一级-"+EdithWnd.ToString());                    //得到Button这个子窗体,并触发它的Click事件                    EdithWnd = FindWindowEx(EdithWnd,                        new IntPtr(0), lpszClass_Submit, lpszName_Submit);                    //Console.WriteLine("第二级-" + EdithWnd.ToString());                    if (!EdithWnd.Equals(IntPtr.Zero))                    {                        SendMessage(EdithWnd, WM_CLICK, (IntPtr)0, "0");                    }                    return;                }                Thread.Sleep(1000);                i++;                //  Console.WriteLine("第"+i.ToString()+"次检查"); 5秒都没显示出来就推出循环                if (i > 15)                {                    //break;                }            }        }  //需要导入如下类库using System.Runtime.InteropServices;using System.Threading;using Microsoft.Win32; //在迅雷提交前添加一个方法ThreadPool.QueueUserWorkItem(new WaitCallback(ClosePopWindow));


下面是网络上的一些方法 也粘贴过来
1.首先导入DLL

添加引用 -> COM -> ThunderAgent 1.0 Type Library(前提是已安装迅雷)

或者C:\Program Files\Thunder Network\Thunder\ComDlls\ThunderAgent_Now.dll(路径可能有所不同)

2.代码:

THUNDERAGENTLib.AgentClass agent = new THUNDERAGENTLib.AgentClass();//创建对象
//添加任务:下载http://www.baidu.com/index.html这个文件至C:\baidu.html,
//没有注释,没有引用,立即开始,从多资源下载,原始资源线程5

agent.AddTask(“http://www.baidu.com/index.html”, “index.html”, “C:\\”, “”, “”, 1, 0, 5);
agent.CommitTasks2(1);//提交

3.修改迅雷配置

此时代码部分完成,但是运行的时候会弹出窗口确认下载。
如果想跳过这个窗口,需要在迅雷里面配置:工具》配置》高级》通过IE右键菜单“使用迅雷下载”添加任务,将这项去掉就可以了

原创粉丝点击