通过win32gui实现:

import win32gui, win32con, win32process,win32api
class Op():def __init__(self, pid, tid, name):self.pid = pidself.tid = tidself.name = namedef setForegroundWindowByWin32GUI(self):# 获取当前游戏的窗口句柄hwnds = self.get_obj_hwnd()hwnd = hwnds[0]# 显示当前游戏的窗口hForeWnd = win32gui.GetForegroundWindow()FormThreadID = win32api.GetCurrentThreadId()CWndThreadID = win32process.GetWindowThreadProcessId(hForeWnd)win32process.AttachThreadInput(CWndThreadID[0], FormThreadID, True)win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)result = win32gui.SetForegroundWindow(hwnd)win32process.AttachThreadInput(CWndThreadID[0], FormThreadID, True)if result:return Trueelse:return Falsedef get_obj_hwnd(self):def _EnumWindowsCallback(hwnd, hwnds):TId, PId = win32process.GetWindowThreadProcessId(hwnd)if PId == self.pid and TId == self.tid:if not win32gui.GetParent(hwnd) and win32gui.IsWindowVisible(hwnd):hwnd_by_findWindow = win32gui.FindWindow(None,self.name)if hwnd != hwnd_by_findWindow:print('Game[{}]: hwnd_by_findWindow[{}] not equal, hwnd may be error'.format(self.name,                                                                                      hwnd_by_findWindow))hwnds.append(hwnd)hwnds = []win32gui.EnumWindows(_EnumWindowsCallback, hwnds)return hwnds

不通过win32gui这个第三方库实现:

class Op():def __init__(self, pid, tid, name):self.pid = pidself.tid = tidself.name = namedef setForegroundWindow(self):hwnds = self.get_obj_hwnd_with_syspkg()hwnd = hwnds[0]hForeWnd = windll.user32.GetForegroundWindow()FormThreadID = win32api.GetCurrentThreadId()CWndThreadID = win32process.GetWindowThreadProcessId(hForeWnd)win32process.AttachThreadInput(CWndThreadID[0], FormThreadID, True)windll.user32.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)result = windll.user32.SetForegroundWindow(hwnd)win32process.AttachThreadInput(CWndThreadID[0], FormThreadID, True)if result:return Trueelse:return Falsedef get_obj_hwnd_with_syspkg(self):hwnds = []def _EnumWindowsCallback(hwnd, lParam):TId, PId = win32process.GetWindowThreadProcessId(hwnd)if PId == self._pid and TId == self._tid:if not windll.user32.GetParent(hwnd) and windll.user32.IsWindowVisible(hwnd):hwnd_by_findWindow = windll.user32.FindWindowW(self.name, None)if hwnd != hwnd_by_findWindow:print('Game[{}]: hwnd_by_findWindow[{}] not equal, hwnd may be error'.format(self.name,                                                                                      hwnd_by_findWindow))hwnds.append(hwnd)EnumWindows = windll.user32.EnumWindows# 声明原型,注意需要首先要声明返回值类型pFunc = WINFUNCTYPE(c_int, HWND, LPARAM)pFuncHandle = pFunc(_EnumWindowsCallback)EnumWindows(pFuncHandle, None)return hwnds

python之windows窗口置顶相关推荐

  1. QT程序 windows窗口置顶和linux窗口置顶遇到的问题和解决方案

    一.QT 窗口置顶 一般情况下,我们开发QT桌面应用程序如需用到窗口置顶操作时,会这样做: setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHin ...

  2. windows窗口置顶--Windows on Top

    目录 工具界面(非常简介): 使用方法 工具设置 快捷键设置及其他设置 在工作的时候,有时需要频繁切换窗口,而有时候需要看实时的数据请求,将窗口调小,又不好后面代码修改操作.这一款工具可以随时.将任意 ...

  3. Windows On Top v3.8.0 Windows窗口置顶小工具单文件版

    前言 Window On Top能够让任意的窗口总是在最顶层,那么当你有时需要两个窗口同时打开时就无需频繁的切换了. Window On Top Window On Top 的使用方法十分简单,在 W ...

  4. python windows窗口置顶_Python入门:第一个程序“Hello, world”

    本文主要内容 安装Python 使用IDLE和基础交互模式 编写一个简单的程序 使用IDLE的Python shell窗口 本章将介绍Python和IDLE的下载.安装和启动过程,IDLE是Pytho ...

  5. python windows窗口置顶_想用Python编程却不知如何下手?一篇搞定编程准备工作

    导读:为了简化Python编程的学习难度,开发过程中的工具.环境尽量使用同一套,此后所有的编程环境都以Windows系统下Python3.8为准,代码编辑器及IDE(集成开发环境)使用VS Code. ...

  6. Qt 调用 Windows 接口实现窗口置顶

    前言 用 Qt 做 Windows 软件开发,有时候会用到窗口置顶功能,其实 Qt 有自带的接口来实现窗口置顶,但是效果并不太理想,比如说没办法置顶于系统标题栏,或者在全屏状态下如果有键盘事件的时候窗 ...

  7. Windows 任意窗口置顶显示

    让任意窗口置顶显示 Window TopMost Control 是一款非常小巧简单的 Windows 软件,功能也只有一个--就是让任意窗口置顶显示. 官网:Window TopMost Contr ...

  8. 运行python程序的cmd窗口置顶状态和与最小化有什么区别

    运行python程序的cmd窗口置顶状态表示该窗口将一直保持在其他窗口的最上面,即使用户在操作其他窗口时也能看到它.而最小化则表示该窗口将被隐藏,用户需要在任务栏中寻找并打开它.

  9. 设置窗口置顶_这三个应用,每一个都能让你置顶。

    | 当你有多个窗口同时打开,置顶其中某个或某些,能够方便你对比.学习.抄写--但不是所有软件都有这个功能,所以你需要今天的小干货.| ----------- 你的高效生活视频书. 将窗口置顶,可以方便 ...

最新文章

  1. 接口访问次数_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定
  2. 字节跳动面试官:你离50w年薪就差答对了这个算法题!
  3. MapReduce 计数器简介
  4. Unet项目解析(5): 数据封装、数据加载、数据显示
  5. java 原子类能做什么_Java原子类中可以靠版本号比较为什么还需要CAS操作??
  6. Java命令学习系列(三)——Jmap
  7. React开发(235):document.body.clientHeight
  8. “约见”面试官系列之常见面试题之第五十篇之title和alt的区别(建议收藏)
  9. c语言上机填空改错试题,2013年计算机二级C语言上机试题六十二及答案
  10. python给函数设置超时时间已到_在 Linux/Mac 下为Python函数添加超时时间
  11. weka下载安装以及源码运行
  12. 原码、反码、补码以及补码是怎么来的
  13. 网站防止CC攻击的方法,CC攻击原理及防范方法
  14. win10系统重装鼠标右键响应慢怎么办
  15. A记录、CNAME、MX记录、NS记录的区别和联系
  16. 【react】---Hooks的基本使用---【巷子】
  17. DOTA高考全国卷A卷
  18. 互联网大佬纷纷搞养殖,这是为哪般~~~
  19. linux 筛选文件,「Linux基础知识」grep文件内容筛选命令的使用
  20. arcgis javascript Measurement的使用

热门文章

  1. 台式电脑网络连接配置异常_看完才明白,电脑一体机和台式机哪个好?
  2. 数据权限实现方案遐想
  3. MySQL批量插入与更新
  4. C++小技巧之反转字符串
  5. win7防火墙允许程序列表中没有远程桌面这一项,怎么添加回来
  6. 导入excel表格识别表格中数据得到一个List集合
  7. 视频交友直播软件源码开发的必备功能讲解
  8. 数据库中长连接和短连接的区别分析
  9. linux-12月第三周-软件管理
  10. 从ofo小黄车谈人性