3

Windows 8 より前のバージョンの Windows では、Win+V ホットキーを登録することができました。この組み合わせを使用するアプリケーションの例はPureTextです。

Windows 8 Release Preview では、Windows 8 が Windows キーに関連する多くのホットキーを制御していることに気付きましたが、Win+V は使用されていないようです。次のコードにより、Win+CTRL+V のホットキーを登録できます。

#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    if (RegisterHotKey(
        NULL,
        1,
        MOD_WIN | MOD_NOREPEAT | MOD_CONTROL,
        0x56))  // 0x56 is 'v'
    {
        _tprintf(_T("Hotkey 'CTRL+WIN+V' registered, using MOD_NOREPEAT flag\n"));
    }

    MSG msg = {0};
    while (GetMessage(&msg, NULL, 0, 0) != 0)
    {
        if (msg.message == WM_HOTKEY)
        {
            _tprintf(_T("WM_HOTKEY received\n"));            
        }
    } 

    return 0;
}

Win + Vのみを登録するように変更すると、登録に失敗します。

if (RegisterHotKey(
    NULL,
    1,
    MOD_WIN | MOD_NOREPEAT,
    0x56))  // 0x56 is 'v'
{
    _tprintf(_T("Hotkey 'WIN+V' registered, using MOD_NOREPEAT flag\n"));
}

Windows+V ホットキーの登録を強制する方法はありますか? Win32 API フックでこれを行う方法があるかもしれないと思いますが、それを見てからしばらく経ちました。これを達成するためのより簡単にサポートされるオプションがあれば幸いです。

4

3 に答える 3

4

このRegisterHotKey関数は、常にシステム用に Windows キーを予約しています。ドキュメントには、次のようなことも示されています。

MOD_WIN 0x0008
いずれかの WINDOWS キーが押されました。これらのキーには、Windows ロゴが付いています。WINDOWS キーを含むキーボード ショートカットは、オペレーティング システム用に予約されています。

独自の非システム ホットキーを登録する場合は、別の [一連の] 修飾キーを選択する必要があります。

その上、他の人が言及したように、Windows key+Vキーボード ショートカットは既に使用されています。またRegisterHotKey、既に登録されているホットキーを登録しようとすると失敗します。

多くの Win32 関数は、機能しないときに正確に何が問題なのかを示すエラー コードを設定します。ドキュメントにそれが示されている場合は、GetLastError関数を呼び出して、そのエラー コードが何であったかを判断できます。これにより、問題のデバッグに役立つより多くの情報が得られます。

于 2012-08-02T06:20:04.440 に答える
2

Windows 8 のキーボード ショートカットの完全なリストをpdfまたはxpsで示します。Win+V は既に使用されています。通知を循環します。Win+CTRL+V を使い続けるのがおそらく最良の選択肢です。

于 2012-08-02T05:12:14.687 に答える
2

PlainTexter を使用... グローバル キーボード フックを使用します。{自分のマシンで動作}

http://www.elijahg.com/plaintexter

于 2012-10-27T22:38:34.647 に答える