Windows ドライブのエクスプローラーのコンテキスト メニューから起動できるアプリケーションがあります。メニュー項目をクリックすると、ドライブ文字が新しいインスタンスに渡されます。古いインスタンスが閉じていることを確認したい。
また、最後に選択したドライブが保持されるようにして、スタート メニューからアプリケーションを再起動したときに、最初に選択したドライブを記憶するようにしたいと考えています。
既に実行中のアプリケーションがイベントを受信して、強制終了して再起動することなく更新できるようにするのが最善です。
次のことを試しましたが、うまくいかないようです。
これは私のクラスライブラリメソッドです(変数を定義するのは単なる行なので、変数が含まれているDLLがあり、それ以上はありません)
namespace Dispatch
{
public class cls_get_drive_letter
{
public static string drive_letter;
}
}
これは私のローディング フォーム コードです: (ここでは DLL の変数を入力します)
private void Frm_loading_Load(object sender, EventArgs e)
{
Dispatch.cls_get_drive_letter.drive_letter = "XXX";
Process currentProcess = Process.GetCurrentProcess();
if (Process.GetProcessesByName(currentProcess.ProcessName, currentProcess.MachineName).Length >1)
{
currentProcess.Kill();
}
}
したがって、これを初めて実行すると、「XXX」が DLL に格納されますが、アプリケーションの現在のインスタンスが実行されていて、次のインスタンスを実行しようとすると、次のコードのためにアプリケーションが閉じられます。
Process currentProcess = Process.GetCurrentProcess();
if (Process.GetProcessesByName(currentProcess.ProcessName, currentProcess.MachineName).Length >1)
{
currentProcess.Kill();
}
したがって、このコードでコードを閉じると、新しい「XXX」は DLL に格納されず、最後の文字列が dll に格納されます。