アプリケーションのタスクバー コンテキスト メニューから、アプリケーションの起動と「このアプリケーションをタスクバーに固定する」を削除する必要があります。理由は、アプリケーションがスタンドアロンで起動できないためです。別のアプリケーションから情報を提供する必要があります。
誰も方法を知っていますか?
この投稿によると、 Windows API Code Packを使用できますが、必要なクラスは内部的なものです。OPは、5万行のコードをコピーして機能させると述べました。その投稿以降に改善されたかどうかはわかりませんが、私が考えた回避策を次に示します。EXE ファイル (およびコメントによるショートカット) のみをタスクバーにピン留めできるため、アプリケーションの名前を非 exe 拡張子に変更できます (ほとんどの非 exe 拡張子はピン留めできません)。
他のアプリから呼び出す場合は、名前を に変更し.exe
、起動してから、もう一度名前を変更します。例えば:
Process p = new Process();
//fake extension so it can't be drag/dropped to taskbar
string fakeExtensionName = @"C:\MyFile\myProgram.test";
//what it's actually called
string exeExtensionName = @"C:\MyFile\myProgram.exe";
//rename the fake one to the real one
File.Move(fakeExtensionName, exeExtensionName);
p.StartInfo.FileName = exeExtensionName;
//launch the real one
p.Start();
//rename it back to the fake extension
File.Move(exeExtensionName, fakeExtensionName);
本当に必要な場合は誰でも名前をexeに変更できるため、プログラムはユーザーが直接起動してそのシナリオを処理できると想定する必要がありますが、名前をexeに変更することで任意のファイルをタスクバーに固定できるため、保護はありませんそれ。