2012-09-30 2 views
1

우리는 창을 클릭해야하는 응용 프로그램을 가지고 있습니다. 단추를 클릭하는 데 사용하는 다음 코드를 사용하려고했지만 지원되지 않는 패턴 예외가 발생했습니다.UI 자동화 라이브러리를 사용하여 "창"을 클릭하는 방법은 무엇입니까?

InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern); click_pattern.Invoke();

을 할 수있는 다른 방법이 있습니까?

+0

adjust_button은 (으)로되어 있습니까? 어떤 통제가 분할 창입니까? –

+0

기본적으로 창하지만 응용 프로그램에서 단추 (클릭 가능한 개체)로 사용됩니다 ... – Tejas

답변

2

개체를 클릭 할 수있는 경우에도 클릭이 내부적으로 처리되는 방식에 따라 클릭을 수행하기 위해 InvokePattern을 반드시 사용할 수있는 것은 아닙니다. 그것은 여기에있는 것처럼 보입니다.

일부 코드를 사용하여 마우스 커서를 창 위로 이동하고 P/Invoke를 사용하여 클릭을 발행 할 수 있습니다. 다음과 같은 내용 :

private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; 
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; 

[DllImport("user32.dll")] 
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo); 

... 
... 

AutomationElement paneToClick; 

... 
... 

Cursor.Position = paneToClick.GetClickablePoint(); 
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new IntPtr()); 
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new IntPtr()); 
+0

감사합니다 Chaser324 !! – Tejas