微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用C#和远程桌面问题捕获屏幕

我有一个C尖锐的控制台应用程序捕获多次MS Word文档的屏幕截图。 它工作的很好,但是当我把这个应用程序在远程的Windows XP机器上,它工作正常,而我在远程即我的远程桌面是可见的,但如果我运行我的应用程序,离开远程桌面(尽量减less,甚至没有注销,我想做 )截图需要的是空白的!

屏幕截图应用程序由作为SYstem用户运行的服务运行。

即使在没有用户连接的情况下,我如何保持GUI的活动状态?

这是我使用的代码

所有者绘制文本框在WinForms中使用

C#挂钩Windows进程来检查debugging进程

如何在特定条件下隐藏UWPpopup窗口

确定Hyper-V当前是否处于活动状态(未安装或未configuration)

我的本地主机变得如此之慢,我在Windows 7和Asp.net MVC

public Image CaptureWindow(IntPtr handle) { // get te hDC of the target window IntPtr hdcSrc = User32.GetwindowDC(handle); // get the size User32.RECT windowRect = new User32.RECT(); User32.GetwindowRect(handle,ref windowRect); int width = windowRect.right - windowRect.left; int height = windowRect.bottom - windowRect.top; // create a device context we can copy to IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc); // create a bitmap we can copy it to,// using GetDeviceCaps to get the width/height IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc,width,height); // select the bitmap object IntPtr hOld = GDI32.SelectObject(hdcDest,hBitmap); // bitblt over GDI32.BitBlt(hdcDest,height,hdcSrc,GDI32.SRCcopY); // restore selection GDI32.SelectObject(hdcDest,hOld); // clean up GDI32.DeleteDC(hdcDest); User32.ReleaseDC(handle,hdcSrc); // get a .NET image object for it Image img = Image.FromHbitmap(hBitmap); // free up the Bitmap object GDI32.DeleteObject(hBitmap); return img; }

更新

我目前正在使用Printwindow,它是唯一能够捕捉窗口框架(即最小化,最大化和closuresbutton),但内部是黑色的最接近的东西。

虽然它没有完全奏效,但它certificate了我可以从窗口手柄创build一个图像,而应用程序甚至不能被用户看到。

拦截FILESytemCall进行删除

如何确定文件系统在.net中是否区分大小写?

ClickOnce开始菜单图标

如何从Windows执行一个Unix shell脚本

如何启用/禁用防火墙?

前一段时间我们正在做类似的事情,我们发现,当RDC最小化时,远程桌面会话不会重绘或接受键或鼠标事件。 一切工作正常,直到我们最小化了RDC屏幕。 一位同事发现,这是出于性能原因。

前几天我偶然发现了这个,但是我没有机会尝试。 如果你尝试它的工作,请让我知道:)

RDC最小化时与远程桌面进行交互

关于您的意见:我认为这是另一种问题…我知道,即使没有人登录到计算机上,您也需要您的应用程序工作。 我已经实现了允许与桌面交互的服务,例如,启动应用程序并使其自动化。 即使没有人登录到本机,您仍然可以使用UI自动化库(或者您的代码)来操作UI。

启动机器后,当我的服务和自动化应用程序运行时,一切正常。 稍后,被自动化的用户界面会出现在登录的第一个人的桌面上(我是一名机器管理员,我不知道有什么权限登录的人会发生什么事情)。

我不知道如果第一次登录是通过RDC完成会发生什么。 也许你可以尝试改变这些RDC设置id,这会影响你的应用程序的行为。 另一个选择是:

禁用RDC并使用指定的帐户将窗口配置为自动登录

使用其他远程桌面应用程序连接到本机(例如TightVNC)

这有帮助吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐