c를 나는 그러나 이것은 윈도우가 이미 열려 사실을 고려하지 않습니다는 - 그 다음 나는 경우 #
System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl);
를 통해, 즉 뭔가를 엽니 다하기 위해 노력하고있어 그냥 사용하고 싶습니다. 어떻게이 일을 할 수 있겠습니까?
c를 나는 그러나 이것은 윈도우가 이미 열려 사실을 고려하지 않습니다는 - 그 다음 나는 경우 #
System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl);
를 통해, 즉 뭔가를 엽니 다하기 위해 노력하고있어 그냥 사용하고 싶습니다. 어떻게이 일을 할 수 있겠습니까?
는 CodeProject의에서 프로젝트가 존재하는 "Capturing the Running IE Instances in C#는"
그것은 당신에게 그것을 할 수있는 한 가지 방법을 제공합니다.
WIN32 API를 사용하면 열린 창을 열거하고 필터링하여 실행중인 IE 인스턴스를 가져올 수 있습니다.
도움이 될 수 있습니다.
당신은이 같은 시도 할 수 있습니다 :
var p = new System.Diagnostics.Process();
var s = new System.Diagnostics.ProcessStartInfo(uniquePartOfUrl);
s.UseShellExecute = true;
s.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo = s;
p.Start();
내가 지금 그것을 테스트 할 편리 컴파일러가없는,하지만 아이디어는 단순히 "이 URL을 엽니 다"로 OS를 말해해야한다는 것입니다 운영 체제가 응용 프로그램에 따라 기존 창을 사용할 수있는 방법을 결정하게하십시오. 그럴 가치가있어.
IMO, 웹 페이지를 열 수있는 가장 좋은 방법은 다음 구문을 사용하는 것입니다
Process.Start("http://www.mysite.com");
OS가 사용자의 기본 브라우저에서 열고,이 경우 브라우저의 탭 기능을 사용하는이 방법 그 능력. 아무리 좋은 이유라도없이 특정 브라우저를 사용하도록 강요하는 프로그램보다 나를 더 괴롭게하지 않습니다 (이미 사용하고있는 브라우저를 이미 선택했을 때). 사용자 결정을 존중하는 것은 좋은 일입니다.
IE의 기존 창을 재사용하는 경우, 당신은 2 개 가지 방법으로
IE의 현재 인스턴스를 찾은 다음 해당 인스턴스를 사용하여 열에서 접근 할 수 있습니다. 이것은 @LaGrandMere가 제공 한 답변의 적용을받습니다.
내장 된 설정을 사용하여 Internet Explorer를 설정하면 재사용 할 수 있습니다. 이 방법을 사용하려면 this Microsoft support article에 나와있는 지침을 따르십시오.
왜 창 핸들이 필요합니까? IE의 API는 COM입니다. 새 창/탭을 제어하려면 IWebBrowser2를 요청해야합니다 (IWebBrowser2에서 창/탭 핸들을 가져올 수는 있지만). –