質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

3回答

10904閲覧

自身(.exe)、及び特定の名前のexeを二重起動させたくない場合

kamiyui_bidan

総合スコア47

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/04/05 17:18

Imports System.Diagnostics.Process

中略

If GetProcessesByName(GetCurrentProcess.ProcessName).Length > 1 Then

上記のようにして、起動中のexe(仮にAAA.exe)が二重起動しないように制御しています。
上記のexeを作った同じプロジェクトから接続先だけが異なるexe(AAB.exe)も存在します。

自分自身と同じ名前のexeは前述の方法でチェックできるのですが、自身と特定の名前のexeは二重起動させたくない、といった場合、どのようにすると良いでしょうか?
(上記の例で言うと、AAA.exeは、2つ目のAAA.exeと1つ目のAAB.exeを同時に起動させたくない)

.NET3.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こんにちは。

二重起動防止の方法としてMutexを使う方法がありますのでご紹介しておきます。
http://dobon.net/vb/dotnet/process/checkprevinstance.html

特定のExe、とは少し違いますが、今回のケースであれば
共通のMutex名を設定することで対応できるかと思います。

投稿2016/04/05 18:13

編集2016/04/05 18:16
Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

上記の例で言うと、AAA.exeは、2つ目のAAA.exeと1つ目のAAB.exeを同時に起動させたくない

簡易的には、Mutex を使った方法がお勧めです。
要件は他にもあるでしょうし、変更もありえる事を考えると、
私だったら、
Exe を実行しないでは、なかなか難しいので、
そのJOB用の管理プログラム(Windows サービスでなくても実現可能)を1本書いて、
管理プログラムが、死活監視兼、実行許可管理をします。
実行した Exe が、管理プログラムへ自身を登録して、実行許可を貰います。
管理プログラムから、実行許可が貰えない場合は、その旨ログを残して終了します。
この考え方を応用すると、ライセンスキー形態応じた、実行も可能となります。

投稿2016/04/06 00:17

編集2016/04/06 00:25
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VB.Netなら多重起動絡みはプロジェクトのプロパティ:アプリケーションタブの「単一インスタンスのアプリケーションを作成する」で済めば一番お手軽なんですが、違うアプリケーションも監視対象に入れるならProcess.GetProcessesByNameとかWMIあたりで該当のプロセスが起動していないか探すのを地道にやってみてはどうでしょう
ただタイミングによっては取りこぼしちゃうかもしれません

投稿2016/04/05 20:29

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問