VB6.0でプログラムの複数起動を制御する方法は?

このQ&Aのポイント
  • VB6.0のプログラムで、複数のプログラムを制御する方法を教えてください。
  • 複数のプログラムを起動するボタンがあるメニューにおいて、既に起動中のプログラムを再度起動させないようにしたいです。
  • さらに、既に起動中のプログラムがある場合に他のプログラムを起動させないようにしたいです。
回答を見る
  • ベストアンサー

プログラムを複数(又は二重)起動しないように制御したい

みなさんこんにちは 言語はVB6.0で、OSはWin2000Proです。 Main.exeというメニューにTest1.exeとText2.exeとい うプログラムを起動するボタンが二つあるとします。 Text1.exeを起動し、Text1.exeが起動している時に更に メニューからText1.exeを起動しようとした際、起動しな いように制御を行いたいのです。 この他、Text1.exeが起動している最中は、メニューから Text2.exeを起動しようとしても、やはり起動できないよ うにしたいのです。 良い方法はありますでしょうか? 色んなサイトで情報を収集してテストして見ましたが、 どうにも上手く行かず困っています。 よろしくお願いします。

  • mk100
  • お礼率81% (35/43)

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

CreateToolhelp32Snapshot

参考URL:
http://www.vbvbvb.com/jp/gtips/index.html

その他の回答 (1)

noname#4564
noname#4564
回答No.1

  > Text1.exeを起動し、Text1.exeが起動している時に更に > メニューからText1.exeを起動しようとした際、起動しな > いように制御を行いたいのです。 App.PrevInstanceプロパティを使用するか、またはMutexを使用します。 > この他、Text1.exeが起動している最中は、メニューから > Text2.exeを起動しようとしても、やはり起動できないよ > うにしたいのです。 Windowクラスとキャプションを指定してFindWindow。 > 色んなサイトで情報を収集してテストして見ましたが、 どんなサイトでどんな情報を収集したのか、 > どうにも上手く行かず困っています。 どう上手くいかないのか、書いていないので、まるでお話になりません。  

mk100
質問者

お礼

App.PrevInstanceは使用して見ましたが、Text1.exeを 起動後、再度Text1.exeを起動しようとしますと、App.PrevInstance の結果はFalseでした。 何度やっても同じで、いくつも起動できてしまいます。 FindWindowも使用して見ましたが、「SubまたはFunctionが 定義されていません」とエラーとなってしまいます。

関連するQ&A

  • fscommandで起動したexeから外部ファイルが読み込めない

    こんにちわ。Flash勉強中の者です。 よろしくお願いいたします。 現在、flashで作成したメニュー画面をexe(仮にmenu.exe)で書き出し、その中のボタンのfscommand(fscommand("exec", "main.exe");)でもう一つのexe(仮にmain.exe)を起動させたいと思っております。 WINDOWS XPにてmenu.exeを起動し、そこからmain.exeを起動させたところ、main.exeにリンクしてある外部ファイル(テキストやjpg画像)が読み込めないようです。 (他の症状としては、main.exeを起動させた際読み込みの処理が遅く感じます) main.exe自体は起動していますし、menu.exeを介さず、直接main.exeを起動した場合は問題ありませんでした。 何か解決方法の心当たりがご教授お願いいたします。 ※ファイル構成はこんな感じです。 main.exe fscommand ┬menu.exe      ├text.txt      ├img┬gazo1.jpg         ├gazo2.jpg         ├gazo3.jpg ※製作環境はmacOS 10.3.9 FlashCS3 actionscript2.0です。 よろしくお願いいたします。

  • VB6のShell制御について

    VB6のShell制御について 以前http://okwave.jp/qa/q6069911.htmlで 質問させていただき、解決することができました。 取引先などのダイアログexeを何本か開発し、連結テストをした際に PM経由でテスター(エンドユーザー)から「ダイアログ起動中は、起動基のexeを 触らせないようにできないか」と 指摘があり、修正をしています。 Shellのパラメータ等を弄ったり、書籍やネットを調べてみましたが 指摘を満たすようなサンプルが見つかりませんでした。 納期も近く、どのようにすれば指摘点を満たせるか教えていただけないでしょうか? 開発環境 Windows XP PRO SP4 Visual Basic6.0(SP6)

  • 一定時間ごとにプログラムを起動させるプログラムを作りたい

    「一定時間ごとにプログラムを起動させる」プログラムを、 作成したいと考えております。 #include <windows.h> #include <stdio.h> void CALLBACK kidou() { char pass[255]; sprintf(pass,"./test1.exe"); ShellExecute(NULL, NULL, pass, NULL, NULL, SW_SHOWNORMAL); } void main() { SetTimer(NULL,1,1000,kidou); } この様な感じで作成しましたが、「test.exe」を起動できませんでした。 どのような修正をしたら良いのか教えていただけないでしょうか?

  • VBプログラムを関連付けしたファイルで起動をしたいのですが。

    NC制御テキストコードファイル(*.nc)をクリックしてVBで作った作図シュミレーションプログラムを起動し処理したいのですが、どのようにしたらよいのかわかりません。どなたか教えていただけませんでしょうか。

  • VB6のメッセージフックについて

    VB6SP6、XPの環境で SDI形式のアプリケーションを組んでいます。 MainのフォームがFormLoad()で SetWindowLong()その後、VC++のDLLを起動 そのDLLからWM_USER+XXXが送信されてきます。 標準basでWndProcを書いて SDIのMainフォームのTextを更新するように 設計しているのですが WndProc内にText1.Text="ABC"とコーディングすると Mainのフォームが新たに起動されてしまいます。 WndProc() if msg = WM_USER+XXX Text1.text = "ABC"<<<ここでText1があるMainFrmが新たに起動 end if 此れを防ぐにはどうすればよいでしょうか SDIでなければ(標準EXE)、ならないようなのですが

  • Windows7で自作EXEが起動しない

    OS:Windows7(Professional) お世話になります。 XPで作成したEXE(VB6で作成)をWindows7で実行したところ、上手く起動してくれません。 自作したEXEというのが、メニューEXE、ログインEXEとあって、 メニューEXEは起動時にログインEXEをShellExecuteで起動します。 問題は、メニューEXEを起動しても、ログインEXEが起動されない事です。 (ログインEXE自体は単体で起動できました) ShellExecuteが問題?? とも思いましたが、 EXEを格納しているフォルダの変更や再作成などを行うと上手く起動し、 問題なく動作しました。 ですが、しばらくするとまた起動しなくなりました。(←まったく理解できない) フォルダのアクセス権限の問題かと思い、プロパティでフォルダの 「アクセス許可」を設定しましたが、やはり起動してくれません。 (↑「Everyone」をフルコントロールで追加しました) ユーザアカウント制御はOFF(通知しない)に設定しています。 また、「互換性のトラブルシューティング」を実施してみましたが結果は 変わりませんでした。 Windows7が嫌いになりそうな現象です。。 何かしらご存知の方いらっしゃいましたら、よろしくお願いします。

  • EXCELVBAからVB6.0への制御の戻し方

    EXCEL VBAに関する質問です。 1.VB6.0からEXCELファイル(test.xls)を開く 2.VBAにて決定ボタンをEXCELに作成、表示 3.test.xlsを編集する 4.決定ボタンを押すと編集していたtext.xlsを 保存し、選択しているSHEETをVBに返す 5.VBに制御を戻す 上記のことを行いたいと考えています。 4.5.についてのやりかたがわからないので お教えいただければと思います。 よろしくお願いします。 :とりあえず VB側にPUBLIC FUNCTION BACK_FROM_EXCEL() というのを作って VBA Private Sub BTN_KETTEI() Call BACK_FROM_EXCEL END SUB という感じで試してみたのですが・・・ 案の定だめでした。

  • Visual basic6.0からショートカット(.lnk)を起動したい。

    Visual basic6.0からショートカット(.lnk)を起動したいと思っています。 "TEST.EXE"から"TEST.txtへのショートカット"のlnkファイルを作って、 VBからはこのショートカット側を指定して、TEST.EXEを起動させたいのですが、 出来ないことなのでしょうか? 宜しくお願い致します。

  • 使用しているEXEファイルから、別のEXEファイルをクローズする方法

    今現在簡単なプログラムを作成しておりまして、 TEST1.exeとTEST2.exeの二つのプログラムがあります。 TEST1.exeとTEST2.exeの二つのアプリケーションを起動 し、TEST1.exeが終了したら、TEST2.exeのアプリケー ションも自動的に終了するようにしたいのですけど、何か やり方ってありますでしょうか? 作成しているソフトはVB6.0/Win2000Proです。 よろしくお願いします。

  • VBAのSHELLを用いてEXEファイルを起動したものの、微妙にうまくいかない

    エクセルのVBAのshellを用いて、exeファイルを起動させてました。 exeファイルはCを用いたシンプルなもので、テキストファイルを作成します。(ソースは下記参照) C:\testのディレクトリにエクセルファイルを作成し、 Shell "C:\test\test.exe" を実行させたところ、ファイルはC:\testのディレクトリに出来ずに、マイドキュメントに出来ました。 このexeファイルを直接ダブルクリックしたときは、C:\testのディレクトリにテキストファイルが作成されます。 ダブルクリックしたときと同じように、C:\testのディレクトリにテキストファイルを作成する方法があれが教えてください。 よろしくおねがいします。 (ソース、hello.txtというファイルをつくり、hello!を書く) main( ) { FILE *fp; /* ファイルポインタ */ fp = fopen( "hello.txt", "w"); fprintf(fp,"hello!\n"); fclose(fp); return 0; }

専門家に質問してみよう