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

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

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

Re[3]: Wordのコピー&ペーストが干渉します


(過去ログ 106 を表示中)

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

■63452 / inTopicNo.1)  Wordのコピー&ペーストが干渉します
  
□投稿者/ Mari (1回)-(2012/08/27(Mon) 14:05:49)

分類:[VB.NET/VB2005 以降] 

2012/08/27(Mon) 16:07:34 編集(投稿者)

Word2000をOleを用いて制御しています(Framework2.0)

動的に作成された文書A(ページマージン等も動的に作成されます)
を文書Bの末尾に追加していく処理を行っています

末尾に追加する処理に
Selection.Copy()
Selection.Paste()
を使用しているのですが複数のプログラムが同時に動いたときに
クリップボードが干渉を起こします
(同時に複数のプログラムを動かさなければならない仕様です)

文書Aを一旦保存して文書Bに
Selection.InsertFile(FileName)
すれば解決するのですが保存処理に時間がかかるようで処理が遅くなります

なんとか処理速度を落とさずに文末に追加する処理を干渉しないで動作させたいのですが
何かよい知恵はないでしょうか?

欲しい知恵
・コピーペースト間に他の処理が割り込まないようにする方法
・コピーペースト以外で文末に他の文書を追加する方法
・文書を保存しないでSelection.InsertFileする方法

よろしくお願いします

WordとFrameworkのバージョンを追記しました
引用返信 編集キー/
■63453 / inTopicNo.2)  Re[1]: Wordのコピー&ペーストが干渉します
□投稿者/ shu (47回)-(2012/08/27(Mon) 14:20:15)
No63452 (Mari さん) に返信

> を使用しているのですが複数のプログラムが同時に動いたときに
この複数のプログラムすべてが修正可能なら
各プログラムのCopy,Pasteの組の前後でロック処理を行えばよいのでは
ないでしょうか?
引用返信 編集キー/
■63454 / inTopicNo.3)  Re[2]: Wordのコピー&ペーストが干渉します
□投稿者/ Mari (2回)-(2012/08/27(Mon) 15:57:00)
回答ありがとうございます

No63453 (shu さん) に返信
> ■No63452 (Mari さん) に返信
>
>>を使用しているのですが複数のプログラムが同時に動いたときに
> この複数のプログラムすべてが修正可能なら
> 各プログラムのCopy,Pasteの組の前後でロック処理を行えばよいのでは
> ないでしょうか?

プログラムの変更は可能です

教えていただいたロック処理について教えてください
APIのGlobalLock関数のことでしょうか?
http://msdn.microsoft.com/ja-jp/library/cc430080.aspx

合っているとしたらロック処理、アンロック処理の間に
Selection.Copy()
Selection.Paste()
をどのように行うのかがわかりません。よろしければご教示お願いします
引用返信 編集キー/
■63456 / inTopicNo.4)  Re[3]: Wordのコピー&ペーストが干渉します
□投稿者/ NostalJ (1回)-(2012/08/27(Mon) 16:05:59)
Copy メソッド、Paste メソッドと分けて実行しなければ干渉しなかった気が。
引用返信 編集キー/
■63458 / inTopicNo.5)  Re[3]: Wordのコピー&ペーストが干渉します
□投稿者/ Azulean (23回)-(2012/08/27(Mon) 22:37:55)
No63454 (Mari さん) に返信
> 教えていただいたロック処理について教えてください
> APIのGlobalLock関数のことでしょうか?
> http://msdn.microsoft.com/ja-jp/library/cc430080.aspx

違います。
リソースの排他のために使う、Mutex などです。(今回の場合、クリップボードを共有リソースとみなす)

> Selection.Copy()
> Selection.Paste()

Copy してから Paste を実行する間にわずかの隙間があり、別プログラムによってクリップボードが書き換えられるリスクはあります。
Copy する前に Mutex を占有し、Paste してから Mutex を解放するようにすれば、他のプログラムによって Mutex が占有されている間は待ちになります。

マルチスレッド、マルチプロセス方面のドキュメント、Web ページ、書籍などを読んで、基礎知識をたたき込んでから取りかかりましょう。
引用返信 編集キー/
■63459 / inTopicNo.6)  Re[1]: Wordのコピー&ペーストが干渉します
□投稿者/ 渋木宏明 (15回)-(2012/08/27(Mon) 23:25:18)
渋木宏明 さんの Web サイト
> 末尾に追加する処理に
> Selection.Copy()
> Selection.Paste()
> を使用しているのですが複数のプログラムが同時に動いたときに
> クリップボードが干渉を起こします
> (同時に複数のプログラムを動かさなければならない仕様です)

どうして追加処理に Copy が必要なんでしょう?

>・コピーペースト以外で文末に他の文書を追加する方法

末尾を選択して

Selection.Text = "追加したい文字列"

とすればよいのでは?
引用返信 編集キー/
■63461 / inTopicNo.7)  Re[2]: Wordのコピー&ペーストが干渉します
□投稿者/ Mari (3回)-(2012/08/28(Tue) 08:25:27)
>リソースの排他のために使う、Mutex などです。(今回の場合、クリップボードを共有リソースとみなす)

情報ありがとうございます
他の処理でも有用なものですのでじっくり勉強していきます

>どうして追加処理に Copy が必要なんでしょう?

これがなければできないというわけではありません
コピー元の文書のSelectionsを解析しながらコピー先に構築する処理が
全選択、コピー、貼り付けの3つで終わるので(^^;
解決済み
引用返信 編集キー/
■63462 / inTopicNo.8)  Re[3]: Wordのコピー&ペーストが干渉します
□投稿者/ NostalJ (2回)-(2012/08/28(Tue) 09:27:02)
No63461 (Mari さん) に返信
> これがなければできないというわけではありません
> コピー元の文書のSelectionsを解析しながらコピー先に構築する処理が
> 全選択、コピー、貼り付けの3つで終わるので(^^;

Select させて実行する方法は基本「猛烈に遅くなる」ことも留意してください。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -