タイトル | : MessageBox を表示するとハンドルが取得できない |
記事No | : 4612 |
投稿日 | : 2006/12/02(Sat) 12:16 |
投稿者 | : 花ちゃん |
下記コードでMessageBox を表示すると Dim himc As IntPtr = ImmGetContext(Me.Handle) でハンドルが取得できなくなります。 VB.NET2003 では取得できますが、VB2005(EE) では、0 が返って来て失敗します。 MessageBox を表示しなければ、うまく取得できます。 Framework 2.0.50727 WinXP(SP2) 私の環境(コード)が悪いのか、何かご存知の方よろしくお願いします。
Public Class Form1 <System.Runtime.InteropServices.DllImport("Imm32.dll", _ CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _ Private Shared Function ImmGetContext( _ ByVal hWnd As IntPtr) As IntPtr End Function <System.Runtime.InteropServices.DllImport("Imm32.dll", _ CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _ Private Shared Function ImmReleaseContext( _ ByVal hWnd As IntPtr, ByVal himc As IntPtr) As Integer End Function
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show(Me, "メッセージボックスを表示します") Dim himc As IntPtr = ImmGetContext(Me.Handle) Debug.WriteLine(himc) ImmReleaseContext(Me.Handle, himc) End Sub End Class
# CreateObject("WScript.Shell").Popup _ ("郵便番号の入力が正しくありません", 1, "自動的に閉じる") を使用した場合は、うまく取得できます。
|