まず、「2回目の起動」について説明します。このSingleInstanceController
アプローチを使用して、アプリのEXE
ファイルを呼び出し、引数を受け入れることができるようにします。
そうすれば、他のアプリやユーザーは、特定のアクションを実行するようにアプリケーションに指示できます。
アプリはので開始するように設定されておりWindowState
、Minimized
ユーザーがトレイアイコンをクリックした場合にのみに復元されNormal
ます。
しかし、私が見ているのは、アプリケーションを初めて起動したときは最小化されたままであるということです。次に、EXEファイルを2回呼び出すと、通常のウィンドウ状態に戻ります。
ウィンドウの状態を変更するコードはありません。
これは、他の何かが復元をトリガーしているためだと思います。
私のコードはSingleInstanceController
次のようになります。
public class SingleInstanceController : WindowsFormsApplicationBase
{
public SingleInstanceController()
{
IsSingleInstance = true;
StartupNextInstance += this_StartupNextInstance;
}
void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
{
Form1 form = MainForm as Form1;
string command = e.CommandLine[1];
switch (command.ToLowerInvariant())
{
case "makecall":
string phoneNumber = e.CommandLine[2];
PhoneAppHelper.MakePhoneCall(phoneNumber);
break;
default:
System.Windows.Forms.MessageBox.Show("Argument not supported");
break;
}
}
protected override void OnCreateMainForm()
{
MainForm = new Form1();
}
}
私のフォームには、接続されたデバイス(USB)を表示するリストボックスと、ほとんどがデバッグ/情報の目的でいくつかのアクティビティを表示する複数行のテキストボックスがあります。
フォーム上のコントロールとの相互作用により、復元が発生する可能性がありますか?