ところで、作業している環境を指定し、コードをもう少し詳細にする必要があります。SendInput の使用は 1 つのオプションです。正確に何をしようとしているのかはわかりませんが、クリックをシミュレートするためのオプションをさらに 2 つ紹介します。このようなものはうまくいきます(私はPythonでコードを書いていますが、同じ考えでなければなりません):
def leftClick(x=0, y=0):
win32api.SetCursorPos((x,y)) #set the cursor to where you wanna click
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0) #generate a mouse event
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)
return True
def doubleClick(x=0, y=0):
leftClick(x,y)
leftClick(x,y)
time.sleep(0.05) の間に 50 ミリ秒スリープできますが、それがなくても機能し、vm でテストしました。
カーソルを移動せずにサイレントクリックを実行したい場合の別のオプションは、ウィンドウハンドル (hwnd) を知っているクリックしたいウィンドウにメッセージを送信することです。ここでは、ハンドルをパラメーターとして渡すと仮定します。
def leftClick(x=0, y=0, hwnd):
lParam = win32api.MAKELONG(x,y) # create a c long type to hold your click coordinates
win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lparam) # send a message to the window that the mouse left button is down.
win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, 0, lparam) # send a message to the window that the mouse left button is up.
return True
def doubleClick(x=0, y=0, hwnd):
leftClick(x,y, hwnd)
leftClick(x,y, hwnd)
または、メッセージWM_LBUTTONDBLCLKを送信できます。