1 后台键鼠操作
组合键不生效,并且按键按下会触发两次,不知道为什么?有大佬知道了,请指教一下!
import time
import win32api
import win32con
import win32guiclass VirtualKeyboard : def __init__ ( self, hwnd) : self. hwnd = hwndself. hwnd_title = win32gui. GetWindowText( hwnd) def key_press ( self, key: str , interval= 0.1 ) : key = ord ( key. upper( ) ) win32api. PostMessage( self. hwnd, win32con. WM_KEYDOWN, key, 0 ) time. sleep( interval) win32api. PostMessage( self. hwnd, win32con. WM_KEYUP, key, 0 ) def key_down ( self, key: str ) : key = ord ( key. upper( ) ) win32api. PostMessage( self. hwnd, win32con. WM_KEYDOWN, key, 0 ) def key_up ( self, key: str ) : key = ord ( key. upper( ) ) win32api. PostMessage( self. hwnd, win32con. WM_KEYUP, key, 0 ) def mouse_move ( self, x, y) : x = int ( x) y = int ( y) point = win32api. MAKELONG( x, y) win32api. PostMessage( self. hwnd, win32con. WM_MOUSEMOVE, None , point) def mouse_up ( self, x, y, button= "L" ) : x = int ( x) y = int ( y) button = button. upper( ) point = win32api. MAKELONG( x, y) if button == "L" : win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONUP, win32con. MK_LBUTTON, point) elif button == "R" : win32api. PostMessage( self. hwnd, win32con. WM_RBUTTONUP, win32con. MK_RBUTTON, point) def mouse_down ( self, x, y, button= "L" ) : x = int ( x) y = int ( y) button = button. lower( ) point = win32api. MAKELONG( x, y) if button == "L" : win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONDOWN, win32con. MK_LBUTTON, point) elif button == "R" : win32api. PostMessage( self. hwnd, win32con. WM_RBUTTONDOWN, win32con. MK_RBUTTON, point) def mouse_double ( self, x, y) : x = int ( x) y = int ( y) point = win32api. MAKELONG( x, y) win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONDBLCLK, win32con. MK_LBUTTON, point) win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONUP, win32con. MK_LBUTTON, point) def mouse_move_press ( self, x, y) : x = int ( x) y = int ( y) point = win32api. MAKELONG( x, y) win32api. PostMessage( self. hwnd, win32con. WM_MOUSEMOVE, None , point) win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONDOWN, win32con. MK_LBUTTON, point) win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONUP, win32con. MK_LBUTTON, point) def mouse_move_press_double ( self, x, y) : x = int ( x) y = int ( y) point = win32api. MAKELONG( x, y) win32api. PostMessage( self. hwnd, win32con. WM_MOUSEMOVE, None , point) win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONDBLCLK, win32con. MK_LBUTTON, point) win32api. PostMessage( self. hwnd, win32con. WM_LBUTTONUP, win32con. MK_LBUTTON, point) if __name__ == '__main__' : try : handle = win32gui. FindWindow( "Notepad" , None ) print ( "窗口句柄是:{}" . format ( handle) ) vkb = VirtualKeyboard( 67626 ) vkb. mouse_move_press( 50 , 50 ) vkb. key_press( "A" ) except Exception as e: print ( "窗口句柄获取失败:{}" . format ( e) )