C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 35 を表示中)
■17070 / )  コンソールアプリケーションでメッセージボックスを出すには
□投稿者/ ミケ (3回)-(2008/04/16(Wed) 11:55:52)

分類:[.NET 全般] 

お世話になります。
一度送信したと思ったのですが、反映されていなかったので、もし二重に投稿していたら大変すみません。
表題の件について質問させて下さい。

開発環境
OS:2000 Pro
VB.Net:2003
Office Access:2003

日中Office Accessでユーザーが作業している後ろで、コンソールファイルを動かします。
コンソールファイルは atコマンドでスケジュール登録しております。

コンソール部分の作業が終わると、終了メッセージボックスを上げたいのですが
以下の方法で挫折し続けています。
改良点や他の方法などのアドバイス、もしくは引導を渡して頂けると、大変ありがたいです。


Module Module1
    Declare Auto Sub MessageBoxW Lib "user32.dll" ( _
     ByVal hWnd As Long, _
     <MarshalAs(UnmanagedType.LPWStr)> ByVal lpText As String, _
     <MarshalAs(UnmanagedType.LPWStr)> ByVal lpCaption As String, _
     ByVal uType As Integer)

    Public Declare Function FindWindowA Lib "user32" (ByVal cnm As String, ByVal cap As String) As Long

    Sub Main()
        '<API MessageBoxW>
        MessageBoxW(0, "終わりました", "タイトルです", 0) '----■方法1

        '<API FindWinow + MessageBoxW>
        Dim hWnd As Long
        hWnd = FindWindowA(vbNullString, "Microsoft Access")
        MessageBoxW(hWnd, "終わりました", "タイトルです", 0)  '----■方法2

        '<Dos窓>
        Console.WriteLine("終了しました。閉じてください")'----■方法3

        '<WindowForm>
        Dim frm As frmMsg = New frmMsg
        frm.Show()  '----■方法4
        frm.ShowDialog()  '----■方法5
        frm = Nothing
    End Sub
End Module

■1 API MessageBoxW
 結果:何も起こりませんでした。

■2 API FindWinow + MessageBoxW
 結果:デバッガが立ち上がり、エラーメッセージが表示されます

「System.NullreferenceExceptionのハンドルされていない例外が ○○.exeで発生しました。
追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。」
となります。hWndには17桁の数字が入っていました。

すみません、APIに無知なのですが、MessageBoxWの 
ByVal hWnd As Long(オーナーウィンドウのハンドルを指定します。0 (NULL) を指定した場合、
メッセージボックスはオーナーウィンドウを持ちません)

は、この場合、
コンソールファイルはウィンドウを持たないので、そのままメッセージを出せないが、開いている画面(Access)
のWindowの番号をFindWindowで指定すると、Accessからメッセージが上がったように見える、という理解は
間違っておりますでしょうか。

■3 DOS窓
 結果:何も起こっていないように見えます。

一瞬書き込まれているのかもしれませんが、ユーザー操作で窓を閉じる事ができる方法がありましたら
どうぞご指導お願い致します。

■4 WindowFormを作成して、Show
 結果:何も起こりません。

■5 WindowFormを作成して、ShowDialog
結果:デバッガが立ち上がり、エラーメッセージが表示されます。

System.InvalidOperationException' のハンドルされていない例外がsystem.windows.forms.dllで発生しました。
追加情報:アプリケーションが UserInteractive モードで実行されていないときに、モーダル ダイアログまたは
フォームを表示することは有効な操作ではありません。サービス アプリケーションからの通知を表示するには、
ServiceNotification または DefaultDesktopOnly スタイルを指定してください。

どうぞよろしくお願い致します。
長文失礼致しました。

返信 編集キー/


管理者用

- Child Tree -