Можно ли показать приложение только на одном дисплее, если дисплей клонирован? Моя цель - разработать таймер, который будет отображаться на дисплее ноутбука во время презентации, но не на проекторе.
Я ищу что-то вроде функции «Идентифицировать дисплеи» Windows, которая отображает цифры 1 и 2 на разных дисплеях, даже в клонированном режиме.
Спасибо
Редактировать
Я обнаружил возможный дубликат к этому вопросу. В этом случае принятым ответом было использование Screens.AllScreens
для определения количества экранов. Этого недостаточно в моем случае. Комментарий к принятому ответу ссылается на ветку о , непосредственно рисующей на рабочем столе . Я попробовал это с помощью следующего кода, но текст появился на обоих дисплеях. Код для получения Hdc ввода взят из статьи о снимках экрана . Я не уверен, что установить для других параметров (они 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 # на драйвер устройства.