2012-03-07 49 views
0

那么这个问题是相当自我解释,但.. 我想创建一个程序,当我执行它,它会下载一些文件,然后安装它们,例如铬。但是,我将如何通过下一个安装阶段?我使用C sharp或Java。我目前所面对的一些代码来下载的犯规文件:S是否可以安装一个应用程序而不需要进行下一步?

我想什么它最终做到这一点:? 1)下载 - 安装Chrome 2)输入Gmail ACC(proly java的纸条) 3 )其余的可能会类似。

 private void Download() 
    { 
     WebClient webClient = new WebClient(); 
     webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4"); 
     webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
     webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
     webClient.DownloadFileAsync(new Uri("http://dl.google.com/update2/installers/ChromeSetup.exe"), Environment.GetFolderPath(Environment.SpecialFolder.Desktop)); 
    } 

我不知道,如果下载页面区块我,因为客户端头或任何其他的.. 手之前,谢谢!

回答

1

使用pinvoke可以通过SendKey函数将快捷方式发送到设置窗口处理程序。

以下是codeguru的示例代码。它使用PostMessage函数。

[DllImport("User32.Dll", EntryPoint = "PostMessageA")] 
    static extern bool PostMessage(
     IntPtr hWnd, 
     uint msg, 
     int wParam, 
     int lParam 
     ); 

    const uint WM_KEYDOWN = 0x100; 

    const int WM_a = 0x41; 
    const int WM_b = 0x42; 
    const int WM_c = 0x43; 


    static void Main(string[] args) 
    { 
     //using Process.GetProcessesByName to get the handle we want 
     Process[] p = Process.GetProcessesByName("notepad"); 
     IntPtr pHandle = p[0].MainWindowHandle; 

     //will write "abc" in the open Notepad window 
     PostMessage(pHandle, WM_KEYDOWN, WM_a, 0); 
     PostMessage(pHandle, WM_KEYDOWN, WM_b, 0); 
     PostMessage(pHandle, WM_KEYDOWN, WM_c, 0); 
    } 
相关问题