MFC 関連付けされたファイルを起動中のアプリで開く方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hiro-ta
記事: 4
登録日時: 9年前

MFC 関連付けされたファイルを起動中のアプリで開く方法

#1

投稿記事 by hiro-ta » 9年前

VisualStudio2010のMFCでアプリケーションを作成しているものです。アプリはMDIです。
ある拡張子(*.aaaとします)のファイルをこのアプリに関連付けして、このファイルがダブルクリックされたらこのアプリが起動してファイルを表示するようにしました。
これはアプリのCWinApp::InitInstance()で引数でわたってきたファイルパスを表示するようにしてやればOKでした。
しかしすでにこのアプリが起動した状態で、ファイルをダブルクリックするとうまくいきません。アプリが前面に表示されるだけでダブルクリックしたファイルは表示されないのです。
ブレークポイントをしかけて挙動を見てみようとしましたが、この場合、CWinApp::InitInstance()には入ってこないようです。
アプリが起動した状態で関連付けされたファイルがダブルクリックされたら、起動中のアプリで表示したいのですがどうやれば良いのでしょうか?

hiro-ta
記事: 4
登録日時: 9年前

Re: MFC 関連付けされたファイルを起動中のアプリで開く方法

#2

投稿記事 by hiro-ta » 9年前

すみません、CWinApp::InitInstance()には入ってこないというのは私の勘違いでした。InitInstanceの中ですでに起動中のアプリを探して存在すればそのアプリに対してファイルパスを渡してやればOKでした。
ただ、渡してやる方法が良い方法が分からず、ファイルパスを適当なレジストリに保存して、起動中のアプリに対してアプリケーション定義のメッセージをSendMessageしてやるという方法をとりましたが、もっと良い方法があれば教えてください。

can110
記事: 27
登録日時: 10年前

Re: MFC 関連付けされたファイルを起動中のアプリで開く方法

#3

投稿記事 by can110 » 9年前

WM_COPYDATAメッセージを使うと、他プロセスのウインドウに任意のデータを送ることができます。

参考:他のウィンドウにデータを渡す
http://www.crimson-systems.com/tips/t018a.htm

hiro-ta
記事: 4
登録日時: 9年前

Re: MFC 関連付けされたファイルを起動中のアプリで開く方法

#4

投稿記事 by hiro-ta » 9年前

WM_COPYDATAでうまくいきました。
良い方法を教えていただきありがとうございました。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: MFC 関連付けされたファイルを起動中のアプリで開く方法

#5

投稿記事 by ISLe » 9年前

DDEのopenコマンドを発行するように関連付けすれば
プログラムはそのままでご希望通りの動作をするようになるという話を見かけました。
本当かどうかは分かりませんが。

閉鎖

“C言語何でも質問掲示板” へ戻る