C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 82 を表示中)
■48359 / )  Re[8]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (13回)-(2010/04/03(Sat) 16:31:18)
2010/04/03(Sat) 16:38:58 編集(投稿者)
おかげさまで貼り付けが完了するまで待機できるようになりました。

コード------------------------------------------
Public Class DataObjectEx
    Inherits System.Windows.Forms.DataObject

    Private _Pasted As Boolean
    Public ReadOnly Property Pasted() As Boolean
        Get
            Return _Pasted
        End Get
    End Property

    Public Overrides Function GetData(ByVal format As String, ByVal autoConvert As Boolean) As Object
        Me._Pasted = True
        Return MyBase.GetData(format, autoConvert)
    End Function

End Class
------------------------------------------------

このように DataObject クラスを継承します。

コード------------------------------------------
Dim data As New Youryella.Windows.Forms.DataObjectEx
data.SetText("a")
Clipboard.SetDataObject(data, False)
SendPasteKey()
Application.DoEvents()
While (Not data.Pasted)
    Application.DoEvents()
    Thread.Sleep(10)
End While
------------------------------------------------

SetDataObject に copy:=False を渡すと GetData メソッドが呼び出されるまで、待つことができるようになりました。
Ctrl+V を送信した後に GetData メソッドが呼ばれるまで待機します。
なぜか Application.DoEvents を呼び出さないと無限ループになってしまいますが、
一応このコードで貼り付けが完了するまで待機することができました。
(Application.DoEvents が気持ち悪い・・・)

コピーが完了するタイミングはわかりませんでしたが、
貼り付け完了まで待機できるようになりました。

みなさん、ありがとうございました。

解決済み
返信 編集キー/


管理者用

- Child Tree -