首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Teamviewer破坏GetWindowRect

Teamviewer破坏GetWindowRect
EN

Stack Overflow用户
提问于 2013-11-12 09:46:09
回答 2查看 431关注 0票数 1

我试图抓住一个窗口的进程名称和焦点,然后采取屏幕截图。除非我打开了Teamviewer (即使在使用teamviewer进行屏幕共享时,就在teamviewer运行时),否则它将非常完美地工作。

当teamviewer运行时,窗口没有聚焦或显示在前台,而它的屏幕截图非常小(33x21),通常是1600x900。

下面是所讨论的代码:

代码语言:javascript
复制
        proc = Process.GetProcessesByName(procName)[0];
        SetForegroundWindow(proc.MainWindowHandle);
        ShowWindow(proc.MainWindowHandle, SW_RESTORE);

        Rect rect = new Rect();
        GetWindowRect(proc.MainWindowHandle, ref rect);

        int width = rect.right - rect.left;
        int height = rect.bottom - rect.top;

        Bitmap bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
        Graphics.FromImage(bmp).CopyFromScreen(rect.left, rect.top, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy);

这里是我获得这些功能的地方:

代码语言:javascript
复制
    [DllImport("user32.dll")]
    private static extern IntPtr ShowWindow(IntPtr hWnd, int nCmdShow);

    [DllImport("user32.dll")]
    public static extern IntPtr GetWindowRect(IntPtr hWnd, ref Rect rect);

    [DllImport("user32.dll")]
    private static extern int SetForegroundWindow(IntPtr hWnd);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-12 06:08:05

我也发现teamViewer破坏了UI自动化。禁用“呈现此应用程序”功能将重新启用UI自动化。

票数 1
EN

Stack Overflow用户

发布于 2014-04-08 22:34:05

我也遇到过类似的问题。在两台Windows7Pro计算机上,我注意到TeamViewer客户端运行的代码停止工作。

代码语言:javascript
复制
var wordProcess = Process.GetProcessesByName("winword")
    .FirstOrDefault(process => process.MainWindowTitle.Contains(documentName));

设置断点并检查单个正在运行的WINWORD进程显示,大多数情况下Process.MainWindowTitle属性是空白的。当WinWord窗口任务栏图标清晰地显示标题时。

退出TeamViewer会将事情恢复到正常状态:每次正确填充Process.MainWindowTitle。

我已经向TeamViewer小组报告了这个问题。

测试用: TeamViewer 9 ver。9.0.27339,设置为无人看管;MS Word 2007

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19925749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档