Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

マクロ実行時のコピー&貼り付けの失敗 #1823

Closed
jitomoku opened this issue Apr 3, 2022 · 5 comments
Closed

マクロ実行時のコピー&貼り付けの失敗 #1823

jitomoku opened this issue Apr 3, 2022 · 5 comments

Comments

@jitomoku
Copy link

jitomoku commented Apr 3, 2022

問題内容

再現手順

「キーマクロの記録開始」を実行後、コピーと貼り付けを実行
「キーマクロの実行」をショートカットキー長押しで連続実行をしているとコピーもしくは貼り付けが失敗

再現頻度

マクロ実行一回につき一行コピー&貼り付け一回だとして数百行につき一回

問題のカテゴリ

  • プログラムの動作上の問題
    • 正式リリース版

環境情報

  • OS バージョン
    Windows 10 Pro 64bit

  • サクラエディタバージョン

    サクラエディタ   v2.4.1.2849 32bit (tag v2.4.1)
    (GitHash ee8234f65fd7a69116e07e819c6972b246eda926)
    (GitURL https://github.com/sakura-editor/sakura.git)
    Compile Info: V1916 WPR WIN601/I800/C000/N601
    Last Modified: 2020/5/30 12:10:34
    

スクリーンショット

xde

@jitomoku
Copy link
Author

jitomoku commented Apr 3, 2022

軽くソースコードを見た感じCClipboardクラスのコンストラクタ内でのOpenClipboardが失敗しているっぽい?

@jitomoku
Copy link
Author

jitomoku commented Apr 3, 2022

調べた結果これはどちらかというとOSの問題であるみたいで
Windowsのクリップボードの履歴機能をオフにしたら発生しなくなりました
ご迷惑かけました、すいません。

@jitomoku jitomoku closed this as completed Apr 3, 2022
@berryzplus
Copy link
Contributor

軽くソースコードを見た感じCClipboardクラスのコンストラクタ内でのOpenClipboardが失敗しているっぽい?

原因がコレだとすると、CClipboardを修正したら「貼り付けの失敗」に関しては抑止できます。
Windows API的には「貼り付け」を行うためにOpenClipboardを呼ぶ必要はありません。
事実なら「無駄なAPIを呼びだしているために失敗する」になるので「対応要」だと思います。

調べた結果これはどちらかというとOSの問題であるみたいで
Windowsのクリップボードの履歴機能をオフにしたら発生しなくなりました

原因がコレだとするとWindows 10の機能に対応できていない「既知の不具合」がまた一つ増える感じです。
当然「Windowsのクリップボードの履歴機能に対応させたい」と思う人が出てくるような気がします。

どうしたらそうなるかを調べるところから始める感じになるので、道は遠いですが。

@jitomoku
Copy link
Author

jitomoku commented Apr 3, 2022

自分が履歴機能をオフにすればいいという結論に至ったwebページがこちらです
https://winactor.com/questions/question/%E3%80%90%E5%AF%E5%87%A6%E6%96%B9%E6%B3%95%E3%80%91%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E5%80%A4%E3%81%B8%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D/
クローズした時点でよく読んでいなかったのですが対処方法も書かれているようです

@berryzplus
Copy link
Contributor

サクラエディタの実装言語はC++なので、生Windows APIを叩いています。

【参考】
C#でClipboardで起きる例外だけは握りつぶしていい理由

テキトーな上限回数を決めてリトライしてあげるのが良さそうです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants