16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"シェルアイコンを再起動せず変更する"
この発言に対し以下のコメントが寄せられています
#00220 CAT さん Re:シェルアイコンを再起動せず変更する
#00228 CAT さん Re:シェルアイコンを再起動せず変更する
◆説明◆
TWEAK UIのようにマイコンピュータアイコンやフロッピーディスクなどのシェルアイコンを変更した際、
再起動せずに変更内容を反映します。
具体的には、レジストリにアイコン情報を書き込んだ後に一度アイコンサイ
ズを変更した後、また元のサイズに戻しています。
#もっとクールな実現方法があったら教えてください(^^;;;)
◆サンプルコード◆
uses Regstr
procedure TForm1.Button1Click(Sender: TObject);
const
ShellIcons = REGSTR_PATH_EXPLORER + '\Shell Icons';
var
Reg: TRegistry;
IconSize: Integer;
begin
Reg:=TRegistry.Create;
with Reg do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey(ShellIcons,False) then
begin
// IconPath : アイコンのパス
// 例)'c:\windows\system\shell32.dll,6'
'c:\windows\foo.ico'
WriteString('11',IconPath); // フロッピーディスクアイコンの指定
CloseKey;
end;
RootKey := HKEY_CURRENT_USER;
if OpenKey(REGSTR_PATH_METRICS,False) then begin
// 現在のアイコンサイズの取得
IconSize := ReadString('Shell Icon Size');
// アイコンサイズを現在のサイズ-1に変更
WriteString('Shell Icon Size',IntToStr(StrToInt(IconSize)-1));
CloseKey;
end;
// 変更の反映
SendMessage(HWND_BROADCAST,WM_WININICHANGE,
0,LongInt(PChar('WindowMetrics')));
if OpenKey(REGSTR_PATH_METRICS,False) then begin
// アイコンサイズを元に戻す
WriteString('Shell Icon Size',IconSize);
CloseKey;
end;
SendMessage(HWND_BROADCAST,WM_WININICHANGE,
0,LongInt(PChar('WindowMetrics')));
finally
Free;
end;
end;
97/11/27(木) 22:07 CAT(KYJ04762)
#これがFDELPHIでは初めての発言です。
#今までずぅっとROMでお世話になった恩返しがちょっとはできたでしょうか
#(^^;;;)
Original document by CAT 氏 ID:(KYJ04762)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|