다음과 같은 방법으로 다른 응용 프로그램에 마우스 이벤트를 보냅니다. 문제는 일부 응용 프로그램에서는 작동하지만 다른 응용 프로그램에서는 작동하지 않는다는 것입니다. 왜? 스파이를 사용에뮬레이트 된 이벤트를 다른 창으로 보내기
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private const int downclick = 0x201;
private const int upclick = 0x202;
IntPtr handle = IntPtr.Zero;
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
foreach (Process p in Process.GetProcessesByName("mspaint"))
{
IntPtr handle = p.MainWindowHandle;
int X = 50;
int Y = 380;
IntPtr lParam = (IntPtr)((Y << 16) | X);
IntPtr wParam = IntPtr.Zero;
SendMessage(handle, downclick, wParam, lParam);
SendMessage(handle, upclick, wParam, lParam);
}
}
}
}
는 ++ 나는 응용 프로그램에 다음과 같은 데이터를 받으면에 볼 :
<00062> 0004052C S WM_LBUTTONDOWN fwKeys:0000 xPos:50 yPos:380
<00063> 0004052C R WM_LBUTTONDOWN
<00064> 0004052C S WM_LBUTTONUP fwKeys:0000 xPos:50 yPos:380
<00065> 0004052C R WM_LBUTTONUP
나는 사건 자체가 올바른지 가정합니다. 하지만 일부 소프트웨어에서는 작동하는 이유는 모르지만 다른 소프트웨어에서는 작동하지 않습니다. 한 창에서 다른 창으로 마우스 메시지를 보내려면 어떻게합니까? 메시지를 보내려는 소프트웨어가 항상 표시되는 것은 아닙니다.
전혀 가능합니까?