現在オフラインです。再接続するためにインターネットの接続を待っています

Win32 プラットフォームでタスク スイッチを無効にする方法

この記事は、以前は次の ID で公開されていました: JP226359
概要
この資料では、Ctrl + Esc や Alt + Tab などのキーの組み合わせを通じて利用される、タスク スイッチやその他のシステム機能を Win32 プラットフォーム上で無効にする方法について説明します。

Windows 95 および Windows 98

Alt + Tab や Ctrl + Esc による機能は、アプリケーションから有効および無効にすることができます。たとえば、SystemParametersInfo (SPI_SETSCREENSAVERRUNNING) を呼び出す方法があります。Alt + Tab や Ctrl + Esc の機能を無効にするには、uiParam パラメータに TRUE を設定します。有効にするには、パラメータに FALSE を設定します。
UINT nPreviousState;// Disables task switchingSystemParametersInfo (SPI_SETSCREENSAVERRUNNING, TRUE, &nPreviousState, 0);// Enables task switchingSystemParametersInfo (SPI_SETSCREENSAVERRUNNING, FALSE, &nPreviousState, 0);				
: SystemParametersInfo (SPI_SETSCREENSAVERRUNNING) を使用してタスク スイッチを無効にしているアプリケーションは、終了前にタスク スイッチを有効にする必要があります。これを行わないと、プロセスが終了した後もタスク スイッチが無効のままとなります。

Windows NT 4.0 Service Pack 3 以降および Windows 2000

低レベルのキーボード フックをインストールすることにより、アプリケーションから Alt + Tab や Ctrl + Esc を無効にすることができます。低レベルのキーボード フック (WH_KEYBOARD_LL) は、SetWindowsHookEx を呼び出すことによりインストールされます。Windows のフックの詳細については、Platform SDK ドキュメントで「Hooks」の概要を参照してください。

次のコードは、Ctrl + Esc、Alt + Tab、および Alt + Esc を無効にする低レベルのキーボード フックを作るサンプルです。
LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam){    // By returning a non-zero value from the hook procedure, the    // message does not get passed to the target window    KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;    BOOL bControlKeyDown = 0;    switch (nCode)    {        case HC_ACTION:        {            // Check to see if the CTRL key is pressed            bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);                        // Disable CTRL+ESC            if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)                return 1;            // Disable ALT+TAB            if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)                return 1;            // Disable ALT+ESC            if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN)                return 1;            break;        }        default:            break;    }    return CallNextHookEx (hHook, nCode, wParam, lParam);}				

Windows NT 4.0 Service Pack 2 以前および Windows NT 3.51 以前

Windows NT タスク マネージャを置き換えることで、アプリケーションから Ctrl + Esc の機能をシステム全体として無効にできますが、この操作は推奨されません。

RegisterHotKey を呼び出すことにより Alt + Tab と Alt + Esc の組み合わせのホットキーを登録してアプリケーションが動作している場合は、アプリケーションから Alt + Tab と Alt + Esc を無効にできます。
詳細
Microsoft Visual C++ 5.0 以前などの古い開発ツールでは、低レベルのキーボード フックを使用したアプリケーションの構築に必要なヘッダー ファイルが含まれていない場合があります。最新のヘッダー ファイルを入手するには、次のマイクロソフト Web サイトから最新版の Platform SDK をダウンロードしてください。低レベルのキーボード フックは、Windows NT 4.0 Service Pack 3 以降に固有の機能であるため、winuser.h (または windows.h) をインクルードする前に 0x0400 以上の値を _WIN32_WINNT に定義してください。
SystemParametersInfo SetWindowsHookEx Hooks SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING WH_KEYBOARD_LL
プロパティ

文書番号:226359 - 最終更新日: 10/25/2005 07:32:00 - リビジョン: 4.1

Microsoft Win32 Application Programming Interface

  • kbhowto kbinput kbhook KB226359
フィードバック