SoftHelperクラス公開 { /// <まとめ> 表示状態///この関数は、異なるスレッドによって生成されたウィンドウを設定します /// </要約> /// <PARAM NAME = "のhWnd">ウィンドウハンドル</ param>の /どのように//ます。<param name = "cmdShowは" > ウィンドウの表示を指定します。許可された値のリストを参照し、ShowWlndow </ PARAM>関数の説明のセクションを参照してください 、戻り値はゼロ</戻り>本来隠さ関数である場合; /// <戻り値>可視本来の機能は、戻り値がある場合にゼロ [DLLIMPORTを( 「User32.dllの」)] ncmdshowのINTのためのhWndのIntPtr ShowWindowAsync BOOLプライベート静的にextern(); /// <まとめ> ///この関数は、スレッドが前景に指定されたウィンドウを設定し、ウィンドウがアクティブに作成します。キーボード入力ウィンドウをステアリング、そしてユーザーのために、様々な視覚的なマークを変更します。 ///フォアグラウンドウィンドウシステムは、他のスレッドよりわずかに高いスレッド割り当てられた権限を作成します。 /// </要約> /// <PARAM NAME = "のhWnd"> /// <リターン>ウィンドウが前面に設定されている場合、戻り値はゼロであり、フロントウィンドウが設定されていない場合、戻り値はゼロである</戻り> [DLLIMPORT( "User32.dllの")] プライベート静的にexternのブールSetForegroundWindow(のIntPtrのhWnd)。 民間のconst int型SW_SHOWNOMAL = 1; プライベート静的ボイドHandleRunningInstance(プロセスインスタンス) { ShowWindowAsync(instance.MainWindowHandle、SW_SHOWNOMAL); //显示 SetForegroundWindow(instance.MainWindowHandle); //当到最前端 } プライベート静的プロセスRuningInstance() { プロセスcurrentProcess = Process.GetCurrentProcess() ; プロセス[]プロセス= Process.GetProcessesByName(currentProcess.ProcessName)。 foreachの(プロセスにおけるプロセス工程) { 他 (もし!process.Id = currentProcess.Id) { 返却処理; } } はnullを返します。 } /// <要約> ///程序以单例运行 /// </要約> パブリック静的ボイドSoftSingle <T>()ここで、T:フォーム、新しい() { プロセスプロセス= RuningInstance()。 IF(プロセス== NULL) { VARのMainFormを=新しいT(); Application.Run(MainFormを)。 } { HandleRunningInstance(プロセス)。 } } }
コールは、次のとおりです。SoftHelper.SoftSingle <メイン>();