1

Silverlight OOBアプリを使用してショートカットファイルからターゲット情報を取得したいので、次のコードをSilverlightOOBで機能させるようにします。Shell32.dllを使用するにはP/Invokeを使用する必要があるようですが、Folder、FolderItem、およびShellLinkObjectをどのように使用できるかわかりません。ほとんどのリファレンスは、P/invokeを使用して.dllの関数を使用する方法を説明しています:(コメントまたはサンプルコード/リンクを教えてください:)

public string GetShortcutTargetFile(string shortcutFilename)
{
  string pathOnly = Path.GetDirectoryName(shortcutFilename);
  string filenameOnly = Path.GetFileName(shortcutFilename);

  Shell32.Shell shell = new Shell32.ShellClass();
  Shell32.Folder folder = shell.NameSpace(pathOnly);
  Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
  if (folderItem != null)
  {
    Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
    MessageBox.Show(link.Path);
    return link.Path;
  }

  return String.Empty; // Not found
}
4

1 に答える 1

0

解決策を見つけました。

public string GetShortcutTargetFile(string shortcutFilename)
{
    string pathOnly = System.IO.Path.GetDirectoryName(shortcutFile);
    string filenameOnly = System.IO.Path.GetFileName(shortcutFile);

    dynamic shell = AutomationFactory.CreateObject("Shell.Application");
    dynamic folder = shell.NameSpace(pathOnly);
    dynamic folderItem = folder.ParseName(filenameOnly);
    if (folderItem != null)
    {
        dynamic link = folderItem.GetLink;
        return "\""+link.Path +"\"" + " " + link.Arguments;
    }

    return String.Empty; // Not found
}
于 2015-01-26T19:37:33.637 に答える