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

わんくま同盟

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

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


(過去ログ 82 を表示中)
■48414 / )  Re[12]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (15回)-(2010/04/05(Mon) 19:16:59)
No48403 (れい さん) に返信
丁寧な解説ありがとうございます。
どの部分を見直した方がいいのかよくわかりました。

> 昔ならキーボードドライバとマウスドライバを書くんですが、
> 今はフックだけでがんばらないといけないので…つらいですね。
つらい次元が違うのですが・・・
今も昔もドライバなんて作ったことありませんよ。

> 私はクリップボードにいろいろ大切な物を残しておきます。
> 「文字列を貼り付け」で、クリップボードが消えたら、勝手に消えたと思うでしょう。
> ブチ切れです。
Visual Studio 6.0 を起動するとクリップボードが書き換えられるので
あれにはイライラさせられました。

クリップボードが書き換えられるのを承知でやるのはいいのですが、
勝手に書き換えるのは不愉快な思いをさせてしまいますね。

> Windowsには「文字列を貼りつける」という機能・概念はありません。
> それを作ろうと思ったらOSに手を入れないといけないことになります。
アプリケーション内では文字列を貼り付けられるのに、
対アプリケーションとなるとできなくなってしまうんですね。

> 「クリップボードに文字列を登録」
> 「クリップボードから貼り付けを指示(Ctrl+V)」
> 「クリップボードが読まれるか、xxx秒経つまで待機」
クリップボードの操作を細かくするといいんですね。
ぜひこのようなコマンドを作成したいと思います。
(クリップボードが読み込まれるまで待機というのは、
一般の方にはわかりづらいと思いますので、
貼り付け指示と一つにまとめようと思います。
ごめんなさい)

> まとめて実行するために、「スレッドを一つ立ててコマンドを順番に実行する」というのはダメで、
> 「一つのイベントで一つのコマンドだけを実行」し、
> 「コマンド完了毎に逐次イベントを立てる」というやり方が良い、ということになります。
> コルーチン的に。
>
> 各コマンド毎に実行完了イベントを作り、実行完了イベントハンドラで次のコマンドを開始するわけです。
> DataObjectではGetDataでイベントを上げて、「データ送信完了イベント」を作るわけです。
ソースを見ていないのに、ものすごく的確なアドバイスありがとうございます。
コマンドを実行中にアプリケーションを操作できるようにしたいので、
一つのコマンドを一つのスレッドで実行し、
完了したら、GUI スレッドから完了イベントを発生さようと思います。

Application.DoEvents が必要なわけと、必要としない方法がわかりすっきりしました。

最初の質問以上のことを教えていただき、とても感謝しています。

# れい さんのお家に幸せになれると伝えられているネコのぬいぐるみを送らせていただきました。
# こういうことは書いちゃダメかな。
解決済み
返信 編集キー/


管理者用

- Child Tree -