Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2014, 20:54
ildvild ildvild вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Уфа
Сообщения: 31
Версия Delphi: 7, 2007, 2010
Репутация: 10
По умолчанию Определить подключение\отключение второго монитора

Добрый вечер, уважаемые форумчане.
Подскажите, как можно отловить подключение\отключение второго монитора?
Ответить с цитированием
  #2  
Старый 02.10.2014, 22:50
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Попробуйте вот это
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
type
              TForm1 = class(TForm)
                Button1: TButton;
              private
                { Private declarations }
                procedure WMDeviceChange(var Message: TMessage);
                  message WM_DEVICECHANGE;
              public
                { Public declarations }
              end;
 
            var
              Form1: TForm1;
 
            implementation
 
            const DBT_DEVICEARRIVAL = $8000;
            const DBT_DEVICEQUERYREMOVE = $8001;
            const DBT_DEVICEQUERYREMOVEFAILED = $8002;
            const DBT_DEVICEREMOVEPENDING = $8003;
            const DBT_DEVICEREMOVECOMPLETE = $8004;
            const DBT_DEVICETYPESPECIFIC = $8005;
            const DBT_CONFIGCHANGED = $0018;
            procedure TForm1.WMDeviceChange(var Message: TMessage);
            var
              s : string;
            begin
            {Do Something here}
              case Message.wParam of
                DBT_DEVICEARRIVAL :
                  s := 'A device has been inserted and is now available';
                DBT_DEVICEQUERYREMOVE: begin
                  s := 'Permission to remove a device is requested';
                  ShowMessage(s);
                 {True grants premission}
                  Message.Result := integer(true);
                  exit;
                end;
                DBT_DEVICEQUERYREMOVEFAILED :
                  s := 'Request to remove a device has been canceled';
                DBT_DEVICEREMOVEPENDING :
                  s := 'Device is about to be removed';
                DBT_DEVICEREMOVECOMPLETE :
                  s := 'Device has been removed';
                DBT_DEVICETYPESPECIFIC :
                  s := 'Device-specific event';
                DBT_CONFIGCHANGED :
                  s:= 'Current configuration has changed'
                else s := 'Unknown Device Message';
              end;
              ShowMessage(s);
              inherited;
end;
(Drkb 01334) возможно, отобразит

Добавлено немного позже

Можно ещё в принципе таймером следить за Screen.MonitorCount, если оно > 1, то значит сейчас в системе два экрана, но это правда как-то не совсем по-прогерски

Последний раз редактировалось Alegun, 03.10.2014 в 07:39.
Ответить с цитированием
  #3  
Старый 03.10.2014, 16:37
ildvild ildvild вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Уфа
Сообщения: 31
Версия Delphi: 7, 2007, 2010
Репутация: 10
По умолчанию

Не помогло.
Таймером следить не пойдет))
Ответить с цитированием
  #4  
Старый 03.10.2014, 17:12
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Я не уверен, что WM_DEVICECHANGE отправляется всем окнам, а не только главному окну приложения. В VCL главное окно приложения -- Application. В качестве эксперимента можно попробовать кинуть на форму TApplicationMessages и перекрыть OnMessage с приведенным кодом.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025