2013-06-23 2 views
0

몇 시간 동안이 검색을 수행했지만 적절한 결과가 없습니다. 내가하고 싶은 것은, 내 form1 위에 외부 창을 최상으로 만드는 것입니다. 그래서 내 form1 최상위 있지만 shelvelecute 통해 기본 브라우저를 열 때 닫을 때까지 맨 위에 있어야합니다.VB6 - TopMost에 예외 추가

내 코드는 다음과 같습니다

Dim r As Long 
    r = ShellExecute(0, "open", "http://www.google.com", 0, 0, 1) 

그리고 "google.com"열 때 앞서 언급 한 바와 같이 폐쇄 될 때까지, 기본 브라우저, 최상단에해야한다.

괜찮은 해결책이 있습니까? 그렇다면 누군가가 나에게 그 방법을 말해 줄 수 있다면 고맙겠습니다.

답변

0

은을 SetWindowPos API를

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 
0

모두 창문하면 한 번 봐, 브라우저 창을 최고입니다. 대신에서 ShellExecute의 ShellExecuteEx를 사용할 필요가 브라우저의 핸들을 가져 오기위한

SetWindowPos(browserHandle, Me.hwnd, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); 

: 당신은 수 있도록 응용 프로그램의 활성화 이벤트에 코드를 넣을 수 있습니다. 그러면 hProcess가 생깁니다. 그걸 사용하여 EnumWindows()을보고 어떤 창문에 그 창이 있습니까? GetWindowThreadProcessID(). 그런 다음 해당 창을 목록에 저장하고 SetWindowPos API를 호출하여 반복하여 양식 핸들을 처리합니다.

양식이 MDI 상위 항목 인 경우 창을 MDI 하위 항목으로 만들 수 있으므로 브라우저를 MDI 하위 항목으로 만들 것을 고려할 수 있습니다.