WPFアプリケーションのインスタンスを1つだけ実行できるようにするにはどうすればよいですか?
ありがとう。
http://blogs.Microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx
他のいくつかの例がアドバイスするように、VB.DLLを必要としません。 WPFサンプルコードがあります。コマンドライン引数を初期インスタンスに渡します。
これを試してください: シングルインスタンスアプリケーション 。私は2番目の方法を使用しましたが、問題なく動作します。
このヘルパーメソッドを使用して、application.startupイベントから呼び出します
Public Sub ForceSingleInstanceApplication()
'Get a reference to the current process
Dim MyProc As Process = Process.GetCurrentProcess
'Check how many processes have the same name as the current process
If (Process.GetProcessesByName(MyProc.ProcessName).Length > 1) Then
'If there is more than one, it is already running
MsgBox("Application is already running", MsgBoxStyle.Critical, My.Application.Info.Title) 'Reflection.Assembly.GetCallingAssembly().GetName().Name)
' Terminate this process and give the operating system the specified exit code.
Environment.Exit(-2)
Exit Sub
End If
End Sub
このソリューションを確認してください: WPFアプリケーションの1つのインスタンスのみの実行を許可する
これにより、アプリケーションの1つのインスタンスが適用されるだけでなく、アプリケーションの追加のインスタンスが実行されたときに、現在のアプリケーションにフォーカスが与えられます。 1つのインスタンスを制限するための私のミューテックスソリューションは、実際には上記のリンクとは異なりますが、このソリューションの「フォーカス」要素が気に入りました。
ユーザーsobelito
linked this post、これには次の pdate があります。それが言っていることは、更新されたリソースには Windows 7タスクバーシングルインスタンス を使用する必要があるということです。これをソースを調べると、必要なことを実行できます。
SingleInstance
c#プロジェクトを使用できます。また、WinFormsとWPFの両方のサンプルも含まれています。
(IANAL、AFAIK)が市販されていないMicrosoftブログのArikのPoznanskiの投稿とは異なり、Apache2.0ライセンスの下でもリリースされていることに注意してください。