易语言窗口c_句柄取进程名,易语言枚举进程通过窗口句柄获取已经登录的QQ号码...

DLL命令表

.版本 2

.DLL命令 GetDesktopWindow, 整数型, "user32.dll", "GetDesktopWindow"

.DLL命令 CreateToolhelp32Snapshot, 整数型, "kernel32", "CreateToolhelp32Snapshot"

.参数 dwFlags, 整数型, , 0

.参数 th32ProcessIE, 整数型, , 0

.DLL命令 Process32First, 整数型, "kernel32", "Process32First"

.参数 hSnapshot, 整数型, , 0

.参数 lppe, 进程信息列表, , 0

.DLL命令 CloseHandle, 逻辑型, "Kernel32", "CloseHandle", , 关闭打开的对象句柄

.参数 hObject, 整数型, , 要关闭的对象句柄

.DLL命令 GetWindowTextA, 整数型, "user32.dll", "GetWindowTextA", , 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性) 复制到lpString的字串长度;不包括空中止字符。会设置GetLastError

.参数 hWnd, 整数型, , 欲获取文字的那个窗口的句柄

.参数 lpString, 文本型, 传址, 预定义的一个缓冲区,至少有cch 1个字符大小;随同窗口文字载入

.参数 nMaxCount, 整数型, , lp缓冲区的长度;

.DLL命令 GetWindowTextLength, 整数型, "user32", "GetWindowTextLengthA", 公开

.参数 hwnd, 整数型

.DLL命令 Process32Next, 整数型, "kernel32", "Process32Next", , 获得下一个进程的句柄

.参数 hSnapshot, 整数型, , 0

.参数 lppe, 进程信息列表, , 0

.DLL命令 GetWindow, 整数型, , "GetWindow"

.参数 源窗口, 整数型

.参数 关系, 整数型

自定义数据类型表

.版本 2

.数据类型 进程信息列表, 公开

.成员 dwSize, 整数型, , , 1

.成员 cntUsage, 整数型, , , 2

.成员 进程ID, 整数型, , , 3

.成员 th32DefaultHeapID, 整数型, , , 4

.成员 th32ModuleID, 整数型, , , 5

.成员 cntThreads, 整数型, , , 6

.成员 th32ParentProcessID, 整数型, , , 7

.成员 pcPriClassBase, 整数型, , , 8

.成员 dwFlags, 整数型, , , 9

.成员 进程名称, 字节型, , "256", 10

窗口句柄方式取已登陆QQ号码的代码

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 _启动子程序, 整数型

.局部变量 返回的QQ号码, 文本型

.局部变量 分割的文本, 文本型, , "0"

返回的QQ号码 = 系统_取已登陆QQ号码 ()

分割的文本 = 分割文本 (返回的QQ号码, #换行符, )

信息框 (“有” + 到文本 (取数组成员数 (分割的文本)) + “个QQ” + #换行符 + 返回的QQ号码, 0, )

返回 (0)

.子程序 窗口_取标题, 文本型, 公开

.参数 窗口句柄, 整数型

.局部变量 局_缓冲区, 文本型

.局部变量 局_缓冲大小

局_缓冲大小 = GetWindowTextLength (窗口句柄) + 1

局_缓冲区 = 取空白文本 (局_缓冲大小)

GetWindowTextA (窗口句柄, 局_缓冲区, 局_缓冲大小)

返回 (局_缓冲区)

.子程序 窗口_枚举窗口句柄, 整数型, 公开, 通过窗口任务关系来枚举所有窗口,返回窗口句柄数目,失败返回0

.参数 句柄数组, 整数型, 可空 数组, 返回的所有窗口句柄数组

.局部变量 窗口句柄, 整数型

清除数组 (句柄数组)

窗口句柄 = GetWindow (GetDesktopWindow (), 5)

.判断循环首 (窗口句柄 ≠ 0)

加入成员 (句柄数组, 窗口句柄)

窗口句柄 = GetWindow (窗口句柄, 2)

.判断循环尾 ()

返回 (取数组成员数 (句柄数组))

.子程序 进程_取ID数组, 整数型, 公开, 取指定进程名称的所有进程的进程ID(返回进程ID数目,没有返回0)

.参数 进程名, 文本型, , 程序进程名

.参数 进程ID数组, 整数型, 参考 数组, 返回的进程ID 数组

.参数 区分大小写, 逻辑型, 可空, 默认不区分进程名大小写

.局部变量 信息, 进程信息列表

.局部变量 进程快照, 整数型

.局部变量 进程句柄, 整数型

清除数组 (进程ID数组)

进程快照 = CreateToolhelp32Snapshot (15, 0)

.如果真 (进程快照 = 0)

返回 (0)

.如果真结束

信息.dwSize = 1024

进程句柄 = Process32First (进程快照, 信息)

.判断开始 (区分大小写)

.判断循环首 (进程句柄 ≠ 0)

.如果真 (进程名 = 到文本 (信息.进程名称))

加入成员 (进程ID数组, 信息.进程ID)

.如果真结束

进程句柄 = Process32Next (进程快照, 信息)

.判断循环尾 ()

.默认

.判断循环首 (进程句柄 ≠ 0)

.如果真 (到小写 (进程名) = 到小写 (到文本 (信息.进程名称)))

加入成员 (进程ID数组, 信息.进程ID)

.如果真结束

进程句柄 = Process32Next (进程快照, 信息)

.判断循环尾 ()

.判断结束

CloseHandle (进程快照)

返回 (取数组成员数 (进程ID数组))

.子程序 系统_取已登陆QQ号码, 文本型, 公开, 成功返回QQ号码,如果是多个QQ号码以#换行符分开,其他的都返回空

.局部变量 局_窗口标题, 文本型

.局部变量 局_变量文本, 文本型

.局部变量 局_分割的文本, 文本型, , "0"

.局部变量 局_进程ID数目, 整数型

.局部变量 计次, 整数型

.局部变量 i, 整数型

.局部变量 局_进程ID数组, 整数型, , "0"

.局部变量 局_窗口数目, 整数型

局_进程ID数目 = 进程_取ID数组 (“QQ.exe”, 局_进程ID数组)

计次 = 1

局_窗口数目 = 窗口_枚举窗口句柄 (局_进程ID数组)

.计次循环首 (局_窗口数目, i)

局_窗口标题 = 窗口_取标题 (局_进程ID数组 [i])

.如果真 (寻找文本 (局_窗口标题, “qqexchangewnd_shortcut_prefix”, , 假) ≠ -1)

局_分割的文本 = 分割文本 (局_窗口标题, “_”, )

.判断开始 (计次 = 局_进程ID数目)

局_变量文本 = 局_变量文本 + 局_分割的文本 [取数组成员数 (局_分割的文本)]

计次 = 计次 + 1

.默认

局_变量文本 = 局_变量文本 + 局_分割的文本 [取数组成员数 (局_分割的文本)] + #换行符

计次 = 计次 + 1

.判断结束

.如果真结束

.如果真 (计次 > 局_进程ID数目)

跳出循环 ()

.如果真结束

.计次循环尾 ()

返回 (局_变量文本)

运行结果:

dde30b9204a696d89f697fc49c2d2d21.png

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取窗口句柄可以使用Windows API函数FindWindow或FindWindowEx。以下是用易语言实现获取窗口句柄的示例代: ```vb ' 引入Windows API函数 Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long ' 查找指定窗口标题的顶级窗口句柄 Function FindTopLevelWindow(ByVal Title As String) As Long FindTopLevelWindow = FindWindow(vbNull, StrPtr(Title)) End Function ' 查找指定父窗口窗口标题的子窗口句柄 Function FindChildWindow(ByVal ParentHwnd As Long, ByVal ClassName As String, ByVal Title As String) As Long FindChildWindow = FindWindowEx(ParentHwnd, 0, StrPtr(ClassName), StrPtr(Title)) End Function ' 示例用法 Sub Main() Dim hWnd As Long ' 查找记事本主窗口句柄 hWnd = FindTopLevelWindow("无标题 - 记事本") If hWnd <> 0 Then ' 查找记事本编辑框子窗口句柄 hWnd = FindChildWindow(hWnd, "Edit", vbNullString) If hWnd <> 0 Then MsgBox "找到编辑框句柄:" & hWnd Else MsgBox "未找到编辑框句柄" End If Else MsgBox "未找到记事本主窗口句柄" End If End Sub ``` 上述代中,FindWindow函数用于查找顶级窗口句柄,FindWindowEx函数用于查找子窗口句柄。函数的参数lpClassName和lpWindowName分别表示窗口窗口标题,可以通过vbNull或vbNullString表示为空。StrPtr函数用于将字符串转换为指向该字符串的指针,以便传递给API函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值