タイトル | : WndProc |
記事No | : 10574 |
投稿日 | : 2011/08/20(Sat) 14:50 |
投稿者 | : nobu |
こんにちは。お世話になります。
1. 下記の様なコードにて外部機器からの情報を受け取り Form1 上の Label に表示しています。 この間にも Form1 上の TextBox1 に文字を入力したいのですが、入力できません。 Me.KeyPreview = True はLoad 時に書いています。 TextBox1.Focus() を書いてもカーソルがTextBox1にあるだけで入力できません。 Timer2 が動いていない(外部機器からの情報を受け取っていない)時は TextBox1 に文字を入力出来ます。
2. Form1 終了時に WndProc を開放するにはどうすればよいでしょうか。
対応策をご指導願えれば幸いです。
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
' cds に値をセットしてから
Hwnd2 = SendMessage(Hwnd1, WM_COPYDATA, Me.Handle, cds)
If Not Hwnd2.Equals(IntPtr.Zero) Then SetForegroundWindow(Hwnd2) End If
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_COPYDATA Then Dim cds As COPYDATASTRUCT cds = CType(Marshal.PtrToStructure(m.LParam, GetType(COPYDATASTRUCT)), COPYDATASTRUCT) tmp_thw = Marshal.PtrToStringAnsi(cds.lpData) Else MyBase.WndProc(m) End If
End Sub
|