【C#】WSHを使ってショートカットを作成する
おはようございます。
少し久しぶりにC#の投稿です。
今回はC#プログラムからWSHを利用して
デスクトップにショートカットファイルを作成してみました。
プログラムは、新規作成となります。
スポンサーリンク
新規プロジェクトの作成
VisualStudio2017 で、新規コンソールプロジェクトを作成します。
VisualStudio2017のインストールやプロジェクトの作成方法は次の記事を参考にしていただければ。
プログラム
program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | usingSystem; usingSystem.IO; usingSystem.Reflection; namespaceConsoleApp1 { /// <summary> /// コンソールプログラム. /// </summary> classProgram { /// <summary> /// メイン処理 /// </summary> /// <param name="args"></param> staticvoidMain(string[]args) { Console.WriteLine("ショートカット作成 開始"); // 引数にパスが設定されていたらそれを使う stringtarget=""; foreach(stringsinargs) { FileInfo fi=newFileInfo(s); if(fi.Exists) { target=fi.FullName; // ショートカット作成 CreateShrotcutFile(target); } } // 引数が無ければ、とりあえず自身のショートカットでも作ってみる if(string.IsNullOrEmpty(target)) { target=Assembly.GetExecutingAssembly().Location; // ショートカット作成 CreateShrotcutFile(target); } Console.WriteLine("ショートカット作成 終了"); Console.ReadKey(); } /// <summary> /// ショートカットファイルを作成します. /// </summary> /// <param name="filePath"></param> publicstaticvoidCreateShrotcutFile(stringfilePath) { Console.WriteLine(newFileInfo(filePath).Name+" のショートカットを作成します。"); // 出力先(デスクトップ) stringdestDir=Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory); // ショートカットファイル名 stringshortcutFile=Path.GetFileNameWithoutExtension(filePath)+@".lnk"; // 作成するショートカットのパス stringshortcutPath=destDir+@"\"+shortcutFile; // リフレクションでWSHオブジェクトを作成 // GUIDは WSH のCLSID dynamicshell=Activator.CreateInstance(Type.GetTypeFromCLSID(newGuid("72C24DD5-D70A-438B-8A42-98424B88AFB8"))); // WSHでショートカットを作成 varshortcut=shell.CreateShortcut(shortcutPath); // ショートカットのリンク先設定 shortcut.TargetPath=filePath; // アイコンのパスを設定 // ショートカットの元となるファイルから 0番目 のアイコンを指定 shortcut.IconLocation=filePath+",0"; // ショートカットを保存 shortcut.Save(); // Shell、COMオブジェクトの解放 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(shortcut); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(shell); } } } |
CLSIDについて
WSHのCLSIDなんかは、レジストリの
「コンピュータ\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\」
を参照してください。
起動してみる
とりあえず、デバッグ引数に、「notepad.exe」、「explore.exe」のパスを渡して実行。
コンソールに結果が出力され、デスクトップにショートカットが作成されればOKですね。
まとめ
まあ、ちょっと使い道についてはなんとも言えませんが
こういった方法があるんだということで、勉強になりました。
C#については次回は未定です。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません