Python向窗口发送快捷键的两种方法

Python向窗口发送快捷键的两种方法:

第一种方法:利用win32api的PostMessage函数发送快捷键:

# -*- coding: cp936 -*-
import win32api,win32gui,win32con #导入win32api相关模块

self='SE_SogouExplorerFrame' #窗口的类名
hwnd = win32gui.FindWindow(self,None)#通过窗口类名获取窗口句柄
#send key
win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_F9, 0)#发送F9键
win32api.PostMessage(hwnd, win32con.WM_KEYUP, win32con.VK_F9, 0)

第二种方法:利用keybd_event发送快捷键:

# -*- coding: cp936 -*-

import win32api,win32gui,win32con

self='SE_SogouExplorerFrame'
def show(self):  
    # windows handlers  
    #hwnd = self.window.handle
    hwnd = win32gui.FindWindow(self,None)
    win32gui.ShowWindow(hwnd,1) 

    win32gui.SetForegroundWindow (hwnd)  
    #win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0,0,0,0, win32con.SWP_NOMOVE | win32con.SWP_NOACTIVATE| win32con.SWP_NOOWNERZORDER|win32con.SWP_SHOWWINDOW)    
    #X11LockScreenWindow.show(self)  
show(self)#由于keybd_event需要激活才能成功发送快捷键
#send key
win32api.keybd_event(17,0,0,0)  #ctrl键位码是17
win32api.keybd_event(115,0,0,0)  #f4键位码是86
win32api.keybd_event(115,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)

批注:这两种方法最好不要发组合键,本人测试这两种方法发组合键不是很精确;如果真要发组合键话推荐用第二种方法;一种方法的优势就是发送快捷键的时候不用激活窗口。










你可能感兴趣的:(Python,python,api,windows,测试)