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

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

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

Re[16]: クリップボードのコピー・貼り付けが完了するタイミングは?


(過去ログ 82 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■48335 / inTopicNo.1)  クリップボードのコピー・貼り付けが完了するタイミングは?
  
□投稿者/ ダッチ (8回)-(2010/04/02(Fri) 17:12:31)

分類:[.NET 全般] 

Windows XP 以降 32bit, 64bit
.NET Framework 3.5
VB or C#
Windows Forms アプリケーション


こんにちは、ダッチです。

アクティブ ウィンドウに対して貼り付けを
数回に分けてやりたいと思っています。

コード------------------
Clipboard.SetText("a")
SendPasteKey()
Clipboard.SetText("b")
SendPasteKey()
' SendPasteKey メソッドは SendInput 関数を使用して Ctrl+V を送信しています。
' このコードは STA のサブスレッド上で実行されます。
------------------------

例えばメモ帳をアクティブにしてから上記のコードを実行すると、
"bb" と貼りついたり、"b" と貼りついたりして、
期待した動作 "ab" になりません。

おそらく貼り付け処理が完了する前に Clipboard.SetText が動いてしまっているためだと思います。
そこで Ctrl+V 送信後にクリップボードの貼り付けが完了したのを待ってから
Clipboard.SetText を呼べばいいと思うのですが、
どのようにしたら、貼り付けが完了したのを知ることができるのかわかりません。

Ctrl+V を送信後に WM_APP を SendMessage で投げて、
制御が返った時は、まだ貼り付けが始まってもいませんでした。

GetOpenClipboardWindow 関数でクリップボードが使用されていないか確認しようと思っても、
Ctrl+V を送信後すぐには、クリップボードが使用されていないで、
次の Clipboard.SetText を呼び出したときに例外 (秀丸に対しての時) が発生したりもしました。

Ctrl+V を送信後に Thread.Sleep メソッドで待つと "ab" と期待した動作になります。
が、どれだけ待てばいいのかは状況により変わるため確実な方法ではありません。


他のアプリケーションに対してコピー・貼り付けが完了したのを知るには
どのようにすればいいのでしょうか?

よろしくお願いします。
引用返信 編集キー/
■48336 / inTopicNo.2)  Re[1]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ .SHO (1246回)-(2010/04/02(Fri) 18:52:37)
No48335 (ダッチ さん) に返信

> コード------------------
> Clipboard.SetText("a")
> SendPasteKey()
> Clipboard.SetText("b")
> SendPasteKey()
> ' SendPasteKey メソッドは SendInput 関数を使用して Ctrl+V を送信しています。
> ' このコードは STA のサブスレッド上で実行されます。
> ------------------------

Clipboard.SetText("a")
Clipboard.SetText(Clipboard.GetText()+"b")
SendPasteKey()

じゃ、ダメですか?

引用返信 編集キー/
■48337 / inTopicNo.3)  Re[2]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (9回)-(2010/04/02(Fri) 19:09:45)
No48336 (.SHO さん) に返信
コメントありがとうございます。

> Clipboard.SetText("a")
> Clipboard.SetText(Clipboard.GetText()+"b")
> SendPasteKey()
>
> じゃ、ダメですか?
>
実際のコードでは Clipboard.SetText, SendPasteKey のセットが動的に追加されます。
なので、1 回だけの時もあれば、2 回、3 回と連続して行う時もあります。

この部分に制限をかけることはできない仕様になっています。
必ず貼り付けを分けて行うと考えていただければと思います。

それと、遅延レンダリングというものがクリップボードにはあるらしいのですが、
SendPasteKey を呼んでいるサブスレッド上からは自アプリのウィンドウの参照が持てない仕様ですので、
この方法も諦めるしかありません。
引用返信 編集キー/
■48340 / inTopicNo.4)  Re[3]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ .SHO (1247回)-(2010/04/03(Sat) 09:32:44)
No48337 (ダッチ さん) に返信

クリップボードの内容は、他の内容で書き換えるか
明示的に内容を消去しない限り何回でも使用できるわけですから
貼り付け完了というステータス自体が存在しないと思います。

引用返信 編集キー/
■48341 / inTopicNo.5)  Re[3]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ???????? (1回)-(2010/04/03(Sat) 10:13:42)
No48337 (ダッチ さん) に返信
> それと、遅延レンダリングというものがクリップボードにはあるらしいのですが、
> SendPasteKey を呼んでいるサブスレッド上からは自アプリのウィンドウの参照が持てない仕様ですので、
> この方法も諦めるしかありません。

自アプリのウィンドウが持てるか
引用返信 編集キー/
■48343 / inTopicNo.6)  Re[3]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ れい (886回)-(2010/04/03(Sat) 10:17:40)
2010/04/03(Sat) 10:18:35 編集(投稿者)

No48337 (ダッチ さん) に返信
> それと、遅延レンダリングというものがクリップボードにはあるらしいのですが、
> SendPasteKey を呼んでいるサブスレッド上からは自アプリのウィンドウの参照が持てない仕様ですので、
> この方法も諦めるしかありません。

ウィンドウの参照が無くても遅延レンダリングはできます。
ですが、.NetでCOM or OLEはかなり困難です。

具体的には。

IDataObjectを自分で定義してClipboard.SetDataObjectに渡してあげます。
貼り付けが行われるとIDataObjectでGetData系の一連のメソッドが呼ばれますので、
ここで適当に修正すれば任意の貼り付けが可能となります。

貼り付けが行われたことを正しく知る方法はこれだけです。


追記。
一個上の投稿は私です。
最近Operaクンの調子が悪くて…
名前もきちんと覚えてくれません。
引用返信 編集キー/
■48344 / inTopicNo.7)  Re[4]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (10回)-(2010/04/03(Sat) 10:47:21)
No48340 (.SHO さん) に返信
コメントありがとうございます。

> クリップボードの内容は、他の内容で書き換えるか
> 明示的に内容を消去しない限り何回でも使用できるわけですから
> 貼り付け完了というステータス自体が存在しないと思います。

テキストの貼り付けに限って言えば、WM_PASTE メッセージが送られるので、
それを処理し終わった後が、貼り付け完了だと思い
> Ctrl+V を送信後に WM_APP を SendMessage で投げて、
> 制御が返った時は、まだ貼り付けが始まってもいませんでした。
これを試したのですが、そういうものじゃないんですね。
引用返信 編集キー/
■48345 / inTopicNo.8)  Re[5]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (11回)-(2010/04/03(Sat) 10:56:03)
No48343 (れい さん) に返信
コメントありがとうございます。

希望がすこし出てきました。

> IDataObjectを自分で定義してClipboard.SetDataObjectに渡してあげます。
IDataObject は .NET のやつでいいんですよね。
全部を定義するのは大変(というか無理)そうなので、DataObject クラスを継承して少しずつ動作確認をしてみます。

> 貼り付けが行われるとIDataObjectでGetData系の一連のメソッドが呼ばれますので、
> ここで適当に修正すれば任意の貼り付けが可能となります。
貼り付けが行われる (GetData系のメソッドが呼び出される) まで待機すればいいんですね。
それで、呼ばれるたびに、順番に貼り付ける内容を再設定してあげると。

> 貼り付けが行われたことを正しく知る方法はこれだけです。
クリップボードの扱いが単純じゃないのがよくわかりました。

> 最近Operaクンの調子が悪くて…
> 名前もきちんと覚えてくれません。
私は れい さんの名前は忘れません!
引用返信 編集キー/
■48355 / inTopicNo.9)  Re[6]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ 囚人 (488回)-(2010/04/03(Sat) 13:00:01)
どういう目的のアプリケーションか分らないですけど、そもそもユーザーの明示的な動作・了解なしにクリップボードをいじくり回すべきではない、というガイドラインやら慣習やらありませんでしたっけ。

クリップボードを使うのが、目的なのか手段なのかによりますが、他のプロセス間通信使った方がよくないです?

引用返信 編集キー/
■48357 / inTopicNo.10)  Re[7]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (12回)-(2010/04/03(Sat) 13:18:13)
2010/04/03(Sat) 13:18:37 編集(投稿者)

No48355 (囚人 さん) に返信
コメントありがとうございます。

> どういう目的のアプリケーションか分らないですけど、そもそもユーザーの明示的な動作・了解なしにクリップボードをいじくり回すべきではない、というガイドラインやら慣習やらありませんでしたっけ。
>
> クリップボードを使うのが、目的なのか手段なのかによりますが、他のプロセス間通信使った方がよくないです?
>

定型文のような内容を登録しておいて、
それをどのアプリケーションに対しても貼り付けられるようにするのが目的です。
もちろん、そのアプリケーションでは テキストボックス などが選択されている必要があります。

定型文を貼り付けというか定型文を入力するために、クリップボードを使うのが現実的かなぁと思っています (他の方法を知らないのもありますが)。

ちなみに、アプリケーションは私が作っているフリーソフトです。
引用返信 編集キー/
■48359 / inTopicNo.11)  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 が気持ち悪い・・・)

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

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

解決済み
引用返信 編集キー/
■48378 / inTopicNo.12)  Re[9]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ れい (887回)-(2010/04/04(Sun) 11:47:21)
2010/04/04(Sun) 11:47:57 編集(投稿者)
No48359 (ダッチ さん) に返信
> 2010/04/03(Sat) 16:38:58 編集(投稿者)
>
> おかげさまで貼り付けが完了するまで待機できるようになりました。


うーん
なんかダメダメに見えます。
ソフトウェアとしての信頼性はかなり低いのではないかと。


> 定型文のような内容を登録しておいて、
> それをどのアプリケーションに対しても貼り付けられるようにするのが目的です。
> もちろん、そのアプリケーションでは テキストボックス などが選択されている必要があります。

これをするのに、
なぜ貼り付けを何回もする必要があるのかが私にはわかりません。
他のウィンドウに対してCtrl+Vを送る理由もわかりません。

たぶん、いろいろ見直した方がよいと思いますよ…。

解決済み
引用返信 編集キー/
■48382 / inTopicNo.13)  Re[10]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (14回)-(2010/04/04(Sun) 13:26:08)
No48378 (れい さん) に返信
コメントありがとうございます。

> うーん
> なんかダメダメに見えます。
> ソフトウェアとしての信頼性はかなり低いのではないかと。
ダメダメですか・・・orz

http://youryella.wankuma.com/Software/OneTouchKeyboard/Tips.aspx
このページの「コマンドを組み合わせる」の部分を見ていただければ、
何をしているのかがわかりやすいかと思います。

「文字列を貼り付け」コマンドというのがありまして、
あらかじめ文字列を登録しておいてコマンドを実行すると、それを貼り付けるというものです。
他にもコマンドがあるのですが、それを好きなだけ組み合わせて
まとめて実行できるソフトを作成しています。

そのため何度も貼り付けるという処理が発生しました。

> 他のウィンドウに対してCtrl+Vを送る理由もわかりません。
これは貼り付けをしたいためなのですが、おかしいですか。

ただ、囚人さんにも指摘されましたが、クリップボードはあくまでも手段の一つです。
クリップボード以外にもこの処理を達成する手段があれば、それでもいいのですが、
私にはこれしか見つけられませんでした。
(できればクリップボードを使用せずに実現したいとは思います)

WM_SETTEXT などは見つけましたが、テキストボックスの内容が全て上書きされてしまったり、
HTML 上のテキストボックスのハンドルを取得できないようなので、
SendMessage 関数を使用できないみたいです。
解決済み
引用返信 編集キー/
■48403 / inTopicNo.14)  Re[11]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ れい (888回)-(2010/04/05(Mon) 15:19:36)
No48382 (ダッチ さん) に返信
> http://youryella.wankuma.com/Software/OneTouchKeyboard/Tips.aspx
> このページの「コマンドを組み合わせる」の部分を見ていただければ、
> 何をしているのかがわかりやすいかと思います。

ああ。なるほど。
操作の自動化か…

> ただ、囚人さんにも指摘されましたが、クリップボードはあくまでも手段の一つです。

昔ならキーボードドライバとマウスドライバを書くんですが、
今はフックだけでがんばらないといけないので…つらいですね。

> 「文字列を貼り付け」コマンドというのがありまして、
> あらかじめ文字列を登録しておいてコマンドを実行すると、それを貼り付けるというものです。
> 他にもコマンドがあるのですが、それを好きなだけ組み合わせて
> まとめて実行できるソフトを作成しています。

その条件なら、確かに私もクリップボードを使うと思います。
ですが、ダッチさんのような構成・構造にはしないと思います。

例えば。
「アプリケーションにクリップボードから貼り付ける」というと、クリップボードからみて能動的な作業に聞こえますが、
実際には「アプリケーションからクリップボードにデータ取得を要請される」ので、
クリップボードにとっては「貼り付け」は受動的な作業です。

Ctrl+Vでも条件によっては「貼り付け」ない場合もあるし。

また、クリップボードは非常に限られたリソースです。
ステーション(?)に一個しかありません。

私はクリップボードにいろいろ大切な物を残しておきます。
「文字列を貼り付け」で、クリップボードが消えたら、勝手に消えたと思うでしょう。
ブチ切れです。

なので、そんなコマンドは作りません。

プログラムはなんでもできますが、
何かの上に載ってるならその上でできることしかできません。
つまり。
Windowsには「文字列を貼りつける」という機能・概念はありません。
それを作ろうと思ったらOSに手を入れないといけないことになります。

.SHOさんが言うように、「貼り付け完了」という概念もないわけです。
あるのは、「クリップボードからデータを取得する」という概念だけ。
で、他のアプリができることは「クリップボードからデータを取得するよう指示する(Ctrl+V)」ことだけです。
いつ、どのように取得するかはアプリ次第なわけです。

私なら

「クリップボードに文字列を登録」
「クリップボードから貼り付けを指示(Ctrl+V)」
「クリップボードが読まれるか、xxx秒経つまで待機」

というコマンドにします。

また…
> コード------------------------------------------
> 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 が気持ち悪い・・・)

(OLEでない)クリップボードは、Windowsのメッセージ機構を経由してデータをやりとりします。
つまり、「貼り付け」は「GUI層」の担当なわけです。
速度的にも、機構的にも、「GUI層」のやり方、
つまり「イベントドリブン」や「シングルスレッド」といった概念でやらねば
うまくいかないということです。

ですので、

> 他にもコマンドがあるのですが、それを好きなだけ組み合わせて
> まとめて実行できるソフトを作成しています。

まとめて実行するために、「スレッドを一つ立ててコマンドを順番に実行する」というのはダメで、
「一つのイベントで一つのコマンドだけを実行」し、
「コマンド完了毎に逐次イベントを立てる」というやり方が良い、ということになります。
コルーチン的に。

各コマンド毎に実行完了イベントを作り、実行完了イベントハンドラで次のコマンドを開始するわけです。
DataObjectではGetDataでイベントを上げて、「データ送信完了イベント」を作るわけです。

そうすればApplication.DoEventsは要りませんよね。

引用返信 編集キー/
■48414 / inTopicNo.15)  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 が必要なわけと、必要としない方法がわかりすっきりしました。

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

# れい さんのお家に幸せになれると伝えられているネコのぬいぐるみを送らせていただきました。
# こういうことは書いちゃダメかな。
解決済み
引用返信 編集キー/
■48423 / inTopicNo.16)  Re[13]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ れい (890回)-(2010/04/06(Tue) 01:09:19)
No48414 (ダッチ さん) に返信
> ぜひこのようなコマンドを作成したいと思います。
> (クリップボードが読み込まれるまで待機というのは、
> 一般の方にはわかりづらいと思いますので、
> 貼り付け指示と一つにまとめようと思います。
> ごめんなさい)

いや私に謝らなくてもいいのですが、
Ctrl+Vが貼り付けに対応していない場合、止まっちゃいますよね?
途中で他のアプリがクリップボードにデータを入れたらりしてもダメですよね。
DataObject消えちゃいますから。

> ソースを見ていないのに、ものすごく的確なアドバイスありがとうございます。
> コマンドを実行中にアプリケーションを操作できるようにしたいので、
> 一つのコマンドを一つのスレッドで実行し、
> 完了したら、GUI スレッドから完了イベントを発生さようと思います。

いやいや。
それもやっぱり私にはおかしく見えます。

そのコマンドって、そんなに長いものなのでしょうか?
先ほどのページを見る限り、GUI層の時間スケール程度の物ばかりだと思ったのですが。
プロセスの起動、文字の入力、貼り付け、etc...
なら、GUI層が行っていいはずです。

たくさんのコマンドを連続して動かす時に、さらに他の操作したいのであれば…
それこそ辞めておくべきかと。
クリップボードもキーボードもマウスも一つしかないのが前提のOSですから、
まともに操作できなくなりますよ。

自動操作中は「キャンセル」だけできればいい、それしかできない状態でないとおかしなことになるはずです。
で、それならシングルスレッドで十分。

どうしてもアプリケーションを操作したいなら、「不可視ウィンドウ」を使えばよいかと。
自動操作開始時に不可視ウィンドウを作り、それがイベントを連続的に起こせばメインウィンドウは普通に使えます。
それもダメなら「不可視ウィンドウ」を「別スレッドで起動」かな。


> # れい さんのお家に幸せになれると伝えられているネコのぬいぐるみを送らせていただきました。
> # こういうことは書いちゃダメかな。

あれ?
ちょっとまって。
なんで個人情報ばれてるの?

ここでは誰にも言ってませんよ?

ただの冗談、ではないですよね。何も知らない人ならその文章にはなりませんから。

あれれれ??
おかしくない?

確かに最近IP誤魔化してないけど、管理人以外から見えないでしょ?
しかもIP分かってもその文章にはならないよね。いろいろ調べないと。

ハンドルからは同定無理なはずだし。
いっぱいいるから。

なんか見落としてる?勘違いしている?
実はわかってないのは私だけ?

もしかして木馬?!
個人情報がばれてるならカメラとかも仕掛けられてる?
でもこの部屋は窓もないし、電波も漏れないし、ネットワークは監視付きなんだけど。

絶対おかしい。

私にだけわかるように、なんでそんな文章が出てきたのか説明しなさい!
あ、いや、してください。
引用返信 編集キー/
■48433 / inTopicNo.17)  Re[14]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (16回)-(2010/04/06(Tue) 10:59:32)
No48423 (れい さん) に返信
コメントありがとうございます。
解説していただいた事を理解できてなくて申し訳ありません。

> いや私に謝らなくてもいいのですが、
> Ctrl+Vが貼り付けに対応していない場合、止まっちゃいますよね?
> 途中で他のアプリがクリップボードにデータを入れたらりしてもダメですよね。
> DataObject消えちゃいますから。
ここはタイムアウトを設けるなどして対応するつもりです。

> そのコマンドって、そんなに長いものなのでしょうか?
今はすぐ終了するコマンドばかりですが、
将来的に時間のかかるコマンドを作成するかもしれませんので。
と思ってましたが
> 自動操作中は「キャンセル」だけできればいい、それしかできない状態でないとおかしなことになるはずです。
> で、それならシングルスレッドで十分。
この辺も含めて考え直してみます。

> どうしてもアプリケーションを操作したいなら、「不可視ウィンドウ」を使えばよいかと。
> 自動操作開始時に不可視ウィンドウを作り、それがイベントを連続的に起こせばメインウィンドウは普通に使えます。
> それもダメなら「不可視ウィンドウ」を「別スレッドで起動」かな。
動作確認しながら試してみます。

> 私にだけわかるように、なんでそんな文章が出てきたのか説明しなさい!
> あ、いや、してください。
すみません、すみません。
れい さんはネコ好きな気がしたので冗談で
> ネコのぬいぐるみを送らせていただきました。
と書いたんですが、やっぱり
> こういうことは書いちゃダメかな。
ですね。

大変不快な思いをさせてしまったので
これから直接謝りに行かせていただきます・・・コラ!
解決済み
引用返信 編集キー/
■48445 / inTopicNo.18)  Re[15]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ れい (891回)-(2010/04/06(Tue) 15:06:08)
2010/04/07(Wed) 10:08:45 編集(投稿者)

No48433 (ダッチ さん) に返信
>>私にだけわかるように、なんでそんな文章が出てきたのか説明しなさい!
>>あ、いや、してください。
> すみません、すみません。
> れい さんはネコ好きな気がしたので冗談で
>>ネコのぬいぐるみを送らせていただきました。
> と書いたんですが、やっぱり

誘導尋問のつもりですか?
残念ながらひっかかりませんよ。

私は「そんな文章」と言っただけです。
あんなケムクジャラの非社会的なネズミ捕りマシーンが好きなどとは一言も言っていません。

毛玉とかネコジャラシとか自分のしっぽとか追いかけてればいいんです。
ヒゲを抜かれて歩けなくなってればいいんです。
シッポがついてるからって動揺しませんよ。
耳がついてるからって撫でたりしません。
肉球とか腹の毛並みのチェックもしません。

全然関係ないのです。どうでもいい。
関係なさすぎて目の中に入れても気付かないくらい無関心。

おわかりですか?

>>こういうことは書いちゃダメかな。
> ですね。
> 大変不快な思いをさせてしまったので
> これから直接謝りに行かせていただきます・・・コラ!

知っていても知らないふりをするのが大人だと
小学校の先生が言っていましたよ。

見て見ぬふり、聞いて聞かぬふり、知って知らぬふり。
それが出世の秘訣です。

それはともかく。

いいですか。

過去ログをよく見てください。
私は動揺したり幼稚な言動をとったりしないのです。
理知的でハイソなナイスガイなのです。

猫は全然関係ないのです。

そこのところ一つよろしくお願いします。



質問は解決してますし、意味のない関係ない会話が多いのでさっさと下げるよう、みなさんご協力おねがいします。


追記。

↓への返信。

No48448 (ダッチ さん) に返信
> ■No48445 (れい さん) に返信
> 本当に申し訳ありませんでした。
> ただの冗談のつもりで書いたのですが、度が過ぎてしまいました。
>
> 私は れい さんの個人情報は、何一つ知りません。

ほんとうですか?
ちょっとまだドキドキですよ。

> 丁寧に解説してくださったのに
> それを踏みにじるような事をしてしまい申し訳ありませんでした。

別に気分を害してはいませんヨ。
ただ、びっくりしてドキドキしてソワソワしてしまっただけで。

> 今後は質問と関係ない会話は慎むようにいたします。

関係ない話題も題ないと思います。
皆が楽しめれば。

私も嫌だったわけではありません。
会話を楽しめた部分もありますが、心臓に負担がかかった部分もあり…
ローラーコースターに載った後みたいです。

匿名性というのはなんか不思議なものですね。
よく知ってる人がここにいたら発言しづらいし、
職場ばれとかしたらと嫌だなぁと思います。

匿名で悪いことをしているわけですし、
恥ずかしい個人情報を持ってるわけでもないので
いつばれてもいいはずなんですが。

いざばれてるっぽい発言があると急にドキドキして、
悪いことはしていないから大丈夫、と自分に言い聞かせてしまいました。

私はチキンなんですから驚かさないでください。ほんと。
解決済み
引用返信 編集キー/
■48448 / inTopicNo.19)  Re[16]: クリップボードのコピー・貼り付けが完了するタイミングは?
□投稿者/ ダッチ (17回)-(2010/04/06(Tue) 16:28:23)
No48445 (れい さん) に返信
本当に申し訳ありませんでした。
ただの冗談のつもりで書いたのですが、度が過ぎてしまいました。

私は れい さんの個人情報は、何一つ知りません。

丁寧に解説してくださったのに
それを踏みにじるような事をしてしまい申し訳ありませんでした。

今後は質問と関係ない会話は慎むようにいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -