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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0922
saltマウスのドラッグ操作をさせる5解決


salt

リンク

2016/9/22(Thu) 16:05:53|NO.76935

マウスを1回クリックすると、(マウスダウンの時点から)ドラッグが開始するようにしたいです。
以下は、マウスをクリックすると、(マウスダウンの時点から)5秒間のドラッグが開始するようにするプログラムを試みた例です。


//test.hsp #uselib "user32.dll" #func mouse_event "mouse_event" int, int, int repeat getkey mouse_left,1 if(mouse_left=1){ goto *drag } await 5 loop stop *drag mouse_event $2,0,0 await 5000 mouse_event $4,0,0 end

ところが、これだと、mouse_event $2,0,0が命令された後に、自分自身が操作したクリックによるマウスアップが入ってしまい、ドラッグ、つまりマウスボタンを押した状態が維持できません。
この5秒間の間だけマウスアップを無効化する方法などを考えましたが、どうにもやり方がわからず・・・。

マウスアップを無効化する簡単な方法、またはそれ以外の解決方法がありましたら教えてください。
よろしくお願いします!



この記事に返信する


スペース

リンク

2016/9/22(Thu) 17:13:59|NO.76937

*dragとmouse_event $2,0,0の間に待機する処理を入れてみるというのはどうでしょうか?

repeat;マウスがアップするまで待機 getkey mouse_left,1 if mouse_left=0:break await 5 loop await 150;ダブルクリックと判定されないように調整



salt

リンク

2016/9/22(Thu) 17:46:43|NO.76938

回答ありがとうございます。
それも試みたのですが、自分の作るアプリケーションの都合上、間隔はあまり置きたくないな・・・と言う理由と、ドラッグ処理が始まってからマウスアップをした場合に処理がおかしくなってしまうので、もし別の方法がありましたらお願いします・・・。



掘木

リンク

2016/9/22(Thu) 18:44:42|NO.76939

とりあえずマウスの操作を無効化してみたらどうです?
http://hsp.tv/play/pforum.php?mode=all&num=76832

前もmouse_eventの引数不足見た気がする。どういう挙動になるんでしょ。

疑問点:
操作するなら別に操作が正しく発行できればいいのですから、別に時間の指定なんて不要なのでは。

そして取って代わられた古いAPIであるmouse_eventを使用するのか。SendInput使えばいいと思うんですが。



MillkeyStars

リンク

2016/9/22(Thu) 21:43:22|NO.76941

主は、マウス左ボタン押しを処理の開始とするスクリプトで、その後のマウス左ボタン離すを無効化したいってことですよね。

開始の処理をするフォアグラウンドウィンドウがHSPウィンドウであれば SetCapture で可能。
不特定なフォアグラウンドウィンドウで開始の処理をする場合は、グローバルメッセージフックでないと無理。



salt

リンク

2016/9/26(Mon) 22:27:22|NO.77002

ありがとうございました!!



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