Click
을 실제로 클릭하지 않고 시뮬레이션 할 수 있습니까?Simulate a 클릭하지 않고 Click
나는 아직도 마우스 스탠드와 함께 실행중인 계산기에 Click
싶어. 이것이 가능한가?
Click
을 실제로 클릭하지 않고 시뮬레이션 할 수 있습니까?Simulate a 클릭하지 않고 Click
나는 아직도 마우스 스탠드와 함께 실행중인 계산기에 Click
싶어. 이것이 가능한가?
일반적인 레이블, 필드 및 버튼 응용 프로그램에서 버튼을 클릭하려는 경우 P/Invoke를 약간 사용하여 FindWindow
및 SendMessage
을 컨트롤에 사용할 수 있습니다.
아직 Spy ++에 익숙하지 않다면 이제 시작할 시간입니다!
Visual Studio 2012 RC와 함께 패키지로 제공됩니다 (C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools
). 다른 버전에서도 비슷하게 찾아야합니다.
콘솔 C# 응용 프로그램으로 이것을보십시오 :
class Program
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
private const uint BM_CLICK = 0x00F5;
static void Main(string[] args)
{
// Get the handle of the window
var windowHandle = FindWindow((string)null, "Form1");
// Get button handle
var buttonHandle = FindWindowEx(windowHandle, IntPtr.Zero, (string)null, "A Huge Button");
// Send click to the button
SendMessage(buttonHandle, BM_CLICK, 0, 0);
}
}
이것은 "Form1에"자막 창에 핸들을 가져옵니다. 그 핸들을 사용하여, 윈도우 내의 버튼 핸들을 얻습니다. 그런 다음 유용한 매개 변수없이 "BM_CLICK"유형의 메시지를 버튼 컨트롤에 보냅니다.
테스트 WinForms 앱을 대상으로 사용했습니다. 카운터를 증가시키기 위해 하나의 단추와 코드가 필요합니다.
당신은 당신이 P를 실행할 때/카운터 증가를 참조 콘솔 응용 프로그램을 호출해야합니다. 그러나 이 아니라 버튼이 애니메이션으로 표시됩니다.
Spy ++ Message Logger 기능을 사용할 수도 있습니다. 나는 BM_CLICK 필터를 추천하고 WM_LBUTTONDOWN/WM_LBUTTONUP (매뉴얼 클릭으로 얻을 수있는 것)을 추천한다.
희망 하시겠습니까?
이 언어로 어떤 언어를 사용 하시겠습니까? 당신은 winapi 태그 C와 C + + 또는 C#은 모두 유효한 후보자입니다. 또한, 당신은 무엇을보고 싶어합니까? 단추? 특정 좌표? – rrhartjr
은 중요하지 않습니다. 그들 중 누구든지 OK입니다 :) 하지만 C#, C++ 및 Python을 선호합니다. – MBZ
@MBZ 글쎄, 여기서 더 잘 살펴 봐야한다 : http://stackoverflow.com/questions/2416748/how-to-simulate-mouse-click-in-c –