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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0604
魚犬alt+tabを無効にしたい2解決


魚犬

リンク

2017/6/4(Sun) 17:58:25|NO.80108

フルスクリーンなどでalt+tabを押すとウィンドウが切り替わってしまうので
alt+tabを無効にしたいのですが、つーささん作のkeyhookを使っても
alt+tabの無効化が出来なかったので他の方法で無効化出来る方法を教えてください。
http://tu3.jp/0524

以下、上手くいかなかったソースです。


#include "keyhook.hsp" ;//フックをセット khHook *onKeyHook if stat=0 : dialog "フック失敗" : end stop *onKeyHook title "Code:"+ khKeyCode + " Name:" +khKeyName + " Stat:" + khStat if khKeyCode == 9 & khKeyCode == 18 : return 1 return



この記事に返信する


MIZUSHIKI

リンク

2017/6/5(Mon) 12:32:47|NO.80120

if khKeyCode == 9 & khKeyCode == 18 : return 1
としていますが、khKeyCode が同時に 9 と 18 になることはありません。

khStat を監視してAltの押し離しを記憶しても良いかもしれませんが、
getkeyを使ってAltが押されているかを検知してしまうと楽でしょう。
getkey altDown, 18 //Altの押し離し
if khKeyCode == 9 & altDown == 1 : return 1

ただし、これだけではAlt+TABを無効化することはできません。
Alt+TABを無効化するには、より低層のローレベルキーフックを使う必要があります。(Windowsキー等の無効化も)
  参考:http://7ujm.net/C++/Hook3.html

つーささんのkeyhookでは、ローレベルキーフックも使えるみたいで
khHookLL
でフックをセットしてあげれば良いそうです。

纏めると下記のようになります。
#include "keyhook.hsp"
;//フックをセット khHookLL *onKeyHook if stat=0 : dialog "フック失敗" : end stop *onKeyHook title "Code:"+ khKeyCode + " Name:" +khKeyName + " Stat:" + khStat getkey altDown, 18 //Altの押し離し if khKeyCode == 9 & altDown == 1 : return 1 return

ローレベルキーフックでは、khKeyCode や khStat に入る数値が少し異なりますので注意して下さい。
(例えば、khKeyCode : 左Alt=164、右Alt=165 のようになります。)



魚犬

リンク

2017/6/6(Tue) 03:40:15|NO.80130

>MIZUSHIKIさん
ローレベルキーフック等知りませんでした。
丁寧な解説でとてもわかりやすかったです。
ありがとうございました!



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