2014-09-08 2 views
5

"user32.dll"의 "GetForegroundWindow"를 사용하여 창 핸들을 가져올 수 있으며 해당 클래스 이름을 "# 32770"과 일치시킴으로써 대화 상자인지 확인할 수 있습니다.대화 상자가 경고인지 확인하거나 VB.Net Winform 응용 프로그램을 사용하여 확인 또는 확인하는 방법?

내 질문에이 대화 상자가 표시되고 알림, 확인 또는 대화 상자가 표시되는지 어떻게 알 수 있습니까?

참고 VB.Net을 사용하여 Internet Explorer 프로세스 외부에서 작업하고 있습니다.

답변

3

가능한 대화 상자가 인 입니다. 표준은 MessageBox와 OpenFileDialog, PrintDialog, ColorDialog 등의 쉘 대화 상자입니다. Windows 프로그램을 작성하기 위해 원시 코드를 사용하는 프로그래머가 리소스 편집기를 사용하여 작성하는 종류의 많은 비표준 코드가 있습니다. DialogBox() winapi 함수에 의해 표시됩니다.

대화 상자 창에 대한 자세한 내용은 Spy++ utility을 사용해야합니다. 일반적인 대화 상자 인 경우 창에있는 모든 컨트롤에 ID가 있음을 알 수 있습니다. GetDlgItem()을 pinvoking하여 런타임에 이러한 것을 찾을 수 있습니다. EnumChildWindows()가 다른 자식 윈도우 내부에 중첩되어 있으면 필요합니다. 함수가 실패하면 IntPtr.Zero를 반환하면 찾고있는 대화 상자가 없다는 것을 알 수 있습니다. 또한 GetClassName()을 pinvoke하여 찾으려는 컨트롤 종류를 다시 확인해야합니다.

절대 100 % 정확하지 않을 수 있으므로 프로그래머는 매우 일반적인 ID를 선택하는 경향이 있습니다. 1에서 시작하여 연속적으로 번호를 매기는 것과 같습니다. 적절한시기에이 작업을 수행하면 특정 대화 상자가 표시 될 가능성이 매우 높습니다.

Microsoft가 코드를 쉽게 손상시킬 수 있으므로주의하십시오. 그들은 다음 버전의 Internet Explorer에서 대화 상자를 동일하게 유지할 것을 약속하지 않습니다.

그리고 마지막으로 프로그래머는 파일 다운로드 확인 메시지를 고치려는 경향이 있기 때문에이 점에 관심을 갖는 경향이 있습니다. 경로 이름을 파고 [확인] 단추를 자동으로 클릭하십시오. A 매우 악성 코드의 매력적인 대상은 물론이 쉬운 목표를 물리 치기위한 대응책을 마련했습니다. 최신 IE 버전에서 사용할 수있는 강화 된 보호 모드는 두려움을 줄 수있는 또 다른 대응책입니다.

+0

방법을 보여 주셔서 감사합니다. 시도해 보겠습니다. –

0

EnumChildWindow를 사용하여 창 요소를 열거하고 단추와 열 수를 계산하고 아이콘을 확인할 수 있습니다. 표준 메시지 박스라고 가정 할 때 6 개의 버튼 구성과 9 개의 다른 아이콘이 있습니다.