如果克隆显示器,是否可以在一个显示器上显示应用程序?我的目标是开发一个计时器,它在演示期间显示在笔记本电脑的显示屏上,而不是放在投影机上。
我正在寻找类似windows的“识别显示”功能,即使在克隆模式下,它也能在不同的显示器上显示数字1和2。
由于
修改
我发现了possible duplicate这个问题。在这种情况下接受的答案是使用Screens.AllScreens
来发现屏幕数量。在我的情况下,这还不够。对已接受答案的评论链接到关于directly painting on the desktop的帖子。我尝试使用以下代码,但文本出现在两个显示器上。获取输入的Hdc的代码来自关于screen captures的文章。我不确定要为其他参数设置什么(在文章中它们是IntPtr.Zero)
[DllImport("gdi32.dll")]
static extern IntPtr CreateDC(IntPtr lpszDriver, string lpszDevice, IntPtr lpszOutput, IntPtr lpszInitData);
[DllImport("gdi32.dll")]
static extern IntPtr DeleteDC(IntPtr hdc);
private void PaintOnDesktop(string stringToPrint, Font font, Brush brush, PointF position) {
string deviceName = Screen.AllScreens[0].DeviceName;
IntPtr targetHdc = CreateDC(IntPtr.Zero, deviceName, IntPtr.Zero, IntPtr.Zero);
using (Graphics g = Graphics.FromHdc(targetHdc)) {
g.DrawString(stringToPrint, font, brush, position);
}
DeleteDC(targetHdc);
}
修改2
显然在C#中无法做到这一点,所以我将C#标签更改为设备驱动程序。
答案 0 :(得分:1)
引起的滞后只出现在其中一个显示器上,所以在你的情况下,如果这是用于演示,我建议将“你的”显示器(可能是你的笔记本电脑上的主显示器)作为延迟的接收者,所以观众没有看到它。然后,您可以在任一屏幕上绘制一个计时器表格。