3

プログラムを完成させ、保存用にシリアル化し、アプリケーションから保存したファイルを開くための fileopen システムを作成しました。レジストリで innosetup とのファイル関連付けも作成しましたが、これは完全に正常に機能します。

私が今達成したいのは、ユーザーがプログラムから保存されたファイルをダブルクリックするたびに、プログラムがそれを読み取って逆シリアル化することだけです。

たとえば、.docx または .doc ファイルをダブルクリックするか開くと、Microsoft Word が開き、ファイルが読み取られて開かれます。現在、私のプログラムは開きますが、ファイルから開かれたことを検出する方法がわからないため、逆シリアル化を開始できます。

注:逆シリアル化自体は問題ではありません。逆シリアル化する必要があるかどうかを検出しています。

4

2 に答える 2

0

ありがとう@Macropus、あなたは実際に私が知らなかったことを教えてくれませんでした.あなたは私のエラーに光を当てました. これは、innosetup でレジストリ値を設定していたときに発生します

{app}\program.exe %1innosetupの代わりに、「{app}\program.exe」「%1」と書きました。

プログラムを開いたファイルへのパスを無視しました。

だから私がクエリするときEnvironment.GetCommandLineArgs();

program.exe へのパスのみが返されますが、現在は、program.exe と、プログラムを呼び出すファイルへのパスの両方が返されます。Environment.GetCommandLineArgs()[1]

ショートカットまたはprogram.exe自体からファイルを開いたときにこれを機能させるために、私はやった

var comArgs = Environment.GetCommandLineArgs();
if (comArgs.Length > 1)
{
    // Then I can deserialize here.
}

今働いています、そして皆さんに感謝します。

于 2013-07-25T14:55:36.953 に答える