2011-07-30 8 views
0

나는 웹 자동화 응용 프로그램을 작성 중입니다.팝업을 MSHTML로

모든 것이 잘 작동합니다. 이제 나는 문제에 봉착했다.

사용자가 클릭이 링크를 통해 새로운 팝 업이 입력 필드와 버튼 열립니다

,

사용자는 필드와 버튼을 누르 입력합니다.

이 작업을 자동화하고 싶지만 링크를 클릭하면 팝업이 표시되지 않고 Document_Completed 이벤트가 발생하지 않습니다.

그래서이 팝업을 구문 분석하고 자동화 할 수 없습니다.

몸에 어떤 도움이 되셨습니까?

+0

[WebBrowser 컨트롤을 사용할 때 MDI 컨트롤의 자식으로 팝업 창을 설정]의 중복 가능성 (http://stackoverflow.com/questions/6470842/setting-popup-window-to- be-a-child-of-mdi-control- 사용중인 웹 브라우저 제어) –

답변

1

이것은 매우 까다 롭습니다. 나는 나 자신과 비슷한 것을 연구 해왔다. 먼저 대화 상자가 Javascript인지 또는 메시지 상자인지 확인해야합니다. javascript 대화 상자를 사용하면 다음을 시도 할 수 있습니다. http://msdn.microsoft.com/en-us/magazine/gg309183.aspx. 또한 저자는 시스템 대화 상자에서도 작동 할 수 있지만 좋지는 않다고 전했다. 이 작업을 할 수 없다면 깊이 파고 Win32Api를 통해 조작 해보십시오.

시스템 대화 상자는 일반적으로이 유형의 자동화에 사용하는 DOM의 일부가 아닙니다. 그것은 ID가없고 운영 체제의 나머지 부분과는 별도의 루프에서 실행됩니다 (매우 낮은 수준에서 모든 목적과는 별도로 보관됩니다). 대화 상자 및 Windows에서 작동하는 방식에 대한 자세한 내용은 다음을 확인하십시오. http://www.winprog.org/tutorial/dialogs.html

이 문제에 대한 완전한 해결책이 없지만 현재 작업 중입니다.

0

팝업 핸들을 얻을 수있는 사람은 WindowFromPoint입니다. 그렇다면 IAccessible 인터페이스를 사용하여 팝업 요소를 사용할 수 있습니다. 이런 식으로 뭔가 :

const uint OBJID_NATIVEOM = 0; 
Guid IID_IAcce = new Guid("{618736e0-3c3d-11cf-810c-00aa00389b71}"); 

IntPtr inpt = WindowFromPoint(p); 

object ptr1 = null; 
int l; 

l = AccessibleObjectFromWindow(inpt, OBJID_NATIVEOM, IID_IAcce.ToByteArray(), ref ptr1); 
var acc = ptr1 as IAccessible;