Untitled
unknown
plain_text
10 months ago
1.5 kB
4
Indexable
import time
# Define necessary structures and constants
PUL = ctypes.POINTER(ctypes.c_ulong)
class MOUSEINPUT(ctypes.Structure):
_fields_ = [("dx", ctypes.c_long),
("dy", ctypes.c_long),
("mouseData", ctypes.c_ulong),
("dwFlags", ctypes.c_ulong),
("time", ctypes.c_ulong),
("dwExtraInfo", PUL)]
class INPUT_I(ctypes.Union):
_fields_ = [("mi", MOUSEINPUT)]
class INPUT(ctypes.Structure):
_fields_ = [("type", ctypes.c_ulong),
("ii", INPUT_I)]
INPUT_MOUSE = 0
MOUSEEVENTF_MOVE = 0x0001
MOUSEEVENTF_LEFTDOWN = 0x0002
MOUSEEVENTF_LEFTUP = 0x0004
def click(x, y):
# Get current screen resolution
screen_width = ctypes.windll.user32.GetSystemMetrics(0)
screen_height = ctypes.windll.user32.GetSystemMetrics(1)
# Calculate normalized absolute coordinates
x = int(x * (65536 / screen_width) + 0.5)
y = int(y * (65536 / screen_height) + 0.5)
# Create input structures for the mouse click
extra = ctypes.c_ulong(0)
ii = INPUT_I()
ii.mi = MOUSEINPUT(x, y, 0, MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, ctypes.pointer(extra))
command = INPUT(ctypes.c_ulong(INPUT_MOUSE), ii)
# Send the input
ctypes.windll.user32.SendInput(1, ctypes.pointer(command), ctypes.sizeof(command))
# Example usage: Click at the current cursor position
time.sleep(2) # Wait for 2 seconds before clicking
click(0, 0) # Click at the top-left corner for demonstrationEditor is loading...
Leave a Comment