• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2005 サービスでエラー時の通知方法について)

VB2005 サービスでエラー時の通知方法

このQ&Aのポイント
  • VB2005初心者のため、サービスプロジェクトで通信のプログラムを作成しています。しかし、エラー時の処理に困っています。エラー時にはログに出力することはできますが、画面上に表示する方法がわかりません。また、NotifyIconを使用してもうまく表示できません。
  • 現在、DBにエラー内容を書き込み、タイマーでエラー一覧を通知する仕組みを作っていますが、iniファイルからの読み込み時のエラー処理が課題です。そのため、エラー内容をDBに登録できません。ログ出力だと知らないうちに出力されてしまう可能性があるため、画面上に表示する方法を探しています。
  • VB2005サービスでエラーが発生した際に、画面上に表示する方法を教えていただけませんか?ログ出力だけでは見落とす可能性があるため、画面上にエラーメッセージを表示したいです。また、NotifyIconを使用してもうまく表示できません。

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

  • ベストアンサー
  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.1

> 画面上にも何か表示するようなことはできないのでしょうか。 メッセージボックスを表示する関数を用意してスレッドで呼び出してはどうなのでしょうか?

mountain11
質問者

お礼

遅くなって申し訳ありません。 返答、ありがとうございました。 メッセージボックスは、サービスプロジェクトで使用することはできないようですので諦めました。 お騒がせしましたが、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB 実行時エラー '3001'

    VB6.0(SP5)で開発していて、エラーが発生して困っております。 今まで使っていたプログラムにちょっとバグ改修をして、新しいバージョンのプログラムを配布したら、Win98マシンで何台か、次のエラーが出ました。 「実行時エラー'3001': 間違った種類または許容範囲外の引数を使用しているか、使用している引数が競合しています。」 プログラムは、「ログイン画面を表示し、IDとパスワードを入力し、DBに登録されているID&パスワードだったら実行」という処理をしています。DBはMySQLです。 エラーが出るマシンでは、このログイン画面(VBForm)が出る前に上記エラーを表示して、終了してしまいます。 ログイン画面を表示するまでの処理としては、 ・.iniファイルから各種パラメータを読み込んで変数にセット ・DBへの接続の文字列を作成する ・AdoConnectSetを実行 ・Formの各種プロパティを設定 ・FormのShowを実行 このような感じです。 そしてさらによくわからないのが、上記手順の合間合間に、MsgBox関数で「○○が終わった」などと、進行状況を表示する処理を追加すると、エラーが発生することなく、ログイン画面の表示までたどり着けるのです。 開発機はWin2000マシンですが、実行しているのはWin95,98,2000などいろいろで、上記のエラーが出るのは98マシンです。 (98マシンでちゃんと動作するのもあります) ズバリの解決法、情報へのポインタ、アドバイス、ヒント... を求めております。よろしくお願いいたします。

  • VB2005でサービスプロジェクトのサービス開始処理でのエラー

    VB2005の初心者です。 サービスプロジェクトを作成していますが、サービスを開始するOnStart処理で例外が発生してしまいました。サービスではなく、通常のFormで同じ処理をするとうまくいくのですが、サービスだとうまくいきません。 サービスプロジェクトで、クライアントとTCP/IP接続をするのですが、OnStart処理は下記です。 Protected Overrides Sub OnStart(ByVal args() As String) Dim LbFlg As Boolean Try G_LogWriter = New clsLoopLogFile() G_LogWriter.Open(Application.StartupPath() + "\EHROrcaService_Logfile.log", 180, 50, True) 'リスナーを作成する 'Gserver = New TcpListener(System.Net.IPAddress.Parse("192.168.7.213"), 8210) 'リスナーを開始する。Stopするまで受信を待機する。 Gserver.Start() 'ワーカースレッドの作成と開始 スレッドにしないとサービスを起動できない G_worker = New Threading.Thread(AddressOf AcceptTcpClient) G_worker.Start() 'リスナーの開始に失敗した場合 Catch ex As Exception LbFlg = WriteLogFile(ex.ToString) LbFlg = WriteLogFile(ex.Source) LbFlg = WriteLogFile(ex.Message) LbFlg = WriteLogFile(ex.InnerException.Tostring) 'LbFlg = G_ClsLoopLogFile.WriteLog("Exception") Gserver.Stop Finally End Try End Sub G_LogWriter = New clsLoopLogFile() で落ちてしまいます。 エラーの内容は下記です。 System.TypeInitializationException: 'EHRcommon.basEhrtascal' のタイプ初期化子が例外をスローしました。 ---> System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。 G_LogWriter は、basモジュール、'EHRcommon.basEhrtascal' でPublicで定義されていますが、どうしてもエラーが出てしまいます。 質問内容が漠然としているかもしれませんが、通常のFormだとエラーは出ないのに、サービスプロジェクトだとエラーとなるため、困っています。 何かヒントになることでも良いので、皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • VB6.0で、ランタイムエラーを全て出力するには?

    VB6.0で作成したプログラムの実行中にランタイムエラー(以後、「エラー」と記載)が発生した場合、 発生したエラーを全てログに出力し、後続処理を継続する方法を教えてください。 以下に詳細を示します。 '=============================== ' サンプル '=============================== Sub Main()   On Error Resume Next   処理A   処理B   処理C   処理D   If Err.Number <> 0 Then     Errの情報をログに出力   End If End Sub 例えば、上記プログラムの処理Aと処理Cでエラーが発生した場合、 それぞれのエラー情報を出力して、処理Dまでの処理を実行したいです。 しかし、上記のプログラムでは、処理Cのエラーによって処理Aでのエラーが上書きされてしまいます。 処理Aの後にも「Errの情報をログに出力」処理を入れれば良いのかもしれませんが、 実際のプログラムでは、どこでエラーが発生するか分からない前提としたいので、 この方法でエラーを出力しようとすると、プログラムが「Errの情報をログに出力」処理だらけになってしまいます。 何か良い方法はありますでしょうか?

  • vb6について

    会社で、GPIB、I/O、ActiveXコンポーネントの環境下で、 VB6のプログラムを使用して試験評価を行っているのですが、 VB6のコードを変更するにあたり、うまくいきません。 どなたかご教授願います。 内容は、 コードを変更したいので、元々の.vbpを開くと、 まず、「オブジェクトライブラリは登録されていません」とエラーが出ます。 その後、「プロジェクトのロードを続けますか?」となるので、OKを押します。 すると、「読み込み中にエラーが発生しました。・・・.logを参照してください」と出ます。 気にせず、OKを押し、コードの内容を変更したあと(※変更しなくても)、 プロジェクトの上書き保存をしたあと、.exeの作成(上書き)をすると、 また、「読み込み中にエラーが発生しました。・・・.logを参照してください」と出ます。 気にせず、OKを押し、作成した.exeを開くと、変更した内容になっていますが、 いざ、実行すると、「実行時エラー”13” 型が一致しません」とエラーが出ます。 .logの内容を確認すると、”クラス・・・がロードされていません”とか、 ”プロパティ名・・・が不正です”とか表示されています。 試験する上で、使用しやすいようにVB6のコードを変更したいのですが、 試験で使用しているPCで元々のコードを変更しようとすると、上記のようなエラーが出ます。 どなたか、解決方法を教えてください。

  • VB6のプロジェクトロードエラーについて

    よろしくお願いします 現在、VB6で開発しているシステムのメンテナンスを行なっているのですが、 先週まで正常にロードされていたプロジェクトでエラーが起こるようになりました。 プロジェクト起動後、オブジェクトライブラリは登録されていません。のメッセージBOXが出て、引続きフォームのロードを続けると、読込中にエラーが発生しました。詳細はlogを確認。というメッセージBOXが出ます。 logの内容が「行 17: クラス MSComctlLib.StatusBar(コントロール StatusBar1) はロードされていません。」という内容です。 最後にロードした時から触ってないのですがエラーになり始めました。 ただ、PCにaccess2010をインストールしましたのでその影響が出ているのでしょうか? すみませんが、よろしくお願いします。

  • VB2005 フォームロード時にメッセージ表示

    VB素人です。 VB2005で、あるフォームクラスを起動した際の フォームロード処理で、エラー判定処理(DBデータを取得して判定)を 行っています。 エラーと判定された場合、メッセージBOXを表示するのですが、 フォームが表示される前に、メッセージのみが表示されてしまいます。 フォームが表示→メッセージが表示(同時も可)にするには どのようにすれば良いのでしょうか? アドバイスをお願いします。

  • VB.Netでのエラーについて

    こんにちわ。 いまVB.Netでプログラミングしている者です。 あるVBプロジェクトファイル(aaaa.dllとします)で ある.dllファイル(bbbb.dllとします)を参照設定しています。 そこでこのVBプロジェクトファイルをビルドすると, このVBプロジェクトファイル内のあるVBファイルの行で, 「Public Function ~」はプロジェクトbbbb.dllで宣言されていますが,プロジェクトaaaa.dllによって参照されていません。」 というコンパイルエラーになってしまいます。 ソリューションエクスプローラで見たところ, 上記のVBプロジェクトファイルの参照設定で,bbbb.dllはエラー表示されていません。 念のためbbbb.dllを一旦削除して,最新のbbbb.dllを改めて「参照追加」したのですが,状況が変わりません。 このエラーは何が原因なのでしょうか? 教えてください。よろしくお願いします。

  • VB2008にてWEBのDLL作成

    下記のような流れの処理を作成したいと思っています。 Webページ、()の部分は別言語で作成されています。 ・HPから入力された内容を取得(登録ボタン押下) ・DBへ登録 ・成功/失敗などの結果を返す(結果内容により画面遷移) VB2008にてプロジェクトを新規作成する際はどれを選べばよいかもわからず・・・ 見本などありましたら、ご教授お願いします。 環境 Windows2003 server IIS6.0 開発 VB2008 SQLServer2005

  • VB2008→VB2010でエラーが出てまいります

    VB2008→VB2010でエラーが出てまいります  今日は、質問させていただきます。どうぞよろしくお願いいたします。  VB2008+Vistaから、VB2010に変更しようといたしました。 一度必要のないと思われるものをすべてアンインストールし、 VB2010をインストール後、作成中のプロジェクトを開きましたところ、 以下のようなエラーが出てまいります。 ↓【エラー一覧】の項目でございます 警告 1 タイプ ライブラリ "Microsoft.Office.Core" のラッパー アセンブリが見つかりません。 警告 2参照コンポーネント '(プロジェクト名)' が見つかりませんでした。 警告 3参照コンポーネント 'Microsoft.Office.Core' が見つかりませんでした。 ↓【参照】タブを開こうといたしますと、下のような表示が出てまいります。 ページを読み込もうとしているときにエラーが発生しました。 ターゲット フレームワーク '.NETFramework,Version=v4.0' の mscorlib を解決できませんでした。これは、ターゲット フレームワークがインストールされていない場合、またはフレームワーク モニカーの形式が正しくない場合に発生する可能性があります。  .NET Frameworkの何かを消してしまったのでは?などと考えまして、 再インストールなど奮闘してみましたが、解決いたしません。。。 インストール済みの.NET~は添付図の項目になります。  もしお詳しい方がいらっしゃいましたら,是非ともアドバイスいただけないでしょうか。 どうぞよろしくお願いいたします。

  • VBからDOS画面に表示されている文字を読み取りたい

    どなたかご存知の方教えてください。 あるプログラムがDOS画面で処理され正常に処理されたら「正常に処理されました。何かKEYを押してください」とDOSの画面で止まってしまいます。これに対応して予め起動したプログラムからこのDOS画面に向けて改行KEYなどを送って先に進めることは出来る様になったのです。 ですが、エラー時の対応が出来ず困っています。 そのDOSで処理するプログラムはエラーの時、ログの出力などは無いようで、ただ画面に「エラーが発生しました。xxxxが原因です。何かKEYを押すと終了します」と表示して停止します。 このDOS画面に表示されたメッセージを読み取って処理を継続するかどうかを判断したいのですが、どの様にすればよいのでしょうか? そのプログラムはメーカ作成のもので、こちらから変更依頼しても受け入れられるようなものではありません。 WindowsXpSP2でVB(ver6.0)による開発です。 WIN32のAPI使用でも結構です。 よろしくお願いいたします。

このQ&Aのポイント
  • Legion T5-26AMRのシステムを起動すると「BiInitializeLibrary failed 0xc0000001」エラーまたは0135ファンエラーが表示されます。
  • Windowsが起動せず、BIOSのアップデートができないため、ダメージの原因を特定できません。
  • SSDを新品に交換してもエラーが解消されず、OSが立ち上がりません。解決方法について教えてください。
回答を見る