TMainMenuについて


yasu  2004-07-08 01:23:15  No: 9802

いつもお世話になっております。

またまた初心者的な質問ですみませんが教えてください。
複数のアプリケーション(exe)をTMainmenuから呼び出す処理を
作成しているのですが、アプリ自体は呼出はできているのですが
アプリを呼び出し後にMainMenuは操作できないようにしたいの
ですがどのようにすればよろしいのでしょうか?
Project内ですとShowmodalで呼出もとのFormは操作できない
ようにできるのですがexe間の時はどのようにすればよいのかが
わかりません。

申し訳ございませんがよろしくお願いいたします。


にしの  2004-07-08 02:35:24  No: 9803

呼び出し後に操作できないようにするには、EnabledをFalseにすれば良いかと思います。

でもやりたいことは違うのでは?
もしかして、
・EXEを起動している間、メニューを操作できなくしたい
ということでしょうか。
EXEが終了したらメニューを再度操作できるようにしたいのではないですか?
そうであれば、EXEの起動にはCreateProcessを使用し、WaitForSingleObjectで終了を待ちましょう。

終了したら、CreateProcessで取得したハンドルを破棄することを忘れずに。

参考に、Mr.XRAYさんのHPにある、Halbowさんが残した資料のURLを書いておきます。
http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N001.html


yasu  2004-07-08 03:55:50  No: 9804

にしのさんありがとうございます。

やりたいことはにしのさんのおっしゃるとおりのこと
です。
CreateProcessでやりたかったことは実現できたので
すが、縮小ボタンや閉じるボタンなどをクリックの時
に動作してしまいます。
この部分は制御されないのでしょうか?


yasu  2004-07-08 05:30:36  No: 9805

追加の質問なのですがタイトルバーの閉じるボタンを次画面に
行った時に押せないように下記のコードを追加したのですが
なぜかプログラム終了画面が出てきてしまいます。

hMenuHandle := GetSystemMenu(frmMenu.handle,False);
if hMenuHandle <> 0 then
EnableMenuItem(hMenuHandle, SC_CLOSE, (MF_BYCOMMAND + MF_DISABLED));
DrawMenuBar(frmMenu.Handle);

なぜ終了画面が出るのかが不明なのですが。。。


にしの  2004-07-08 21:56:14  No: 9806

GetSystemMenuの第1引数は、MainMenuのハンドルではなくフォームのハンドルです。
また、これだけだと、タスクバーから閉じることができます。
Application.Handleに対してもする必要があります。

でも、これだけではだめです^^;
Alt+F4で終了することが出来てしまいます。
以上のことをするよりも、OnCloseQueryを使うのが近道だと思いますよ。


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

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






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