C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: C#でショートカット先のパスを取得する方法


(過去ログ 157 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■91388 / inTopicNo.1)  C#でショートカット先のパスを取得する方法
  
□投稿者/ AAA (1回)-(2019/06/20(Thu) 15:00:58)

分類:[C#] 

現在、C#でショートカット先のフォルダパスを取得するコードを実装しています。
以下のコードを実装し、通常のショートカットパスは取得できるのですが、
環境依存文字?(「&#9825;」など)があるパスだと取得ができません。対策等はありまでしょうか。

------------------------------
// ファイルの拡張子を取得
string extension = Path.GetExtension(file);
// ファイルへのショートカットは拡張子".lnk"
if (".lnk" == extension)
{
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
// ショートカットオブジェクトの取得
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(file);

// ショートカットのリンク先の取得
string targetPath = shortcut.TargetPath.ToString();
}
------------------------------

正しく取得できるパス : C:\\Users\\users\\Pictures\\Camera Roll\\aaa - ショートカット.lnk
正しく取得できないパス: C:\\Users\\users\\Pictures\\Camera Roll\\aaa&#9825; - ショートカット.lnk

引用返信 編集キー/
■91389 / inTopicNo.2)  Re[1]: C#でショートカット先のパスを取得する方法
□投稿者/ AAA (2回)-(2019/06/20(Thu) 15:08:20)
#9825 は、「はーと」で変換して出てくる記号です。
引用返信 編集キー/
■91390 / inTopicNo.3)  Re[2]: C#でショートカット先のパスを取得する方法
□投稿者/ Hongliang (826回)-(2019/06/20(Thu) 15:41:24)
COM参照で Microsoft Shell Controls And Automation を追加して、以下のようにするとか。

var shell = new Shell32.Shell();
var folder = shell.Namespace(Path.GetDirectoryName(file));
var item = folder.ParseName(Path.GetFileName(file));
var link = (Shell32.ShellLinkObject)item.GetLink;
var srcpath = link.Path;
引用返信 編集キー/
■91391 / inTopicNo.4)  Re[3]: C#でショートカット先のパスを取得する方法
□投稿者/ AAA (3回)-(2019/06/20(Thu) 15:52:00)
Hongliangさん

ご回答誠にありがとうございます。
教えて頂いた方法で、期待通りにショートカット先のパスを取得することができました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -