クリップボードの繰り返し貼り付けが出来ない への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 あにす  (社会人)
投稿日時
2010/6/3 04:25:09
SendKeys.SendWaitメソッドを使用して下さい。
SendKeyメソッドはキーを送信したらすぐに次の動作に移ってしまう為、送信先のアプリケーションがキーを処理する前にTextBox2.Textがクリップボードにセットされてしまうようです。
SendWaitメソッドは送信先のアプリケーションを待機するので問題なく動くと思います。
SendKeyメソッドはキーを送信したらすぐに次の動作に移ってしまう為、送信先のアプリケーションがキーを処理する前にTextBox2.Textがクリップボードにセットされてしまうようです。
SendWaitメソッドは送信先のアプリケーションを待機するので問題なく動くと思います。
投稿者 NORI  (社会人)
投稿日時
2010/6/3 00:02:28
はじめまして、初心者ですがよろしくお願いします。
テキストボックスの中身をクリップボードにコピーして、
メモ帳などの別ウィンドウに貼り付けようとしています。
以下の内容で実施すると、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
テキストボックスの中身をクリップボードにコピーして、
メモ帳などの別ウィンドウに貼り付けようとしています。
以下の内容で実施すると、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
ありがとうございました。