————————代码分割线——————————————
.局部变量 记事本窗口句柄, 整数型
.局部变量 记事本进程标识, 整数型
' 需要启动一个记事本程序
记事本窗口句柄 = FindWindow (“notepad”, 字符 (0))
GetWindowThreadProcessId (记事本窗口句柄, 记事本进程标识)
调试输出 (“记事本窗口句柄”, 记事本窗口句柄)
调试输出 (“记事本窗口标题”, 取窗口标题 (记事本窗口句柄))
调试输出 (“记事本进程标识”, 记事本进程标识)
调试输出 (“记事本父窗口句柄”, GetParent (记事本窗口句柄))
调试输出进程窗口句柄 (记事本进程标识, GetParent (记事本窗口句柄))
结束 ()
.子程序 调试输出进程窗口句柄
.参数 进程标识, 整数型
.参数 父窗口句柄, 整数型, 可空, 省略为0,表示桌面为父窗口
.局部变量 临时窗口句柄, 整数型
.局部变量 临时进程句柄, 整数型
.局部变量 临时进程标识, 整数型
.如果真 (是否为空 (父窗口句柄))
父窗口句柄 = 0
.如果真结束
临时窗口句柄 = FindWindowEx (父窗口句柄, 0, 字符 (0), 字符 (0))
' 调试输出 (临时窗口句柄)
GetWindowThreadProcessId (临时窗口句柄, 临时进程标识)
.判断循环首 (临时窗口句柄 > 0)
GetWindowThreadProcessId (临时窗口句柄, 临时进程标识)
临时窗口句柄 = FindWindowEx (父窗口句柄, 临时窗口句柄, 字符 (0), 字符 (0))
.如果真 (进程标识 = 临时进程标识)
调试输出 (进程标识, 临时窗口句柄)
.如果真结束
.判断循环尾 ()
.DLL命令 FindWindowEx, 整数型, "user32", "FindWindowExA"
.参数 父窗口句柄, 整数型
.参数 开始句柄, 整数型
.参数 子窗口或控件类名, 文本型
.参数 子窗口或控件控件标题, 文本型
.DLL命令 GetWindowThreadProcessId, 整数型, "user32", "GetWindowThreadProcessId"
.参数 hWnd, 整数型
.参数 lpdwProcessId, 整数型, 传址
.DLL命令 FindWindow, 整数型, "user32.dll", "FindWindowA"
.参数 窗口类名, 文本型
.参数 窗口标题, 文本型
.DLL命令 GetParent, 整数型
.参数 hWnd, 整数型
————————代码分割线:下面是运行N次的输出结果示例——————————————
* “记事本窗口句柄” | 526292
* “记事本窗口标题” | “无标题 - 记事本”
* “记事本进程标识” | 156
* “记事本父窗口句柄” | 0
* 156 | 526294
* 156 | 526292
* 156 | 262858
* “记事本窗口句柄” | 524672
* “记事本窗口标题” | “无标题 - 记事本”
* “记事本进程标识” | 1948
* “记事本父窗口句柄” | 0
* 1948 | 2228936
* 1948 | 524672
* 1948 | 65758
++++++++++++++++++++++++
我发现进程标识符的数值都比句柄要小,看起来不像是唯一的值啊,这个唯一是相对什么来说的,为什么所有的百度资料都说是唯一的值?
.局部变量 记事本窗口句柄, 整数型
.局部变量 记事本进程标识, 整数型
' 需要启动一个记事本程序
记事本窗口句柄 = FindWindow (“notepad”, 字符 (0))
GetWindowThreadProcessId (记事本窗口句柄, 记事本进程标识)
调试输出 (“记事本窗口句柄”, 记事本窗口句柄)
调试输出 (“记事本窗口标题”, 取窗口标题 (记事本窗口句柄))
调试输出 (“记事本进程标识”, 记事本进程标识)
调试输出 (“记事本父窗口句柄”, GetParent (记事本窗口句柄))
调试输出进程窗口句柄 (记事本进程标识, GetParent (记事本窗口句柄))
结束 ()
.子程序 调试输出进程窗口句柄
.参数 进程标识, 整数型
.参数 父窗口句柄, 整数型, 可空, 省略为0,表示桌面为父窗口
.局部变量 临时窗口句柄, 整数型
.局部变量 临时进程句柄, 整数型
.局部变量 临时进程标识, 整数型
.如果真 (是否为空 (父窗口句柄))
父窗口句柄 = 0
.如果真结束
临时窗口句柄 = FindWindowEx (父窗口句柄, 0, 字符 (0), 字符 (0))
' 调试输出 (临时窗口句柄)
GetWindowThreadProcessId (临时窗口句柄, 临时进程标识)
.判断循环首 (临时窗口句柄 > 0)
GetWindowThreadProcessId (临时窗口句柄, 临时进程标识)
临时窗口句柄 = FindWindowEx (父窗口句柄, 临时窗口句柄, 字符 (0), 字符 (0))
.如果真 (进程标识 = 临时进程标识)
调试输出 (进程标识, 临时窗口句柄)
.如果真结束
.判断循环尾 ()
.DLL命令 FindWindowEx, 整数型, "user32", "FindWindowExA"
.参数 父窗口句柄, 整数型
.参数 开始句柄, 整数型
.参数 子窗口或控件类名, 文本型
.参数 子窗口或控件控件标题, 文本型
.DLL命令 GetWindowThreadProcessId, 整数型, "user32", "GetWindowThreadProcessId"
.参数 hWnd, 整数型
.参数 lpdwProcessId, 整数型, 传址
.DLL命令 FindWindow, 整数型, "user32.dll", "FindWindowA"
.参数 窗口类名, 文本型
.参数 窗口标题, 文本型
.DLL命令 GetParent, 整数型
.参数 hWnd, 整数型
————————代码分割线:下面是运行N次的输出结果示例——————————————
* “记事本窗口句柄” | 526292
* “记事本窗口标题” | “无标题 - 记事本”
* “记事本进程标识” | 156
* “记事本父窗口句柄” | 0
* 156 | 526294
* 156 | 526292
* 156 | 262858
* “记事本窗口句柄” | 524672
* “记事本窗口标题” | “无标题 - 记事本”
* “记事本进程标识” | 1948
* “记事本父窗口句柄” | 0
* 1948 | 2228936
* 1948 | 524672
* 1948 | 65758
++++++++++++++++++++++++
我发现进程标识符的数值都比句柄要小,看起来不像是唯一的值啊,这个唯一是相对什么来说的,为什么所有的百度资料都说是唯一的值?











