名前 題名 ▼ Mr.XRAYさん > >ダイアログのハンドルを操作して,タスクバーのアイコンを非表示に > >もできますが,クラス名が#32770なのて,ちょっと面倒ですね. > > 参考までに,メモ帳を起動して,メモ帳のタスクバーのアイコンの > 非表示,表示を切り替えるサンプルです. > 切り替えの時に,一旦メモ帳自身を非表示にするので,少しチラつきます. > #32770の場合は,環境によっては,他のダイアログを検出してしまう > 可能性があるので,工夫が必要です. > > また,この方法は,ウィンドウのスタイルをWS_EX_TOOLWINDOWとします. > したがって,キャプションバーの高さが低くなってしまいます. > > unit Unit1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, > Dialogs, StdCtrls; > > type > TForm1 = class(TForm) > Button1: TButton; > Button2: TButton; > Button3: TButton; > procedure Button1Click(Sender: TObject); > procedure Button2Click(Sender: TObject); > procedure Button3Click(Sender: TObject); > private > { Private 宣言 } > hMainWnd : HWND; > Before : LongInt; > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > uses ShellAPI; > > {$R *.dfm} > > //============================================================================= > // テスト用に操作対象のアプリを起動.ここではメモ帳 > // ShellExecuteの使用にはusesにShellAPIが必要 > //============================================================================ > procedure TForm1.Button1Click(Sender: TObject); > begin > ShellExecute(Handle, 'open', 'Notepad.exe', nil, nil, SW_SHOW); > end; > //============================================================================= > // タスクバーのアイコンを非表示にする > //============================================================================ > procedure TForm1.Button2Click(Sender: TObject); > begin > //操作対象のウィンドウハンドルを取得する > //hMainWnd := Application.Handleなら自分自身 > hMainWnd := FindWindow('notepad', nil); > > if hMainWnd <> 0 then begin > //スタイル変更等は一度非表示にする > ShowWindow(hMainWnd, SW_HIDE); > > //前の設定を保存しておく > Before := SetWindowLong(hMainWnd, GWL_EXSTYLE, > GetWindowLong(hMainWnd, GWL_EXSTYLE) or WS_EX_TOOLWINDOW); > > //Zオーダを変更したくないのでShowWindowではなくSetWindwoPosを使用 > SetWindowPos(hMainWnd, 0, 0, 0, 0, 0, > SWP_NOMOVE or HWND_BOTTOM or > SWP_NOSIZE or > SWP_SHOWWINDOW); > end else begin > ShowMessage('メモ帳が見つかりません'); > end; > end; > //============================================================================= > // 対象アプリのウィンドウのスタイルを元に戻す > //============================================================================ > procedure TForm1.Button3Click(Sender: TObject); > begin > //操作対象のウィンドウハンドルを取得する > //hMainWnd := Application.Handleなら自分自身 > hMainWnd := FindWindow('notepad', nil); > > if hMainWnd <> 0 then begin > //スタイル変更等は一度非表示にする > ShowWindow(hMainWnd, SW_HIDE); > > SetWindowLong(hMainWnd, GWL_EXSTYLE, Before); > //SetWindowPosでもいいがHideからShowにするので同じ > //ここまでは非表示なので表示すれば必ずZオーダトップ > ShowWindow(hMainWnd, SW_SHOWNORMAL); > end else begin > ShowMessage('メモ帳が見つかりません'); > end; > end; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link