2012-12-13 1 views
0

저는 델파이 애플리케이션을 여러 번 돌리고 있는데, 각 델파이를 최상위에 가져 와서 폼의 마우스 클릭을 시뮬레이션해야합니다.어떻게 창을 맨 위에 가져 와서 클릭을 시뮬레이션 할 수 있습니까?

내 응용 프로그램에는 TWebBrowser 구성 요소가 있고 해당 브라우저의 어딘가를 클릭하고 싶습니다. 문제는 해당 브라우저에서 플래시 객체를 클릭해야한다는 것입니다. 플래시를 클릭하기 위해 ClassName과 Handle을 얻으려고했지만 모든 웹 사이트에서 작동하지 않습니다. 따라서 작동하는 유일한 것은 마우스 클릭을 시뮬레이트하는 것입니다.

예를 들어이 링크를 브라우저 http://bit.ly/XWaelU에로드하면 플래시 플레이어의 큰 "재생"버튼을 클릭하여 시뮬레이션하려고합니다.

이 작업을 수행하는 방법에 대한 예제 코드를 누군가가 도울 수 있습니까? 응용 프로그램이 고정 된 위치로 시작되어야 클릭의 좌표가 동일하게 유지되어야한다고 생각합니까?

감사합니다.

+3

예를 들어 버튼을 누르거나 수행하려는 것은 무엇인가요? 응용 프로그램 내부 또는 외부 응용 프로그램에서이 작업을 수행 하시겠습니까? – jachguate

+0

내 응용 프로그램에는 TWebBrowser 구성 요소가 있으며 해당 브라우저의 어딘가를 클릭하고 싶습니다. 문제는 해당 브라우저에서 플래시 객체를 클릭해야한다는 것입니다. 플래시를 클릭하기 위해 ClassName과 Handle을 얻으려고했지만 모든 웹 사이트에서 작동하지 않습니다. 따라서 작동하는 유일한 것은 마우스 클릭을 시뮬레이트하는 것입니다. –

+0

더 중요한 정보를 편집하고 추가하는 것이 좋습니다. – jachguate

답변

0

핸들을 가지고있는 (얻을 수있는) 창과 관련된 위치를 알고있는 창에서 컨트롤을 클릭한다고 가정하면이 컨트롤을 사용할 수 있습니다. 현재 양식에서만 데모하십시오. 귀하의 상황에 맞게 조정될 수 있습니다.

Procedure SetWindowTopAndClickOnRelPos(wnd:HWND;Pos:TPoint); 
var 
    ChildControlHandle:HWND; 
begin 
    SetForegroundWindow(wnd); 
    ChildControlHandle:= ChildWindowFromPoint(WND,pos); 
    SendMessage(ChildControlHandle,WM_LButtonDown,0,5*$FFFF + 5); 
    SendMessage(ChildControlHandle,WM_LButtonUp,0,5*$FFFF + 5); 
    Form4.Memo1.Lines.Add(Format('ChildControlHandle: %d',[ChildControlHandle])); 
end; 

procedure TForm4.Button1Click(Sender: TObject); 
begin 
    Memo1.Lines.Add(Format('Window: %d',[Handle])); 
    Memo1.Lines.Add(Format('Button: %d',[button2.Handle])); 
    SetWindowTopAndClickOnRelPos(handle,Point(Button2.Left + 2,Button2.Top + 2)); 
end; 

procedure TForm4.Button2Click(Sender: TObject); 
begin 
    Showmessage('Hallo'); 
end; 
+0

예를 들어 주셔서 감사합니다. 나는 내가 원하는 것을 더 구체적으로하기 위해 나의 질문을 편집했다. –

관련 문제