HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
1107
魚犬クリップボードに変更があった時の処理3解決


魚犬

リンク

2017/11/7(Tue) 21:48:58|NO.81793

クリップボードの文字列をリアルタイムに置き換えしたいと思っているのですが、
loopを使って常時クリップボードを取得するのはあまりいい動作では無い気がするので、
クリップボードに変更があった時のみ処理を行いたいと思っています。
何かいい方法は無いでしょうか?

以下は現在のloopで取得している方法です。


#include "hspext.as"

a="あいうえお"
clipset a

repeat
wait 5
clipget a,256
if instr(a,0,"うえお")!-1 { strrep a,"うえお","くけこ" : clipset a }
loop

end




この記事に返信する


いののて

リンク

2017/11/8(Wed) 12:50:30|NO.81794

WinAPIのクリップボードビューア機能を使えばできます。
※ほかのアプリケーションと連携する必要があります。(ウィンドウメッセージを送るだけですが...)


#include "user32.as" #define WM_DRAWCLIPBOARD 0x0308 #define WM_CHANGECBCHAIN 0x030D screen 0 oncmd gosub *OnDrawClipboard, WM_DRAWCLIPBOARD //クリップボードが変更されたことを通知 oncmd gosub *OnChangeCBChain, WM_CHANGECBCHAIN //クリップボードのチェーンが変更されたことを通知 onexit goto *Exit SetClipboardViewer hwnd //HSPのウィンドウをクリップボードビューアとして登録 hWndNewNext = stat stop *OnDrawClipboard SendMessageA hWndNewNext, iparam, wparam, lparam //次のウィンドウに渡す // ここに、クリップボードが変更されたときの処理を入れる。 mes "クリップボードが変更された。" return *OnChangeCBChain if (wparam == hWndNewNext){ hWndNewNext = lparam }else:if (hWndNewNext):SendMessageA hWndNewNext, iparam, wparam, lparam //次のウィンドウに渡す return *Exit ChangeClipboardChain hwnd, hWndNewNext //HSPのウィンドウをクリップボードビューアのチェーンからはずす end



魚犬

リンク

2017/11/8(Wed) 19:37:39|NO.81796

>いののてさん
クリップボードビューワなんてあったんですね。
WinAPIは難しいのでよく分かりませんが、
教えていただいたソースで希望通りの動作をしました。
ありがとうございました!



いののて

リンク

2017/11/9(Thu) 16:21:36|NO.81809

プログラムの動作には関係ないのですが、変数の名前が間違っていました。

× hWndNewNext → ○ hNextWnd



ONION software Copyright 1997-2023(c) All rights reserved.