私は、Alt + Tabキーを使用してから自分のアプリケーションのユーザーを禁止します。私は低レベルのキーボードフックを使用してこれを解決しようとしています。完璧な作品を、それを設定キーボードは、奇妙な行動を起こしAlt + Tabキーをフック?
は、コールバックプロシージャは、私はなどのキーの組み合わせを押したときに起こる奇妙なことは、完全に、私は、アプリケーションの外タブをALTすることができますが、その後、ALT-Tabキーが無効になっているということですトリガされます。私はマウスでアプリケーションを切り替え、alt-tabbingを試してみるが、何も起こらない。私は自分のアプリケーションとalt-tabにもう一度切り替えて、アプリケーションを切り替えますが、1つのステップだけです。私のアプリケーションの外にalt-tabがもう動作していないとき。
私が最初に私はそれがVS2010で、デバッガとは何かを持っていたと思ったが、いや、デバッガアウトでそれを実行しても同じ結果が得られる、さまざまなシナリオを試してみました。
は、私は完全にこのフックプロシージャを誤解しているが、それはアプリケーションにフォーカスがないときに起こる唯一の難点のものに意味していますか?
osman.hpp:
static HHOOK m_hhook;
static LRESULT CALLBACK lowLevelKeyboardProc(int key, WPARAM wParam, LPARAM lParam);
osman.cpp:
HHOOK OSMan::m_hhook;
/*
* pseudo init code
*/
void OSMan::init()
{
m_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)lowLevelKeyboardProc, 0, 0);
}
LRESULT CALLBACK OSMan::lowLevelKeyboardProc(int key, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
switch (key)
{
case HC_ACTION:
{
if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
return 1;
}
default:
break;
}
return CallNextHookEx(m_hHook, key, wParam, lParam);
}
編集:
- コードを追加しました。あなたは、システムワイドフックをインストールしている
フックの設定方法を示すコードが参考になります。 –
@InS:誰かが制限的な何かを望むときはいつでも、ユーザーは書籍が入荷しているかどうか、店内でラバーバンドが在庫されているかどうかを知りたいキオスクアプリケーションを構築することがよくあります。 – sarnold
@sarnold:キオスクのようなものを作る正しい方法は、[グループポリシー](http://www.microsoft.com/downloads/en-us/details.aspx?displaylang=ja&id=19735)のようなオペレーティングシステムの機能を使用することです。別の管理者と「キオスク」ユーザーアカウント。基本的には、オペレーティングシステムを損なうように設計されたソフトウェアハックを開発しようとするよりも、適切な権限でコンピュータアカウントをセットアップする時間が短くなります。 –