我试图抓住一个窗口的进程名称和焦点,然后采取屏幕截图。除非我打开了Teamviewer (即使在使用teamviewer进行屏幕共享时,就在teamviewer运行时),否则它将非常完美地工作。
当teamviewer运行时,窗口没有聚焦或显示在前台,而它的屏幕截图非常小(33x21),通常是1600x900。
下面是所讨论的代码:
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);这里是我获得这些功能的地方:
[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);发布于 2014-12-12 06:08:05
我也发现teamViewer破坏了UI自动化。禁用“呈现此应用程序”功能将重新启用UI自动化。
发布于 2014-04-08 22:34:05
我也遇到过类似的问题。在两台Windows7Pro计算机上,我注意到TeamViewer客户端运行的代码停止工作。
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
https://stackoverflow.com/questions/19925749
复制相似问题