简体   繁体   中英

C# FindWindowEx - I Can't Find Teamviewer Panel

I have a program running on my PC that controls another machine via TeamViewer. It all works fine except that sending a mouse click requires TeamViewer to be in the foreground. I have code that sends mouse clicks to programs like Notepad where the edit panel is called "Edit." But the TeamViewer panel is called TV_REMOTEDESKTOP_CLASS and FindWindowEx fails to find its handle.

Here is my code:

IntPtr handle = WinGetHandle("axie_machine");
if (handle != IntPtr.Zero)
{
    var panel = FindWindowEx(handle, IntPtr.Zero, "TV_REMOTEDESKTOP_CLASS", null);
    PerformRightClick(panel, new Point(200, 200));
}

Here is the image of Spy++ showing the details of the panel

FindWindowEx returns 0x000000.

Can anyone see what I am doing wrong with FindWindowEx and point in the right direction?

Assuming by WinGetHandle("axie_machine") , you're getting the handle of the TeamViewer window using (part of) its title, then, you're actually getting the handle of the top-level window which your target window whose class is "TV_REMOTEDESKTOP_CLASS" is not a child of. It is one of its descendants, but not a direct child. There's one parent window in between as you can see here:

在此处输入图像描述

So, change your code to get the parent window of your target "panel" and then use that to get to the target. The code should looks something like the following:

IntPtr tvWindowHandle = WinGetHandle("axie_machine");
if (tvWindowHandle != IntPtr.Zero)
{
    var panelParent = FindWindowEx(tvWindowHandle, IntPtr.Zero, "ATL:03B8D350", null);
    if (panelParent != IntPtr.Zero)
    {
        var panel = FindWindowEx(panelParent, IntPtr.Zero, "TV_REMOTEDESKTOP_CLASS", null);
        PerformRightClick(panel, new Point(200, 200));
    }
}

Note: You might want to double-check the class of the parent window. It was "ATL:03B8D350" in my version of TV but it might be different for you if you're using another version.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM