6

私のプログラムは、コマンドラインパラメーターとして、ドラッグアンドドロップ操作で、またはエクスプローラーで、プログラムに関連付けられている拡張子を持つファイル名をクリックして、入力ファイル名を受け入れます。

コマンドラインとドラッグアンドドロップは正常に機能しますが、エクスプローラーでファイル名をクリックすると、クリックしたファイルのファイルパスにスペースが含まれている場合に問題が発生します。例:

c:\temp\file one.txt
c:\my directory\filetwo.txt
c:\my directory\file three.txt

次に、ParamStr関数は私に次のことを返します。

ParamStr(1):  c:\temp\file
ParamStr(2):  one.txt
ParamStr(3):  c:\my
ParamStr(4):  directory\filetwo.txt
ParamStr(5):  c:\my
ParamStr(6):  directory\file
ParamStr(7):  three.txt

これらを必要な3つのファイル名に再構成するにはどうすればよいですか?

4

3 に答える 3

8

「」のペアが含まれていないのは、シェルファイルの関連付けである可能性があります。

開くためのこれらのもののように:

"C:\Program Files\WinRAR\WinRAR.exe" "%1"  

またはDDEメッセージ付き:

[open("%1")]
于 2010-08-31T02:34:11.173 に答える
4

ファイル名など、スペースを含むコマンドラインパラメータは引用符で囲む必要があります。これにより、paramパーサーはそれらを一緒に保持することになっていることを認識します。ユーザーがファイル名を引用していない場合は、オペレーターエラーです。

一方、ドラッグアンドドロップシステムがこれを実行している場合は、ドラッグアンドドロップライブラリにバグがあり、それを作成した人と話す必要があります。ただし、ドラッグアンドドロップ操作がParamStrを混乱させる理由については、少し混乱しています。これは、プログラムが起動して実行された後ではなく、呼び出された時点でプログラムに渡されるパラメータによってのみ設定する必要があります。多分私は何かが欠けていますか?

于 2010-08-31T00:21:00.583 に答える
2

ここから、CmdLineHelperユニットを使用します。

于 2010-08-31T01:23:40.760 に答える