2012-03-07 68 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); 
    } 
相關問題