ポップアップメニューの閉じるを無効にするにはどうしたら?


由香  2005-05-25 04:25:32  No: 15036

お聞きしたいのですが、実行中にタスクバーとかタイトルバーを右クリック
すると、最大化とか閉じるとか出てくるじゃないですか?その閉じるを押しても
意味がないみたいにできないかなぁと思いました。何かいい方法はないですか?


ちわっす  2005-05-25 04:40:58  No: 15037

以前MLで投稿されていました。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=042000


由香  2005-05-25 04:48:47  No: 15038

タスクバーでの閉じるを制限したい場合はどうすればよいのでしょうか?


にしの  2005-05-25 04:54:15  No: 15039

ちわっすさんの紹介した方法は試されましたか?


由香  2005-05-25 04:59:26  No: 15040

はい!試しましたよ!!タイトルバーには閉じるは表示されなかったの
ですが、実行ファイルのタスクバー(画面の一番下にあるやつ)には閉じる
がそのまま有効なんですよ...


にしの  2005-05-25 05:01:32  No: 15041

失礼しました。
Delphiの基本動作を忘れていました。

FormのシステムメニューをDisableにしても、タスクバーに出ているシステムメニューとは別なので、同じ手順をこちらのメニューに対しても行う必要があります。
タスクバーに出ているシステムメニューの持ち主は、Applicationオブジェクトです。
GetSystemMenu(Handle, FALSE);
で、Formのハンドルを渡しているので、Formのシステムメニューのハンドルが返ってきます。
ここを、
GetSystemMenu(Application.Handle, FALSE);
とすると、アプリケーションのシステムメニューのハンドルが返ってきます。

ちわっすさんの例では、閉じるメニューを削除でしたが、無効化するということでしたら、

procedure TForm1.FormCreate(Sender: TObject);
var
  hMenu: THandle;
begin
  hMenu := GetSystemMenu(Handle, False);
  EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);

  hMenu := GetSystemMenu(Application.Handle, False);
  EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);

end;
というようにしたほうがよいかもしれません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加