タイトル | : Re: テキストボックスの書き込みで正常で無い症状の場合は、どの様に考えれば良いでしょうか。 |
記事No | : 16716 |
投稿日 | : 2025/02/18(Tue) 18:38 |
投稿者 | : 魔界の仮面弁士 |
> テキストボックス(Text1)に[1: 3: 4:]が書かれています。 > 2行目は空白になっています。 それは Text1.Text = "1: 3: 4:" ということではなく、MultiLine = True となっていて Text1.Text = Join(Split("1: 3: 4:"), vbNewLine) な状態である、ということですね。
> '正常の症状 ユーザー入力(キーボード入力、マウス入力など)は、直ちに実行されるわけではありません。 入力メッセージが処理待ち行列に蓄えられ、その後の Idle Time(イベント処理などが行われていない時間)に 処理待ちメッセージが順次消化されていくようになっています。 そのため提示例では、Command1 が End Sub で脱出した後でキー入力が反映されています。
故に Command1 は Call keybd_event(vbKeyDown, 0, 0, 0) Call keybd_event(vbKeyDown, 0, KEYEVENTF_KEYUP, 0) Text1.SetFocus でも Call keybd_event(vbKeyDown, 0, 0, 0) Text1.SetFocus Call keybd_event(vbKeyDown, 0, KEYEVENTF_KEYUP, 0) でも Text1.SetFocus Call keybd_event(vbKeyDown, 0, 0, 0) Call keybd_event(vbKeyDown, 0, KEYEVENTF_KEYUP, 0) でも Text1.Enabled = False Call keybd_event(vbKeyDown, 0, 0, 0) Call keybd_event(vbKeyDown, 0, KEYEVENTF_KEYUP, 0) Text1.Enabled = True Text1.SetFocus でも、同じように動作することでしょう。
> '正常で無い症状 ひとまず 「keybd_event を送出した後」かつ「SelText に書き込む前」にて DoEvents を呼び出せば期待動作するかと思います。 SetFous は DoEvents の前であれば、keybd_event の前でも後でも構いません。
|