背景

需要用AutoIt3控制QQ音乐播放器,首先要获取QQ音乐的窗口句柄

问题

WinGetHandle方法不能满足要求
QQ音乐的Title会根据当前播放的歌曲动态改变
而QQ音乐与QQ的窗口Class又相同,同时打开时无法用窗口Class拿到QQ音乐窗口句柄

解决办法

自己写一个_WinGetHandleByPnmAndCls方法,使用进程名(QQMusic.exe)和窗口Class(TXGuiFoundation)获得窗口句柄

代码如下

#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>Local $hWnd = _WinGetHandleByPnmAndCls("QQMusic.exe", "TXGuiFoundation")If Not $hWnd ThenMsgBox($MB_SYSTEMMODAL, "", "窗口没找到")Exit
EndIfWinActivate($hWnd); 根据pname和class获取窗口句柄,找不到则返回0
Func _WinGetHandleByPnmAndCls($pname, $class); 根据进程名查找进程idLocal $pid = ProcessExists($pname); 如果进程存在,继续If $pid Thenreturn _WinGetHandleByPidAndCls($pid, $class)ElseReturn 0EndIf
EndFunc; 根据pid和class获取窗口句柄,找不到则返回0
Func _WinGetHandleByPidAndCls($pid, $class); 这里使用枚举所有顶层窗口方法,WinList方法会返回大量隐藏窗口Local $winArr = _WinAPI_EnumWindowsTop(); 遍历所有窗口,进程id与指定进程id比较For $i=1 To $winArr[0][0]If $pid=WinGetProcess($winArr[$i][0]) And $winArr[$i][1]=$class Then; 一个进程会有多个窗口,所以要用class来筛选return $winArr[$i][0]EndIfNextReturn 0
EndFunc

AutoIt3 使用进程名获取窗口句柄相关推荐

  1. 511遇见易语言API模块通过进程名获取进程句柄

    上节课通过进程名称获取进程ID,然后再通过进程ID来获取窗口句柄,本课直接通过进程名称来获取窗口句柄,其实是对 进程_名取ID 和 进程_ID取窗口句柄 一个应用组合封装.通过进程名称取得相应的窗口的 ...

  2. win32 获取窗口句柄的方法

    第一种方法是根据窗口句柄值获取窗口句柄 使用spy++获取指定窗口的窗口句柄值,因为句柄值是16进制数,所以前面加0x,然后进行强制转换为HWND类型. HWND hWnd=(HWND)0x00280 ...

  3. linux c pid获取进程名 进程名获取pid

    Liunx中 通过进程名查找进程PID可以通过 pidof [进程名] 来查找.反过来 ,相同通过PID查找进程名则没有相关命令. 在linux根目录中,有一个/proc的VFS(虚拟文件系统),系统 ...

  4. Python 技术篇-通过进程名获取进程pid实例演示,使用psutil库获取进程id

    psutil.process_iter() 方法可以返回进程列表信息,再通过匹配名称,获取进程的 pid 即可. import psutildef get_pid(name):'''作用:根据进程名获 ...

  5. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法

    1.0 获取浏览器窗口坐标 python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现"Command not ...

  6. VC++如何根据进程名获取进程ID

    VC++如何根据进程名获取进程ID #include <Tlhelp32.h> UINT GetProcessIdByName(LPCTSTR pszExeFile) { UINT nPr ...

  7. delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图

    利用Python自带的win32api和win32con.win32gui等模块,我们能执行许多windows下的自动化操作.比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图操 ...

  8. win32根据进程名获取进程ID或者终止进程

    第一部分: 根据进程名获取进程ID. 首先我们需要了解三个windows API函数: HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWO ...

  9. 通过Windows进程ID获取窗口句柄

    通过Windows进程ID获取窗口句柄 方法一:使用EnumWindows的方式 ///< 枚举窗口参数 typedef struct { HWND hwndWindow; // 窗口句柄 DW ...

最新文章

  1. python编程100例头条-python爬虫演示:以爬取今日头条为例
  2. boost::hana::one用法的测试程序
  3. arduino i2c 如何写16位寄存器_Arduino之我见
  4. Codeforces Round #344 (Div. 2) B. Print Check
  5. 前端学习(3013):vue+element今日头条管理--表单验证基本使用
  6. 泥塑课c语言,【C】泥塑课(From http://www.jisuanke.com/)
  7. 微课|中学生可以这样学Python(1.2节):IDLE环境使用简介
  8. 太大如何翻页固定表头_外行学 Python 爬虫 第六篇 动态翻页
  9. Hive与数据库的异同
  10. UltraISO 创建的虚拟光驱更改盘符
  11. 好的串行代码与好的并行代码的区别(Zz)
  12. ibatis mysql 配置文件详解_Mybatis主配置文件的properties标签详解
  13. VMware Perl SDK error “Server Version Unavailable .. line 545”
  14. arcface的前世今生
  15. 计算机科技英语写作,英语科技写作
  16. Scrum如何拥抱变化
  17. 主板上集成显卡的计算机在进行显示工作,电脑显卡怎么看
  18. Aleo Wagyu钱包
  19. Fiddler原理+雷电模拟器进行APP抓包
  20. 初识MFC----MFC简介

热门文章

  1. PHP 使用 phpmailer 发送电子邮件
  2. (跟我一起来学区块链(1.4))之区块链的分类
  3. 开源软件与自由软件的区别——个人体会
  4. uni-app常用组件
  5. 关于个人所得税的计算方法及税率
  6. arcgis打开mdb数据库_ARCGIS打开mdb数据库,全是表格,怎么转成shp格式?
  7. 使用动态IP+MDaemon架设邮件服务器
  8. 实现高德坐标转GPS坐标
  9. mysql 同步到es_mysql数据实时同步到Elasticsearch
  10. php include 加载html页面,html include标签的用法详解(附使用实例)