1

この関数を使用しようとしていますが、いくつかのエラーが発生しています:

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

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

            return string.Empty;
        }

        static void Main(string[] args)
        {
            const string path = @"C:\link to foobar.lnk";
            Console.WriteLine(GetShortcutTargetFile(path));
        }

最初のエラーは次の行にあります。

Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;

行 (Shell32.ShellLinkObject)folderItem.GetLink の右側にエラーが発生しています:

Error   2   One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll?

そして最後の行で:

Console.WriteLine(GetShortcutTargetFile(path));

エラーは次のとおりです: GetShortcutTargetFile(path) 関数は静的でしたが、静的を削除してから、最後の行でエラーを取得しました。

Error   4   An object reference is required for the non-static field, method, or property 'GatherLinks.Form1.GetShortcutTargetFile(string)

すべてのエラーを修正し、ファイルを対象とするすべてのショートカットを取得するにはどうすればよいですか?

4

1 に答える 1

2

最初のエラー: プロジェクト設定で Shell32.dll への参照を追加します。

2 番目のエラー: 2 つの関数をどこに配置していますか? フォーム内で関数を作成しようとしているようです。そのため、「GatherLinks.Form1.GetShortcutTargetFile(string)」にアクセスできません。コードをメイン関数からフォームのロードされたイベントに移動すると、コンパイルできるようになります:)

于 2012-10-25T09:37:51.370 に答える