03-27-2026, 07:02 PM
Hello,
I am attempting to simulate mouse click using PostMessage approach so that the cursor does not move.
I have been successful doing so from a local level.
However, when I attempt to create a function from global Class file global.cs, I get the following error:
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (0x8007000B)
the error is pointing to line:
ScreenToClient(Parent_hwnd,ref ControlPoint);
I am calling the function like the following:
var w = wnd.find(1, "Wind");
var e = w.Elm["STATICTEXT", "Text"].Find(1);
LeftClick(w.Handle,e.Rect.CenterX,e.Rect.CenterY);
I am attempting to simulate mouse click using PostMessage approach so that the cursor does not move.
I have been successful doing so from a local level.
However, when I attempt to create a function from global Class file global.cs, I get the following error:
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (0x8007000B)
the error is pointing to line:
ScreenToClient(Parent_hwnd,ref ControlPoint);
I am calling the function like the following:
var w = wnd.find(1, "Wind");
var e = w.Elm["STATICTEXT", "Text"].Find(1);
LeftClick(w.Handle,e.Rect.CenterX,e.Rect.CenterY);
public static uint WM_LBUTTONDOWN = 0x0201;
public static uint WM_LBUTTONUP = 0x0202;
public static void LeftClick( nint Parent_hwnd, int Control_CenterX, int Control_CenterY) {
POINT ControlPoint = new POINT(Control_CenterX, Control_CenterY);
Console.WriteLine($"X: {ControlPoint.x}, Y: {ControlPoint.y}");
ScreenToClient(Parent_hwnd,ref ControlPoint);
Console.WriteLine($"X: {ControlPoint.x}, Y: {ControlPoint.y}");
PostMessage(Parent_hwnd, WM_LBUTTONDOWN, 1,MakeLParam(ControlPoint.x, ControlPoint.y));
PostMessage(Parent_hwnd, WM_LBUTTONUP, 0,MakeLParam(ControlPoint.x, ControlPoint.y));
}
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
unsafe static int MakeLParam(int x, int y) => (y << 16) | (x & 0xFFFF);
static extern bool ScreenToClient(IntPtr hWnd, ref POINT lpPoint);