gen

[戻る]
ShellExecuteの最後のパラメータ 2003/12/02(火) 22:59:26
MFCで作ったプログラムからnotepad.exeを前回の表示状態で呼ぼうとしています。

ShellExecuteの最後のパラメータにSW_SHOWNOACTIVATEを指定して、
サイズや位置などを前回の状態でnotepad.exeを起動したいのですが、
どうも前回の状態を覚えていないようです。
調べたところ呼び出し先のアプリケーションに依存するらしいのですが、
どうすれば、前回の状態で起動することができますか?

よろしくお願いいたします。

環境
Win2000/VC++6.0

RAPT 2003/12/02(火) 23:07:28
> 前回の状態で
とはどういったことを期待しているのでしょうか?

少なくとも、あなたが期待している機能が、当該アプリケーションに
実装されていなければ、動作すべくもないのですが。

RAPT 2003/12/02(火) 23:08:40
MFCならば、デフォルトでレジストリを使用しているので、ウィンドウサイズとか
覚えていたような。とりあえず、ソースはどうなっていますか?

gen 2003/12/02(火) 23:29:26
ご回答ありがとうございます。

ダイアログベースで、ボタンをクリックした時にメモ帳を起動する
という機能です。

CXXXX::OnBnClickXXX()
{
   ShellExecute(NULL,NULL,_T("notepad.exe"),NULL,NULL,SW_SHOWNOACTIVATE);
}

一度起動して、たとえば最大化した状態で終了したら、次に起動した場合に最大化状態で
開きたいです。
最大化状態以外で終了した場合はそのサイズと位置の状態で、次に起動したいです。

よろしくお願いいたします。

wood 2003/12/03(水) 07:44:59
具体性に欠けますが
NOTEPAD自体前の終了状態をレジストリに保存しているとは思えないのですが
レジストリエディタでキーを検索すると
HKEY_CURRENT_USER¥SOFTWARE¥MICROSOFT¥NOTEPAD
というキーが見つかりました
ここの内容を編集してあげれば、何とかなるかも?

1.ShellExecuteごNOTEPADの状態を監視
  何個も上がっていたら、どれを監視するんでしょうね
  別の起動方法によって、同時に起動されているものがいたら
  難しいと思いますけど

2.監視確認できた最後の状態をレジストリに編集

ただし、別目的で次回NOTEPADを起動したときビックリする結果になるかも?

古いスレッドには追加発言できません。