Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

Отследить изменение схемы оформления Window   Найти похожие ветки 

 
Le][a   (2004-04-15 18:37) [0]

Добрый вечер, Мастера! Вопрос такой: какое сообщение нужно ловить, чтобы отследить изменение схемы оформления Windows? (это которая в свойствах экрана. Всякие там "Баклажан", "Ель", "Кирпичная" и пр. Или "Серебристая", "Оливковая", "Синяя" - это если в WinXp). Заранее благодарен.


 
Le][a   (2004-04-15 19:52) [1]

Неужели никто не знает?


 
VMcL ©   (2004-04-15 20:14) [2]

WM_SETTINGCHANGE
?


 
Le][a   (2004-04-15 20:35) [3]

Тьфу-ты, дурная моя голова! Я-то обрабатывал WM_DISPLAYCHANGE! :)) Вот начеркал пару строк. Так должно быть? (извиняюсь, конечно, просто хочется себя проверить ;))



unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure WMSETTINGCHANGE(var message: TMessage); message WM_SETTINGCHANGE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSETTINGCHANGE(var message: TMessage);
begin
  //лалала
  inherited;
end;

end.


 
Игорь Шевченко ©   (2004-04-15 20:39) [4]

скорее, WM_SYSCOLORCHANGE


 
Le][a   (2004-04-15 20:57) [5]

> Игорь Шевченко ©   (15.04.04 20:39) [4]

Пишу то же самое, что и в [3], заменяя *SETTINGCHANGE на *SYSCOLORCHANGE - система виснет (Win 98).


 
Игорь Шевченко ©   (2004-04-15 21:13) [6]

unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TfMain = class(TForm)
 private
   procedure WMSysColorChange (var Message: TMessage);
     message WM_SYSCOLORCHANGE;
 end;

var
 fMain: TfMain;

implementation

{$R *.dfm}

{ TfMain }

procedure TfMain.WMSysColorChange(var Message: TMessage);
begin
 inherited;
 ShowMessage("A change is made to system color settings");
end;

end.


Сообщение появляется после смены схемы в панели управления.
Windows 2000


 
Le][a   (2004-04-15 21:41) [7]

> Игорь Шевченко ©   (15.04.04 21:13) [6]

Win 98 стабильно виснет. После убиения Project1.exe схема меняется, работоспособность системы восстанавливается. А вот WM_SETTINGCHANGE обрабатывается без проблем. Что это может быть? Система?


 
Игорь Шевченко ©   (2004-04-15 21:50) [8]

[7] Le][a   (15.04.04 21:41)

На Win9x не могу протестировать - нету их у меня. Судя по тому, что в документации не указано никакой отличительной особенности обработки этого сообщения под Win9x, проблема в чем-то другом. Мой код, скопированный один в один тоже виснет ?


 
Le][a   (2004-04-15 22:31) [9]

> Игорь Шевченко ©   (15.04.04 21:50) [8]
> Мой код, скопированный один в один тоже виснет ?

Да.


 
Dimaxx ©   (2004-04-15 22:36) [10]

Нифига! Ловить нужно WM_THEMECHANGED ($031A)!


 
Dimaxx ©   (2004-04-15 22:37) [11]

В смысле, под ХРюшей...


 
Dimaxx ©   (2004-04-15 22:41) [12]

Тьфу, это я про темы. Пардон!


 
Rouse_ ©   (2004-04-15 22:52) [13]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   procedure WMSysColorChange (var Message: TMessage);
    message WM_SYSCOLORCHANGE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMSysColorChange(var Message: TMessage);
begin
 Caption := "qwe";
 Inherited;
end;

end.


 
Le][a   (2004-04-16 10:31) [14]

> Rouse_ ©   (15.04.04 22:52) [13]

Система виснет.


 
Le][a   (2004-04-16 10:45) [15]

MSDN:

WM_SYSCOLORCHANGE

The WM_SYSCOLORCHANGE message is sent to all top-level windows when a change is made to a system color setting.

 Windows NT/2000/XP: Included in Windows NT 3.1 and later.
 Windows 95/98/Me: Included in Windows 95 and later.

Никаких, как уже сказал Игорь Шевченко, отличительных особенностей обработки в 98 нет.


 
Игорь Шевченко ©   (2004-04-16 17:41) [16]

Le][a   (16.04.04 10:45)
Могу посоветовать только полазить отладчиком, с включенной опцией Use Debug DCU и указанием пути к файлам VCL в опциях проекта.

У меня Win9x нету, помочь разобраться не смогу.


 
Rouse_ ©   (2004-04-16 20:05) [17]

> [14] Le][a   (16.04.04 10:31)
Именно в моем варианте виснет?
У меня 98, без проверки я не отправлял код...


 
Rouse_ ©   (2004-04-16 20:05) [18]

В смысле если б не проверил, не отбравил бы :)


 
Le][a   (2004-04-16 21:36) [19]

> Rouse_ ©   (16.04.04 20:05) [17]
> Именно в моем варианте виснет?

Дико извиняюсь, Саш. Висло когда я писал такую конструкцию:


procedure TForm1.WMSysColorChange(var Message: TMessage);
begin
ShowMessage("qwe");
Inherited;
end;


Видимо вся проблема и состоит в этом ShowMessage. Как же его отобразить?


 
Игорь Шевченко ©   (2004-04-16 21:45) [20]


> Видимо вся проблема и состоит в этом ShowMessage.


Попробуй Windows.MessageBox


 
Le][a   (2004-04-16 22:15) [21]

Все. Проблема решена методом предложенным Rouse_ и дополненным Игорем Шевченко. Спасибо вам. Также спасибо Dimaxx за участие и VMcL за WM_SETTINGCHANGE. Вот. ;о) Обсуждение можно закрыть.


 
Yanis ©   (2004-04-17 00:12) [22]

to [13],[19]
Мож вот так:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
    procedure WMSysColorChange (var Message: TMessage);
   message WM_SYSCOLORCHANGE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMSysColorChange(var Message: TMessage);
begin
//строчки местами поменять.
//сначало надо чтобы система с сообщением разобралась
 
 Inherited;
//а теперь и наша прога на "подсосе" работать начинает :)
 Caption := "qwe";

end;

end.



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.038 c
7-1082103065
Ruslan
2004-04-16 12:11
2004.05.23
Как отследить изменение в конфигурации компьютера?


1-1083835108
Volodya_
2004-05-06 13:18
2004.05.23
marquee


9-1074578911
Hex0DesiMaL
2004-01-20 09:08
2004.05.23
Епрст....


3-1083127093
Lamo_xxxx
2004-04-28 08:38
2004.05.23
Как перейти к следующе из найденных по какому-либо условию записи


1-1083662053
Алламит
2004-05-04 13:14
2004.05.23
Изменение параметров диаграммы в XL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский