2

ドラッグアンドドロップを許可するイメージマネージャーアプリケーションがあります。画像をドラッグするときは、この行を実行して画像のパスと名前を取得します。

public bool GetFileName(out string _filename, DrageventArgs E)
{
    _filename = String.Empty;
    Array data = ((System.Windows.Forms.IDataObject)e.Data).GetData("FileName") as Array;
    ...
}

この記事から抜粋したものなので、私のレベルには進んでいないかもしれませんが、かなりうまく機能していて、それを使用するために何ができるかを十分に理解していると思いました。

ただし、正しい画像タイトルを取得するのに問題があります。「Phare.jpg」という画像をドラッグすると、取得した文字列が次のようになるため、「FileName」データが原因である可能性があります。

"C:\Users\\Public\Pictures\SAMPLE~1\LIGHTH~1.JPG". 

「LIGHTH」ビットは基本的に「phare」ですが、英語では...少なくとも最初の文字です。たぶん私は正しいデータを引き出していませんか?これを行うためのより良い方法はありますか?引き出してみることができる「FileName」とは異なるデータはありますか?

4

1 に答える 1

2

これは、通常のファイル名から作成された8.3ファイル名です。ほとんどの場合、ファイルの名前を表示するために使用するソフトウェアは、ファイル名の興味深いマッピングを使用して名前を表示するか、8.3以外の名前が8.3の名前とはまったく異なります(dir C:\Users\\Public\Pictures\SAMPLE~1コマンドプロンプトで実行すると、実際のファイル名が表示される場合があります)。

System.IO.Path.GetFullPath()を使用して、8.3ファイル名を通常の名前にマップできるはずです。

画像メタデータから他の言語の画像名を取得できる可能性があります-Image.PropertyItemsをチェックしてください。

于 2013-03-14T18:19:11.147 に答える