タイトル : WndProc 投稿日 : 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 |