tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: テキストボックスの書き込みで正常で無い症状の場合は、どの様に考えれば良いでしょうか。
投稿日: 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 の前でも後でも構いません。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。