TMainMenuについて


yasu  2004-07-08 01:23:15  No: 9802  IP: [192.*.*.*]

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

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

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

編集    削除
にしの  2004-07-08 02:35:24  No: 9803  IP: [192.*.*.*]

呼び出し後に操作できないようにするには、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  IP: [192.*.*.*]

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

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

編集    削除
yasu  2004-07-08 05:30:36  No: 9805  IP: [192.*.*.*]

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

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  IP: [192.*.*.*]

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

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

編集    削除