Teamviewer 停止工作 GetWindowText (User32.dll) 功能

Posted

技术标签:

【中文标题】Teamviewer 停止工作 GetWindowText (User32.dll) 功能【英文标题】:Teamviewer stops working GetWindowText (User32.dll) Function 【发布时间】:2021-01-29 15:40:18 【问题描述】:

我开发了一个访问 user32.dll 的 C# 代码,它使用 GetWindowText 函数。在 Windows 7 上卸载 Teamviewer 后,代码可以正常运行。

但是如果你安装了Teamviewer,代码不能用GetWindowText函数检索窗口中的控件文本。代码如下。我该如何解决这个问题?

     [DllImport("user32.dll", CharSet = CharSet.Auto)]
     static extern IntPtr FindWindowExW(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, 
     string lpszWindow);

     [DllImport("user32.dll", CharSet = CharSet.Auto)]
     static extern IntPtr GetWindowText(IntPtr hwndParent, StringBuilder Wintxt, int txtsize);


     public void CloseWin(string param)
    
        try
        
         IntPtr hwnD = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "CabinetWClass", null);
         IntPtr hwnD2 = FindWindowExW(hwDvar, IntPtr.Zero, "WorkerW", null);
         IntPtr hwnD3 = FindWindowExW(hwnD2, IntPtr.Zero, "ReBarWindow32", null);
         IntPtr hwnD4 = FindWindowExW(hwnD3, IntPtr.Zero, "Address Band Root", null);
         IntPtr hwnD5 = FindWindowExW(hwnD4, IntPtr.Zero, "msctls_progress32", null);
         IntPtr hwnD6 = FindWindowExW(hwnD5, IntPtr.Zero, "Breadcrumb Parent", null);
         IntPtr hwnD7 = FindWindowExW(hwnD6, IntPtr.Zero, "ToolbarWindow32", null);
         StringBuilder sb = new StringBuilder(255);
         GetWindowText(hwnD7, sb, 255);

【问题讨论】:

【参考方案1】:

好吧,我已经解决了这个问题。我还通过类名#32770 调用了带有函数 FindWindowEx 的对话框文件类。

Teamviewer(TV) 快速支持用户界面也使用此类类型。当我运行我的代码时,会对电视界面和工作 user32 功能块进行干预。

为了解决这个问题,我用类名和控件名调用了 FindWindow 函数,这样就不会干预电视,问题就解决了。

【讨论】:

以上是关于Teamviewer 停止工作 GetWindowText (User32.dll) 功能的主要内容,如果未能解决你的问题,请参考以下文章

如何远程启动和停止服务

远程控制软件Teamviewer13绿色版出来了

debian 9 安装 teamviewer 13

如何修改设置让TeamViewer继续免费使用?

QApplication::alert 如果窗口不是活动窗口,则会向窗口显示一个警告(非常好用,效果就和TeamViewer一样)

关于关闭远程后teamviewer无法连接问题