none
アプリケーションに関連づけられたファイルをダブルクリックして起動するプログラムのデバッグについて RRS feed

  • 質問


  •   現在 C++ でアプリケーションのプラグイン(*.dll)の作成をしています。

      使用者からエクスプローラでアプリケーションに関連づけられたファイルをダブルクリックしてアプリケーションを起動すると落ちる場合があるという報告があり、その問題の対処をしなければならなくなって困っています。また、既に起動しているアプリケーションからファイルを読み込む場合には落ちることはないとの報告も受けています。

      プラグインのデータはアプリケーションファイルに組み込まれています。どうやらアプリケーションは、起動してからファイルを読み込む場合と、エクスプローラからアプリケーションに関連づけられたファイルをダブルクリックして起動した場合とで、プラグインの呼び出しタイミングが違うようなのです。

      そこで、VisualStudio で、アプリケーションに関連づけられたつファイルをダブルクリックした場合にアプリケーションが起動して、dll のデバッグが開始されるような設定をするにはどのように設定すればよろしいのでしょうか ?

      メモ帳のプラグインとして例えるならば、*.txt ファイルをダブルクリックして、メモ帳が起動したタイミングでデバッグ開始という状況を再現したいのです。

      よろしくお願いします。

    2006年5月27日 2:44

すべての返信

  • これが参考になるかもしれません。

    Application will not launch when double clicking on file.
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=113187&SiteID=1

    2006年5月27日 3:34
    モデレータ
  •  たくぴぃ さんからの引用

      そこで、VisualStudio で、アプリケーションに関連づけられたつファイルをダブルクリックした場合にアプリケーションが起動して、dll のデバッグが開始されるような設定をするにはどのように設定すればよろしいのでしょうか ?

      メモ帳のプラグインとして例えるならば、*.txt ファイルをダブルクリックして、メモ帳が起動したタイミングでデバッグ開始という状況を再現したいのです。

    プラグイン .dll のプロジェクト設定のデバッグ用コマンドラインとして

    notepad.exe c:\hoge\hoge.txt

    のようなコマンドラインを設定すればよろしいかと。

     

    2006年5月27日 3:36
  • 渋木さんの書かれている方法が、一番、簡単でしょうね。

    あとは、(MFCなら)CWinApp::InitInstance() の先頭に、DebugBreak() を入れて実行すると、そこで中断するのでデバッガにアタッチするという手も使えますよ。
    2006年5月28日 11:07
  • trapemiya さん、渋木宏明 さん、社本 明弘 さん、レスありがとうございます。

    渋木さんのやり方でずっと行っていたのですが、なんとか同じ操作から現象を確認したいと思っていました。考えてみればエクスプローラで起動するのも結局は同じような気がします。申し訳ありません、テンパリ気味でした。
    結論からいいますと、周りから聞いた話では、そのアプリケーション自体のバグらしいとのことです。ですがなんか気持ち悪いのでもうしばらく調べてみたいと思います。

    ありがとうございました。

    2006年5月29日 2:22