• 締切済み

2重起動の制御に関して

.netにてプログラムの2重起動チェックを行いたいのですが、 すでに起動済みのプログラムを起動しようとした場合、 起動されている方を終了してから後に起動された方を起動する ということは可能でしょうか? よろしくお願いします。

  • y_sk
  • お礼率40% (2/5)

みんなの回答

  • W_KNIGHT
  • ベストアンサー率0% (0/0)
回答No.3

↓すみません。アプリの二重起動と勘違いしてしまいました。 申し訳ありませんでした。

y_sk
質問者

お礼

いえいえとんでもないです。貴重なご回答ありがとうございました。APIを使用するというのを参考にさせて頂き、何とか作成できました。

  • W_KNIGHT
  • ベストアンサー率0% (0/0)
回答No.2

.netのメソッドではなく、WinAPIになってしまいますが・・ もしそれでよければ Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub cd_Click() Public Const WINDOW_NAME_0 As String = "???????" strFilePath = "C:\Program Files\?????" Dim hWnd_0 As Long hWnd_0 = FindWindow(vbNullString, WINDOW_NAME_0) If hWnd_0 = 0 Then Shell strFilePath, 1 End If 後は、PostMessageのWM_CLOSEを使って 起動したアプリを閉じてもいいと思います。

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 プロセスさえ取得すれば可能です。 2 重起動のチェックを ProcessName でされているのであれば、 その重複した側の ProcessName から Process を終了して、 CloseMainWindow メソッドと Kill メソッドを入れ子に実行します。 ' メイン ウィンドウにクローズ メッセージを送信する If hProcess.CloseMainWindow() = False Then   hProcess.Kill() ' 終了しなかった場合は強制終了する End If 最初に起動されたかどうかの判断は起動経過時間を比較すると良いです。

y_sk
質問者

補足

回答ありがとうございます。 申し訳ありません質問に大切なことが抜けていたました。2重起動のチェックを行うプログラムが、 メインのプログラムから呼ばれるサブフォームで、 DLL化されている状態なのですが、これでも可能なのでしょうか?

関連するQ&A

  • VB6での二重起動(複数起動)の制御について

    Visual Basic6で (1)test.exeを起動する (2)もう1回、test.exeを起動する ここで、(1)のtest.exeを終了して(2)のtest.exeを新たに起動したいです。 二重起動の禁止の方法は色々見つかるのですが、どれも2回目に起動した方を終了してしまいます…。 よろしくお願いします。

  • スタートアップの二重起動

    WindowsXP Professional SP1で、All Usersのスタートアップ項目に「覚え書」「SpotWeather」など、いくつかのソフトを登録しているのですが、これらのソフトが起動時に必ず二重起動してしまいます。 二重起動できないものはいいのですが、二重起動するとエラーメッセージが出るものなどは特に気になります。 もちろん、All Users以外にスタートアップ項目への登録はないですし、一旦全てのプログラムを終了させてから電源をOFFにして再度起動してみても同じ状況でした。 また、msconfigで確認すると、スタートアップに登録しているソフトに関して、スタートアップ項目として、場所が「Common Startup」のものと「Startup」のものとの2種類があったのですが、片方のチェックを消すともう片方も消えてしまい、全く起動しないという状況になってしまいます。 どこかで確認・修正する方法はないでしょうか?

  • 二重起動チェックについて

    WindowsServer2003でターミナルサービスを使ってシステムを構築しています。 一応GetProcessesByNameを使用して二重起動チェックを行っていたのですが、この場合だと他のユーザーが別のPCから同じアプリケーションを起動した際に二重起動チェックに引っかかってしまいます。 ターミナルサービス上でユーザー毎にアプリケーションの二重起動チェックは出来ないのでしょうか。 開発言語はVB.NET2003です。 よろしくお願いします。

  • プログラムの排他制御

    こんにちわ。 WindowsXP VC++でプログラムを組んでいるのですが、 同時に起動されても、並列で動くのがいやなので 後から起動された方は先に起動された方が終了するのを 待つようにしたいと思っています。 プログラムが使用するのはAccessDBであるためDBで排他するのは嫌なので、 実行中のプロセスをみて、同じ名前のプロセスがいたら、 数秒ウェイトをかけてまたプロセスチェック、というのをループで 実現しようと思っています。 でも、プログラムがかなり同時に起動してしまった場合、 (起動してプロセスのチェックをするまでの間に他プロセスが起動) 2つのプロセスはデッドロックのように、 お互いが終了するのを待つようになってしまいます。 なにか、うまい解決方法はないでしょうか? よろしくおねがいします。

  • 起動が遅く、音がエコー、2重3重になるのですが

    2006年発売のVAIOタイプFを使っています。昨日いきなり、起動が遅くなり、起動音や、youtube等の音がエコーがかかったり、2重3重になるようになってしまいました。他の機能は問題なく使えるのですがこれは故障でしょうか?ネットで調べてディスクチェックというものもやってみたのですが結果がよくわかりません。詳しくわかる方がいらっしゃればどうすればいいのかご回答の方お願いいたします。

  • Perl のプログラム二重起動について

    Perlでの二重起動?についての疑問があるので質問いたします。 ============================ (状況) 1)Aというプログラムが存在し、そのAというプログラムはタスクスケジューラーによって10分毎に起動しています。 2)Aプログラムは全体の処理が終わるまでに通常5分の時間がかかります。処理が終わればexitで終わります。 (ちなみにAプログラムはファイル書き込みなどの排他処理が必要なフローはありません) ============================ というのをふまえ、疑問点が出てきたので質問します。 例えば、あるイレギュラーな出来事が起こり、Aプログラムの処理時間が15分に伸びてしまいました。 しかし、タスクスケジューラーは10分間隔でAプログラムを起動させます。 このとき、オーバーした5分間だけAプログラムは二重に起動することになります。           0   5    10 15 20 最初のAプログラム ===============  次のAプログラム           ========== この場合、windows7上のActivePerlは、どんな動きをするのでしょうか? 予約みたいな形になり、最初のAプログラムが終わってから次のAプログラムが動くのでしょうか? それとも二重起動するのでしょうか?

    • ベストアンサー
    • Perl
  • プログラムの二重起動防止

    プログラムの二重起動を防止したいんですが、V.B.のようにjavaにも、二重防止の関数があるのでしょうか? あるとすれば、どういったものなのでしょうか?

    • ベストアンサー
    • Java
  • ディレクトリ作成&二重起動不可

    1:プログラム起動時に任意のディレクトリがあるか確認してなければ、作成しあれば実行しないようにするにはどうすればいいでしょうか? 2:プログラムが起動している時の二重起動を防止する関数等はあるのでしょうか? ・起動時にテキストファイル等を作成し、PG終了時に削除するようにして起動しているかの判断をとるようなのは作成したのですが、DOS窓を×で閉じると、削除しないので困っています。 何か良い方法がありましたらよろしくお願いします。 環境 ・WindowsXP ・cygwin(コンパイルのみ)

  • 二重起動チェックについて

    Solarisで、プロセスの二重起動チェックを行いたい のですが、システムコールの使用など簡単に行える 方法はないでしょうか? よろしくお願い致します。

  • 二重起動禁止にする理由とは

    プログラム(アプリケーション)の二重起動を禁止にする処理があるようですが、禁止にしなければならない理由とは、どういったものがあるのでしょうか?

専門家に質問してみよう