• ベストアンサー

vb.net2003で困っています。

vb.net2003で困っています。 プログラムの二重起動をチェックするため、process.getprocessesbynameを使用し実行すると プログラムがprocess.getprocessesbynameのところで固まります。 (CPUの使用率が100%になっていました。) イベントビューアを確認すると、プログラムを強制終了した時刻にperflibのエラー(イベントID 2002) が発生しています。 記述は色々なサイトで掲載されていたものを、そのままコピー&ペーストしてますのでおかしくないと思うのですが...。 同じような経験をされたかたはいませんでしょうか?

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

  • ベストアンサー
  • zant
  • ベストアンサー率25% (7/28)
回答No.1

私は、二重起動チェックはMutexを使うようにしています。

参考URL:
http://dobon.net/vb/dotnet/process/checkprevinstance.html
GOLGO19
質問者

お礼

原因はわかりませんでしたが、仕方がないのでMutexを使用して回避することにしました。 回答有難うございます。

GOLGO19
質問者

補足

Mutexを使う方法も検討しましたが、呼び出されるプログラム全てに修整コーディングが必要なため、ち没になりました。 しかしこのような状況では、再考の必要がありそうです。 回答、有難うございました。

関連するQ&A

  • vb.net2003での二重起動防止について

    度々お世話になっています。 vb.net2003でアプリケーションを作りました。 そこで二重起動防止を行いたい為に、Process.GetProcessesByName メソッドを使用して行いました。 二重起動防止は出来ているのですが、ターミナルサービスでリモートデスクトップ接続を行い、同一ユーザーの二重起動防止はしたいですが、1ユーザーでも使用していたら 別ユーザーで起動できません。 何か良い方法はありませんでしょうか? 出来れば解説しているサイトがあれば教えて下さい。

  • VB6から他のプログラムを強制終了したい

    こんにちは、ただいま、VB6からあるプログラムを強制終了したいのプログラムを作りだいです。 強制終了したいのプログラムがVBのプログラムから起動じゃなくで、VBのプログラム実行する前に起動したのプログラムです。 API関数 TerminateProcess(hProcessHandle, 0&) を使いたいですが、現存のプロセスのProcessHandleを取得できません。 困ってる。 お手数ですが、解決方法が有れば教えてください

  • VB.NETでCreateProcess

    VB.NET(2003)で、別exeを起動し、終了まで待機するということをするために、 system.Diagnostics.Processクラスを使用していました。 しかし、実際に動かす環境がMetaFrameなのですが、 その環境では、このクラスは使用できないようで画面の起動すらできなくなります。 ですので、別の方法ということで、APIのCreateProcess、WaitForSingleObjectを使用するように変更したいのですが、 VB.NETでのサンプルが余り無いため、パラメータにどのように設定するかなどがよくわかりません。 API自体使ったことが無いので、根本的にわから無すぎるのです・・・ VB.NETでAPI利用サンプルが多く掲載されているサイト、 できれば、CreateProcess、WaitForSingleObjectを使用しているサンプルなどありましたら、ご教授願います。 よろしくお願いいたします。

  • VBプログラムの終了

    VB6.0で作成した実行ファイル(exe)を終了させても タスクマネージャのプロセスに残ってしまい、 もう一度プログラムを起動することができません。 (プログラムで二重起動防止の処理をしています) このプログラムをVBのラインタイムが入っていない マシンで動かしているのですが、 やはりそれが問題なのでしょうか? それとも別に何か原因があるのでしょうか?

  • VBからシャットダウンさせる方法

    VBのプログラムから、強制的にWINDOWSをシャットダウンさせるにはどうすればよいでしょうか。 (長時間の処理が終了した後、又は、指定した時刻を過ぎたら自動的にシャットダウンさせたい) VB6.0、OSはWindowsXPです。

  • VB2005でのWithEventsについて

    お世話になります、当方現在データベースアプリをVB2005proで作成しているのですが、VB6→VB2005への更新です。 VB6の時は複数プログラムで作成したため、あえて、アップグレードウィザードを使用せずに作成しております(デザインも変更したい為) それで、今回質問させて頂きたいのは、複数のフォームに貼り付けたボタンイベントを同じ処理で分岐できないかどうか教えて頂きたいのです。 具体的にはフォームにボタンを5個ほど用意して。フォームのクリックイベントでF1キーが押されたらButton1_Clickイベント、F2キーが押されたらButton2_Clickイベント などのショートカット機能を実装したいのです。 VB6の場合は共有クラスにWithEventsでForm型を宣言して、Load時にロード元のフォームをWithEventsのフォーム型にセットすればイベントを認識してくれたと思うのですが。同じことを.NETで行っても、イベントをハンドルしてくれませんでした。 .NETでは各フォームイベント毎に記述するしかないのでしょうか? 初心者の質問で申し訳ありませんが、何卒よろしくお願いいたします。

  • VB.NET 2003 でグラフィックの表示。

    VB.NETをはじめたばかりです。 プログラムのスタート時、まずフォーム内でGraphicsオブジェクトを取得して表示させたいのですが、グラフィックに関する事項が表示しません。 一方、同じコード記述をButtonイベント内に記述し、ボタンONではグラフィック部分の描画が可能です。 フォーム内の記述だけでスタート時にグラフィックを表示するにはどのようにすればよろしいのでしょうか。 なお、フォーム内のテキスト表示、ラベルなどはイベントの発生なしでも表示します。

  • Accsess+VB.NETでの入力フォームで困ってます

    Accessでテーブルを作り、VB.NETで入力フォームを作って 運用しようと考えています。 内容は似た内容でいえばタクシーの運転日誌みたいなもので、 入力するのは時間と距離(走行メーター?)のみです。   ・出庫(出勤)時間   ・客を乗せた時刻、そのときのメーター   ・客を降ろした時刻、そのときのメーター   ・次の客、またその次の客・・・   ・最終的に勤務を終え帰社した時間とメーター という入力から、 やりたいことは (1)全勤務時間の計算と表示 (2)休憩や回送時間を除いた実車時間 (3)実車走行率(時間) (4)全走行距離の計算と表示 (5)実車走行距離の計算と表示 (6)実車走行率(距離) VBのフォームで実際に入力されたデータを拾って 表示させることは各レコードともできているのですが、 計算した結果をどう表示(記述)したらいいのか悩んで います。 DBにそれ用のフィールドもフォームにテキストボックス も用意してありますが、どこにどんな式の記述をいれたら 目的通りに動いて(表示されて)くれるのか。 どなたか助けてください。 よろしくお願いします。

  • processコンポーネントの使用方法

    VB.NET2003/1.1FrameWork 現在MSDNライブラリ(プロセスが応答しているかどうかを確認する)を実際に動作させてみようと思っていますが、波線が2箇所にでて困っています。 ご存知の型がいればご教授下さい。 http://msdn2.microsoft.com/ja-jp/library/aykwfbdh(VS.80).aspx 手順:破線部は「」でくくりました 1、フォームにButton1を作成 2、processコンポーネントをForm1に貼付け(process1) 3、Button1_Click(...) ~ 内に以下を記述 Dim myProcesses() As 「process」 myProcesses = 「Process.GetProcessesByName」("notepad.exe") If myProcesses(0).Responding Then myProcesses(0).CloseMainWindow() Else myProcesses(0).Kill() End If ?? 一つ目が"型が必要です。" 二つ目が"'Process.GetProcessesByName'は'プロセス'のメンバーではありません" process を System.Diagnostics.process に変えると波線はでなくなりますが、違うような気がするのです。 メモ帳(notepad.exe)を起動している状態で本プログラムを実行すればmyProcesses(0)に値が入ると想像しているのですが、length=0となり「インデックスが配列の境界外です」とエラーになります。 根本的な事で申し訳ありませんが、よろしくお願いいたします。

  • Timerを使用しての強制待機

    Timerを使用しての強制待機を教えてください。 例えば、VBでのプログラム上でTimerを用いて 強制的に10秒待機させるには どうすればいいですか? ただし、イベントを介しての時間待機ではなくて 単純にプログラムを待機させる方法を教えてください。   皆様宜しくお願いします。

専門家に質問してみよう