サービスアプリからメッセージボックスの表示

このQ&Aのポイント
  • サービスアプリからメッセージボックスを表示する方法について、デスクトップとの対話を許可する設定やMessageBox.Showメソッドを使用したが表示されない問題が発生しています。
  • 開発環境はMicrosoft Visual Basic 2008、動作確認はWindows 7のProfessionalおよびEnterprise 64ビットで行っています。
  • 32ビットやWindows 8でも動作させたいと考えていますが、現在の環境ではメッセージボックスが表示されないため、原因と対処法を知りたいとしています。
回答を見る
  • ベストアンサー

サービスアプリからメッセージボックスの表示

表題の件ですが、サービスアプリを作成しておりメッセージを表示したいと思います。 通常のフォームアプリですと、「msgbox」でメッセージボックスを表示出来ますが、サービスアプリから同じコードを書いても何も表示されません。 「デスクトップとの対話をサービスに許可」をオンにすると、「msgbox」でメッセージを表示するタイミングで「サービスがメッセージ出そうとしてますが表示しますか?」という感じのダイアログが出て、「OK」を押すとようやくメッセージボックスが表示されます。 これでは「キャンセル」ボタンを押されるとプログラムが停止する等で実用性が無いので別の方法を探したところ、 MessageBox.Show("test", "caption", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification) で表示出来る、という方法を見つけました。 試したところ、ビルド時にエラーは出ませんが動作させてもメッセージボックスは表示されません。 「デスクトップとの対話をサービスに許可」をオン・オフどちらにしても表示されません。 6番目の「ServiceNotification」を「DefaultDesktopOnly」に変更しましたがやはり表示されません。 開発ツールは「Microsoft Visual Basic 2008」で動作環境は「windows7」の「Professional 64ビット」と「Enterprise 64ビット」です。この環境で動作確認後に32BitやWindows8でも動作させたいと考えております。 原因や対処法をご存知の方がおられましたら、ご教授頂けると非常に助かります。 お手数をお掛けいたしますが、よろしくお願いいたします。

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

  • ベストアンサー
  • koba0626
  • ベストアンサー率67% (19/28)
回答No.1
ZGMF-X56S
質問者

お礼

ありがとうございます。 月曜日に試してみます。

ZGMF-X56S
質問者

補足

検索したところ、C++と思われるコードは結構見つかりましたが、VBでのコードは見つけられませんでした。 Public Declare Function WTSSendMessage Lib "wtsapi32.dll" ( _ ByVal hServer As Long, _ ByVal SessionId As Long, _ ByVal pTitle As String, _ ByVal TitleLength As Long, _ ByVal pMessage As String, _ ByVal MessageLength As Long, _ ByVal Style As Long, _ ByVal timeout As Long, _ ByRef pResponse As Long, _ ByVal bWait As Long) As Long 上記を使用していろいろ試しましたが、表示されませんでした。 もうしばらく試してみます。

関連するQ&A

  • C#のクラスライブラリでメッセージボックスを表示

    VisualStudio2010でVisualC#のクラスライブラリやコンソールアプリケーションでメッセージボックスを表示させたいのですが、 Windowsフォームアプリケーションでは MessageBox.Show("メッセージ本文","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Exclamation); で表示させることができたのですが、 クラスライブラリやコンソールアプリケーションでの中から表示する仕方が分かりません。(OS WindowsXP VisualStudio2010) 1) VisualC#のクラスライブラリでメッセージボックスを表示させるには public class Class1 { }   の中にどのようなコードを記述すればよいのでしょうか。 2) VisualC#のコンソールアプリケーションでメッセージボックスを表示させるには static void Main(string[] args) { }   の中にどのようなコードを記述すればよいのでしょうか。 よろしくお願いします。

  • VB.NET メッセージボックスの表示イベント

    こんにちは。 メッセージボックス(MsgBox)の表示を検出するためのイベント並びに表示内容をテキストで取得することは可能でしょうか?

  • フォームを表示してからメッセージボックスを表示する

    メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。 ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、 今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう? Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" End Sub だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを開いたときのイベントは複数あるようで、 Private Sub Form_Activate() MsgBox "Form_Activate" Debug.Print "Form_Activate" End Sub Private Sub Form_Current() MsgBox "Form_Current" Debug.Print "Form_Current" End Sub Private Sub Form_GotFocus() MsgBox "Form_GotFocus" Debug.Print "Form_GotFocus" End Sub Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" Debug.Print "Form_Open" End Sub Private Sub Form_Load() MsgBox "Form_Load" Debug.Print "Form_Load" End Sub をすると、 ・Form_Load ・Form_Activate ・Form_GotFocus ・Form_Open ・Form_Current の順に開きますが、やはりフォームが最後に表示されてしまいます。 どうにかして先にフォームを表示させる方法はないでしょうか? ご回答よろしくお願いします。

  • Access メッセージボックスで文字列と変数を

    メッセージボックスについての質問です。 MsgBox "データ数を表示します” とすればメッセージボックスで「データ数を表示します」と表示されますね。 変数kazuの値が100とします。 MsgBox kazu とすればメッセージボックスで「100」が表示されます。 それでは 文字列の「データ数を表示します」と 変数の「100」が一緒に表示されるメッセージボックスは出来ないものですか?

  • VBA メッセージボックス内に・・・

    セルで計算した結果って、 メッセージボックスで表示できますよね? cells(1,1)+cells(2,1)=x msgbox("答えは「x」") って感じではできませんか?

  • テキストボックスが未入力のときメッセージを表示したい

    テキストボックスが未入力のときコマンドボタンを押下したらメッセージを表示させるようにしたいんですができません。 教えてください。 (1)テキストボックスを作成。(txt_入力) (2)コマンドボタンを作成。 下記のようにコードを記述。 Private Sub コマンド45_Click() On Error GoTo Err_コマンド45_Click If Me![txt_入力] = "" Then MsgBox "データをいれろ" End If 以下省略 ""をNULLにしても出来ません。お願いします。

  • VB.NETでMessageBoxを表示したいのですが

    Visual Studio .NETでWebアプリケーションをしております。 言語はVB.NETです。 メッセージボックスを表示しようとすると、エラーが出てしまうのですが、 Msgboxを表示するにはどうすればいいのでしょう。 エラーメッセージは 「アプリケーションが UserInteractive モードで実行されていないときに、 モーダル ダイアログまたはフォームを表示することはできません。 サービス アプリケーションからの通知を表示するには、 ServiceNotification または DefaultDesktopOnly スタイルを指定してください。 」 といったサーバエラーです。 そこでUserInteractiveモードを調べてみると、 「このプロパティは、プロセスがサービス プロセスとして実行されている場合、または Web アプリケーション内から実行されている場合にだけ false になります。 UserInteractive が false の場合は、ユーザーが対話するための GUI が存在しないため、 モーダル ダイアログまたはメッセージ ボックスは表示しないでください。」 ということが書いてありました。 ちなみにWindowsアプリならVB.NETでもMsgbox関数で簡単に表示できたのですが。。 どこかで何か設定しなければならないのでしょうか。 お分かりの方、教えてください。 よろしくお願い申し上げます。

  • VBA のメッセージボックスに・・・

    Private Sub CommandButton1_Click() Dim intMsg As Integer Dim x As Double x = Val(Cells(3, 2).Value) / Val(Cells(2, 2).Value) ^ 2 Cells(2, 5) = x intMsg = MsgBox("指数は&x&" & vbCrLf & "&z&です。") Select Case x Case 0 To 18 MsgBox "やせぎみ" Case 19 To 25 MsgBox "普通" Case 26 To 30 MsgBox "太り気味" Case Else MsgBox "危険" End Select End Sub ってプログラムを組んだのですが メッセージボックスに結果が表示されません。 計算して出た値を、メッセージボックス内のxとzで表示させたいのですが・・・ &ではさむ?だけではだめなんですか?

  • Excelで,特定のシートを開いたときにメッセージボックスを表示するに

    Excelで,特定のシートを開いたときにメッセージボックスを表示するには? Excelを使用しているときに,例えばSheet3を開いたとき,メッセージボックスが開くようにしたいです。 個人的に考えているのは,そのシートの「コードの表示」で現れるVisual Basicの部分に Private Sub Worksheet_Open() YesNo = MsgBox("メッセージ。よろしいですか?", vbYesNo) If YesNo = vbYes Then End If このようなマクロを入れるといいのかと思いましたが動きません。 どこが間違っているのでしょうか?

  • VAB:メッセージボックスの色について

    VBAのコードの中で、  MsgBox "めっせーじ" と打つとメッセージボックスが表示されますが、 この時表示されるメッセージボックスの、  ・タイトルバー?の色(XPのデフォルトは青か)  ・タイトル(Microsoft Excelと出ている)  ・背景色(デフォルトは灰色?) を指定することはできますか? Windowsの「画面のプロパティ」だと全てのウィンドウの色が変わってしまいますが、 このコードを実行した時に表示するメッセージボックスだけ変更、という操作は可能でしょうか。