掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
タスクバーから隠す (ID:32945)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
提示したコードは,アプリケーションのアイコンをタスクバーに非表示する 時に使用しますよね. これは,プロジェクトソースに記述していると思います. つまりアプリケーションの作成時に行っているわけです. 実行時,つまり動的にスタイルを変更する場合は,そのままではできません. 一度,ウィンドウを非表示にします. 以下はメモ帳の場合です. その対象となるスクリーンキーボードでうまくいくかどうかは分かりません. 試してみる価値はあると思います. 動作確認は, Windows XP(SP2) + Delphi 7 Proです. それと,みんみんさんも指摘していますが,変数が変です. コードを提示する時は,できるだけコピペしましょうね. 一度エディタで発言内容を書いてからアップするといいです. (私の場合,それでも誤字脱字がありますけどね ^^; ) 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 SWP_NOSIZE or SWP_NOZORDER); end else begin ShowMessage('メモ帳が見つかりません'); end; end; //============================================================================= // 対象アプリのウィンドウのスタイルを元に戻す //============================================================================ procedure TForm1.Button3Click(Sender: TObject); begin 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.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.