| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1677 人关注过本帖
标题:[原创] 获取 标题窗口有空格,类名称是乱码的窗口句柄方法
取消只看楼主 加入收藏
miker99
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-9-13
收藏
 问题点数:0 回复次数:0 
[原创] 获取 标题窗口有空格,类名称是乱码的窗口句柄方法

感谢 szyicol 的支持
1、建立一个标准工程

2、添加一个标准模块

3、再工程里添加一个listbox列表框

4、添加2个command 1个timer

将下面代码复制到,标准模块内

Option Explicit

Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long


'该函数是EnumWindows的回调函数,EnumWindows函数将遍历的窗口句柄传递到hwnd参数中
Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim astr As String * 256
Dim L As Long

L = GetWindowText(hwnd, astr, Len(astr)) '得到窗口的标题
If InStr(astr, " ") > 1 Then
If InStr(LCase(astr), LCase("你要查找的标题-关键字")) > 0 And InStr(LCase(astr), LCase(" - ")) = 0 Then '将关键字换成你的就行了

Form1.Combo1.AddItem Left(astr, InStr(1, astr, Chr(0)) - 1) & vbCrLf & hwnd
End If
End If
EnumWindowsProc = True
End Function


5、将下面代码复制到form1模块内(窗体模块内)

Option Explicit

Private Sub Command1_Click()
Timer1.Enabled = True '启动开查找时钟
End Sub

Private Sub command2_click()
Timer1.Enabled = False '停止开始查找时钟
End Sub

Private Sub Timer1_Timer()
Call RefreshList
End Sub
Sub RefreshList()
On Error Resume Next
Dim L As Long
Dim k As Long
k = Combo1.ListIndex
Combo1.Clear
L = EnumWindows(AddressOf EnumWindowsProc, 0)
If Combo1.ListCount > 0 Then Combo1.ListIndex = k

End Sub

6、将查找关键字换成你要查找的关键字,运行即可,获得窗体名称与句柄。

[此贴子已经被作者于2007-3-9 23:43:16编辑过]

搜索更多相关主题的帖子: 句柄 空格 乱码 窗口 名称 
2007-03-09 23:28
快速回复:[原创] 获取 标题窗口有空格,类名称是乱码的窗口句柄方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021852 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved