【问题标题】:Find window by class name按类名查找窗口
【发布时间】:2021-09-24 19:44:40
【问题描述】:

我想关闭某个窗口。

Spy++ 告诉我该窗口的类名为“ad_win#2”:

但是,当我这样使用 FindWindow 时...

Public Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

 Dim lRet&
 lRet = FindWindow("ad_win#2", vbNullString)

.... lRet 为 0,表示没有找到任何窗口。

我做错了什么?

谢谢!

【问题讨论】:

  • "ad_win#2" 这是 vb6 中的 ansi 还是 unicode 字符串? String 在 vb6 - unicode 或 ansi 是什么意思?
  • 有问题的窗口是另一个窗口的子窗口吗?如果有,先找到父窗口,再用FindWindowEx()找到子窗口。
  • @RemyLebeau 我怎么知道?
  • @RbMm 您的评论使我在该窗口句柄上使用 GetClassName 并查看它产生了什么。我可以看到它在 VB6 中的名称末尾有一个 ChrW(10)。
  • @tmighty "我怎么知道?" - Spy++ 向您展示父/子关系。一旦您使用您正在查看的对话框找到一个窗口,然后按 OK,Spy++ 将向您显示与其他窗口相关的窗口。

标签: winapi vb6


【解决方案1】:

当我将 ChrW(10) 添加到这样的名称时,它可以工作:

Dim lRet&
lRet = FindWindow("ad_win#2" & ChrW(10), vbNullString)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    相关资源
    最近更新 更多