Ein*_*son 8 c# winapi window-handles findwindow
我正在尝试在我的进程中获取子窗口上的窗口句柄,我唯一的信息是窗口类名称.我可以使用任何win32函数吗?我是用C#做的.
更详细一点:这是一个用C#编写的Visual Studio插件.所以我的过程是visual studio,它有很多窗口.其中一个有一个窗口类"VsTipWindow".我不知道那个窗口的直接父窗口,我只有类名.有没有办法让我从那个窗口处理?
首先应该注意的是,窗口和窗口类之间不存在一对一的关系,多个窗口可以使用同一类。
我猜你唯一的选择是从顶级 Visual Studio 窗口开始递归调用 EnumChildWindows (或者窗口层次结构中更高的其他窗口,如果你知道它是 VsTipWindow 窗口的祖父母)在 EnumChildWindows 的回调函数中,你可以调用GetClassName 并将该字符串与 VsTipWindow 进行比较,直到找到该窗口。
由于您谈到了未知的父级,我假设您正在寻找一个子窗口,但如果该窗口是顶级窗口,则需要使用 EnumWindows (并且您可能应该使用 GetWindowThreadProcessId 来确保在之后也获得正确的进程你找到一个具有该类名的窗口)
(我确信 .NET 具有与本机 api 执行相同操作的函数,否则您必须 PInvoke)