クリップボードの繰り返し貼り付けが出来ない
投稿者 あにす  (社会人)
投稿日時
2010/6/3 04:25:09
SendKeys.SendWaitメソッドを使用して下さい。
SendKeyメソッドはキーを送信したらすぐに次の動作に移ってしまう為、送信先のアプリケーションがキーを処理する前にTextBox2.Textがクリップボードにセットされてしまうようです。
SendWaitメソッドは送信先のアプリケーションを待機するので問題なく動くと思います。
SendKeyメソッドはキーを送信したらすぐに次の動作に移ってしまう為、送信先のアプリケーションがキーを処理する前にTextBox2.Textがクリップボードにセットされてしまうようです。
SendWaitメソッドは送信先のアプリケーションを待機するので問題なく動くと思います。
投稿者 NORI  (社会人)
投稿日時
2010/6/3 19:50:09
教えていただいたSendKeys.SendWaitメソッドで解決いたしました。
ありがとうございました。
ありがとうございました。
テキストボックスの中身をクリップボードにコピーして、
メモ帳などの別ウィンドウに貼り付けようとしています。
以下の内容で実施すると、1回目の貼り付けデータが
2回目のTextBox2の内容になってしまいます。
何が良くないのでしょうか。
Public Class Form1
Private Const WS_EX_NOACTIVATE As Integer = &H8000000
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim p As CreateParams = MyBase.CreateParams
If Not MyBase.DesignMode Then
p.ExStyle = p.ExStyle Or (WS_EX_NOACTIVATE)
End If
Return p
End Get
End Property
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Clipboard.SetDataObject(TextBox1.Text)
SendKeys.Send("^v")
SendKeys.Send("{Enter}") 'ここで、なぜかTextBox2の値が貼り付けられる。
Clipboard.SetDataObject(TextBox2.Text)
SendKeys.Send("^v")
SendKeys.Send("{Enter}")
End Sub
End Class