2012-03-07 2 views
0

그럼 질문은 아주 자명하지만 .. 내가 실행할 때 파일을 다운로드 한 다음 크롬을 설치하는 프로그램을 만들고 싶습니다. 그러나 설치의 다음 단계를 어떻게 통과 할 것인가? C sharp 또는 Java를 사용하고 있습니다. 나는 나던 파일 다운로드 순간에 몇 가지 코드를 가지고 : S를다음 단계를 거치지 않고 응용 프로그램을 설치할 수 있습니까?

나는 그것이 궁극적으로하고 싶은 것 :? 1) 다운로드 - Gmail은 작성일를 입력)이 크롬 를 설치 (proly 자바 스크립을) 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); 
    } 
관련 문제