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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1017
名無しkeyhookについて4解決


名無し

リンク

2012/10/17(Wed) 00:24:58|NO.50032

以下のサイトのキーフックをつかったのですが
http://tu3.jp/0524
設定したキーを押した時、その時アクティブだったウィンドウ内の
アニメーションがすべて止まってしまいます。
それ以外のウィンドウは普通に動いているのですが
アクティブだったウィンドウだけが止まるんです。

どうやら原因は
return
をしないうちは、そのときアクティブだったウィンドウは
固まってしまうようでした。

なんとかして、固まらないようにしたいのですが
どうすればいいでしょうか?


#include "keyhook.hsp" khHook *onKeyHook if stat=0 : dialog "フック失敗" : end stop *key repeat 300 title ""+cnt wait 1 loop return stop *onKeyHook if khStat = 0 { if khKeyCode =120{ //F9おしたら gosub *key } } return



この記事に返信する


暇人

リンク

2012/10/18(Thu) 01:20:36|NO.50043

割り込み先で更に割り込みを受ける状況はよろしくない
割り込み先の処理は特別な理由が無い限りなるべく直ぐに終らせる

以上を踏まえて自分ならこうやる

#include "keyhook.hsp" khHook *onKeyHook if stat=0 : dialog "フック失敗" : end repeat wait 10 if F9_f {gosub *key :F9_f=0} loop stop *key repeat 300 title ""+cnt wait 1 loop return *onKeyHook if (khStat = 0) { if khKeyCode =120{ //F9おしたら if F9_f {return 1}//F9の処理中ならキーを破棄 F9_f=1 } } return



名無し

リンク

2012/10/18(Thu) 21:42:56|NO.50059

常にループ処理するしかないのですね。

ありがとうございます。



MIZUSHIKI

リンク

2012/10/18(Thu) 23:00:19|NO.50062

(解決してますがこんな方法もありますということで。。。)

色々やりようはあると思いますが、
私は以前、自分のウィンドウにメッセージを投げる形で対処しました。


#include "user32.as" #include "keyhook.hsp" khHook *onKeyHook if stat=0 : dialog "フック失敗" : end // アプリケーション定義メッセージ #define WM_APP 0x8000 // F9キーID #enum _F9KEY_ = 0 // アプリケーション定義メッセージを受け取ったらGOTO_USERラベルにgotoさせる oncmd goto *GOTO_USER ,WM_APP stop *key repeat 300 title ""+cnt wait 1 loop return *onKeyHook if (khStat = 0) { if khKeyCode =120{ //F9おしたら // 自分のウィンドウにメッセージをPOSTする(sendmsgと違いメッセージ処理を待たずに制御が続く) Postmessage hwnd, WM_APP, _F9KEY_, 0 } } return *GOTO_USER switch wparam case _F9KEY_ gosub *key swbreak swend stop



名無し

リンク

2012/10/19(Fri) 21:52:30|NO.50074

>>MIZUSHIKIさん

別のやりかたもあるのですね。
ありがとうございます。

ウィンドウメッセージは難しそうでなかなか手が出せていません。

これからの参考にさせて頂きますね。



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