web-dev-qa-db-ja.com

WPFはアプリケーションのインスタンスを1つだけ適用します

WPFアプリケーションのインスタンスを1つだけ実行できるようにするにはどうすればよいですか?

ありがとう。

34
John Batdorf

http://blogs.Microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx

他のいくつかの例がアドバイスするように、VB.DLLを必要としません。 WPFサンプルコードがあります。コマンドライン引数を初期インスタンスに渡します。

29
sobelito

これを試してください: シングルインスタンスアプリケーション 。私は2番目の方法を使用しましたが、問題なく動作します。

15
Artur Carvalho

このヘルパーメソッドを使用して、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
2
VoteCoffee

このソリューションを確認してください: WPFアプリケーションの1つのインスタンスのみの実行を許可する

これにより、アプリケーションの1つのインスタンスが適用されるだけでなく、アプリケーションの追加のインスタンスが実行されたときに、現在のアプリケーションにフォーカスが与えられます。 1つのインスタンスを制限するための私のミューテックスソリューションは、実際には上記のリンクとは異なりますが、このソリューションの「フォーカス」要素が気に入りました。

1
jsirr13

ユーザーsobelitolinked this post、これには次の pdate があります。それが言っていることは、更新されたリソースには Windows 7タスクバーシングルインスタンス を使用する必要があるということです。これをソースを調べると、必要なことを実行できます。

SingleInstance c#プロジェクトを使用できます。また、WinFormsとWPFの両方のサンプルも含まれています。

(IANAL、AFAIK)が市販されていないMicrosoftブログのArikのPoznanskiの投稿とは異なり、Apache2.0ライセンスの下でもリリースされていることに注意してください。

0
Sergio Basurco