首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

通过API 如何获取指定窗口的句柄

2012-02-27 
通过API怎么获取指定窗口的句柄Private Declare Function FindWindow Lib user32 Alias FindWindowA (

通过API 怎么获取指定窗口的句柄
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long

  Private Sub Command1_Click()
  Dim WindowHandle As Long, ChildWindowHandle As Long
   
  WindowHandle = FindWindow(vbNullString, "无标题 - 记事本")
   


  If WindowHandle Then '如果获取句柄成功
   
  ChildWindowHandle = FindWindowEx(WindowHandle, 0, "Edit", vbNullString)
   
  If ChildWindowHandle Then '如果成功获取子句柄
  EnableWindow ChildWindowHandle, False '禁用子窗口
  Else
  MsgBox "无法获取子窗口"
  End If
  End If
  End Sub

 
我 每次获取得到的结果都是0,我也新建了一个《无标题 - 记事本.txt》并且放在项目的文件夹中并且打开了《无标题 - 记事本.txt》 但为什么每次还是WindowHandle=0呢

[解决办法]
不是新建无标题记事本,是直接打开一个附件的记事本
If ChildWindowHandle Then 改为
If ChildWindowHandle>0 Then
[解决办法]
应该是你的 无标题 - 记事本 写错了, 我试验了是OK的。注意 - 是英文输入法下的 - 而非 中文输入法下的 -

且格式应该是: 无标题 空格 横杠 空格 记事本

VB code
lngWindowHwnd = FindWindow(vbNullString, "无标题 - 记事本")
[解决办法]
不是新建无标题记事本,是直接打开一个附件的记事本
我的能实现~~~!!
你新建的记事本文件,你看看窗体的标题变了,不是“无标题 - 记事本”,而是“无标题 - 记事本.txt - 记事本”了,标题变了怎么还能获取啊~~~

热点排行