windows8にしてから思うように動作しないソフトがあり
その代わりをUWSCで実現できないかと思い質問させていただきます
(以前の動作)
ブラウザやテキストエディタ上などで文字列を反転
右ダブルクリックで"アートチップス"を起動
web検索に登録した"Everything"やブラウザで文字列を検索
これを実現するにはまず反転した文字列をsendstrでクリップボードへ
というのが必要だと思うんですが、その方法がわかりません
どなたかヒントをいただけないでしょうか?よろしくお願いします
_,,...,,_
,ィ",、_/_,,._,
/ ' } {" ">
| -―・ー{ }}ll-i 〈=========---
、 、_ _} {_ 、>
` 、._゙ ,\``゙ スイーッ
 ̄ ̄
>>652 アートチップスとやらの起動方法を変えればいいだけだと思うが
SCKEY
Ctrl+C
>>654 SCKEY ありがとうございます。
Arttipsだけでなく、他にもいろいろ動かないソフトがあるので
対応をまつより自分でなんとかできないかと思いまして
UWSC初めてなのでうまくいかなかったらまた助言をいただきに来るかもしれませんが
どうもありがとうございました
656 :
652:2014/03/31(月) 00:19:36.54 ID:jd97SqSy0
たびたびすいません
UWSCでは右ダブルクリックを判定できないんでしょうか?
今はショートカットを割り当てて多ボタンマウスでとりあえず運用してます。
あともう一つ、こちらがより問題なんですが
ファイラ上でファイル名変更→範囲選択→作ったUWS実行
が機能しません。UWSC自体をバックグランドのまま実行できると
もしかしたら可能かもしれませんが、起動オプションにはみあたりませんでした
どうかお知恵をお貸しください
ttp://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
0x01 VK_LBUTTON Left mouse button
0x02 VK_RBUTTON Right mouse button
0x03 VK_CANCEL Control-break processing
0x04 VK_MBUTTON Middle mouse button (three-button mouse)
VKにダブルクリックはないので無理かな。
グローバル変数に時刻(ミリ秒まで)を記録して2回目が素早ければダブルクリックと判定するのは普通のやり方。
GETKEYSTATE ではクリックされた正確な時刻は取れないのでイベントで受け取る。
イベント関数はクリックごとに呼ばれる。
// ホットキーの設定
戻値 = SETHOTKEY( キーコード, [修飾子キー, Procedure名] )
普通のアプリケーションソフトなら WM_LBUTTONDBLCLK とかを受け取れる。
ttp://www.geocities.jp/ky_webid/win32c/006.html 2回クリック
WM_LBUTTONDOWN → WM_LBUTTONUP → WM_LBUTTONDOWN → WM_LBUTTONUP
ダブルクリック
WM_LBUTTONDOWN → WM_LBUTTONUP → WM_LBUTTONDBLCLK → WM_LBUTTONUP
658 :
652:2014/03/31(月) 14:56:37.59 ID:jd97SqSy0
>>657 詳しくありがとうございます。
右ダブルクリックは元々ないんですね
たぶん無理矢理スイッチにはできるんでしょうが
思わぬ不具合がでてきそうなのでこちらはこのまま使うことにします
PUBLIC gIsDblClk=FALSE; PUBLIC isJBOpen=False; THREAD threadJackInTheBox()
isKeyDiff=True; isWaiting2ndClk=False; AllowItvlMSec=350
GETKEYSTATE(VK_LBUTTON); PRINT "ダブルクリックしてください"
WHILE TRUE
IFB isKeyDiff AND GETKEYSTATE(VK_LBUTTON) THEN
PRINT "LBUTTON up."; isKeyDiff=False
ELSEIF !isKeyDiff AND !GETKEYSTATE(VK_LBUTTON) THEN
PRINT "LBUTTON down."; isKeyDiff=True
IFB !isWaiting2ndClk THEN
PRINT "1st click."; isWaiting2ndClk=True; mSec1stClkStart=getMSec()
ELSE
PRINT "2nd click."
IFB getMSec() <= mSec1stClkStart+AllowItvlMSec THEN
PRINT "This is a double-click."; isWaiting2ndClick=False; gIsDblClk=True
ELSE
PRINT "Too slow as a double-click."; isWaiting2ndClk=True; mSec1stClkStart=getMSec()
ENDIF
ENDIF
ENDIF
SLEEP(0.01)
WEND
FUNCTION getMSec()
Sec=GETTIME(); RESULT=Sec*1000+G_TIME_ZZ
FEND
PROCEDURE threadJackInTheBox()
WHILE True
IFB gIsDblClk THEN
IFB isJBOpen THEN
FUKIDASI("<#CR> <#CR> (_ _) <#CR>−−−", INT(G_SCREEN_W/2), INT(G_SCREEN_H/2))
ELSE
FUKIDASI("<#CR> (^o^)<#CR> 爻 <#CR>−−−", INT(G_SCREEN_W/2), INT(G_SCREEN_H/2))
ENDIF
isJBOpen = !isJBOpen; gIsDblClk=FALSE
ENDIF
SLEEP(0.01)
WEND
FEND
ん〜これだとトリプルクリックが間に合った時に2回ダブルクリックしたことになっちゃうみたいだな…