2012-05-22 6 views
2

Google 크롬 탭 또는 기본 브라우저를 열려고합니다. 그런 다음 사용자가 선택한 후에 닫습니다.Chrome 탭을 열고 닫습니다.

나는 브라우저를 열려면

Process.Start("HTTP://www.MySite.Com"); 

를 사용하고 있지만, 그것을 종료에 난 핸들이 없습니다. 뿐만 아니라 전체 브라우저를 닫고 싶지는 않습니다. 탭을 열었습니다.

+0

음 Process.Start를 명령은 당신에게 핸들의 일종을 제공하지 않습니다

여기에 기본 브라우저를 사용하여 전체 예제? 그것은 프로세스 유형입니다, 당신은 아마 그것으로 무언가를 할 수 있습니다! 나는 당신이 단지 탭을 닫을 수 있다고 생각하지 않는다. 아마 모든 탭이 그것 자신의 프로세스를 가지고 있다면? – Davio

+0

Process ChromeTab = Process.Start (...) Then ChromeTab.Close() 그리고 예외가 발생했습니다. 객체 참조가 객체의 인스턴스로 설정되지 않았습니다. –

답변

4

이 파이어 폭스에서 나를 위해 작동 : 나는 파이어 폭스가 한 창 모드로 설정했기 때문에

var proc = Process.Start("firefox.exe", "http://www.google.nl"); 
proc.Kill(); 

그것이 탭을 엽니 다. 이 탭은 Kill() 메소드를 실행할 때 죽지 만 (주 윈도우는 제외). 이 경우 Close() 메소드가 작동하지 않습니다.

Chrome에서도 같은 방법을 시도 할 수 있습니다. URL 자체 대신 실제 프로그램에 URL을 인수로 제공해야합니다. 그렇지 않으면 proc은 null입니다. ,

 string browser = string.Empty; 
     RegistryKey key = null; 
     try 
     { 
      key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command"); 

      //trim off quotes 
      if (key != null) 
      { 
       browser = key.GetValue(null).ToString().ToLower().Trim(new[] { '"' }); 
      } 
      if (!browser.EndsWith("exe")) 
      { 
       //get rid of everything after the ".exe" 
       browser = browser.Substring(0, browser.LastIndexOf(".exe", StringComparison.InvariantCultureIgnoreCase) + 4); 
      } 
     } 
     finally 
     { 
      if (key != null) 
      { 
       key.Close(); 
      } 
     } 
     Process proc = Process.Start(browser, "http://www.google.nl"); 
     if (proc != null) 
     { 
      proc.Kill(); 
     } 
+0

나는 이것을 시도하는 과정에 있는데, 기본 브라우저를 실행하도록 지정하는 방법이 있습니까? –

+0

단서 없음, 어쩌면 당신은 레지스트리에서 파고해야 ... http://uk.answers.yahoo.com/question/index?qid=20080105121336AAnheHM – Davio

+0

참조 만약 내가 이것을 동일한 방법으로 실행하면, 탭이 열리지 않습니다. (빨리 열리고 닫히고 있다고 가정합니다.)하지만 kill을 다른 방법으로 이동하면 프로세스 (6004)가 종료 되었기 때문에 요청을 처리 할 수 ​​없습니다. –

관련 문제