2

アクティブなウィンドウから選択したテキストを取得してコンソールに出力しようとしている以下のコードがあります。

DWORD new12=0;
KEYBDINPUT* input = new KEYBDINPUT[key_count];
    if( GetGUIThreadInfo( new12, lpgui ) )
{
    target_window = lpgui->hwndFocus;
}
else
{
   // You can get more information on why the function failed by calling
   // the win32 function, GetLastError().
   std::cout<<"error1";
}
// We're sending two keys CONTROL and 'V'. Since keydown and keyup are two
// seperate messages, we multiply that number by two.

for( int i = 0; i < key_count; i++ )
{
    input[i].dwFlags = 0;
    //input[i].type = INPUT_KEYBOARD;
}

input[0].wVk = VK_CONTROL;
input[0].wScan = MapVirtualKey( VK_CONTROL, MAPVK_VK_TO_VSC );
input[1].wVk = 0x56; // Virtual key code for 'v'
input[1].wScan = MapVirtualKey( 0x56, MAPVK_VK_TO_VSC );

私は上記の C++ コードを持っていますがerror: MAPVK_VK_TO_VSC' was not declared in this scope、行input[0].wScan = MapVirtualKey( VK_CONTROL, MAPVK_VK_TO_VSC ); に " " というエラーが表示されているようです。ここで何が問題なのだろうか。宣言の問題が原因でこのエラーがポップアップしているとは思いません。ここで私を助けてくれませんか?ありがとうございました。

4

1 に答える 1

3

MAPVK_VK_TO_VSC は単純#define MAPVK_VK_TO_VSC (0)であり、定数ではないため、前処理段階で解決する必要があります。

このコードの前に "winuser.h" を含めなかった (その場合、MapVirtualKey および VK_ 定数も宣言されていない) か、どこかで WIN_VER を未定義 (または 0x400 未満で定義) しています。WIN_VER を 16 進数で定義する必要があることを忘れがちで、#define WINVER 500 のようなものを使用すると、バージョンが 2.0 未満になります。

于 2013-05-12T22:29:45.960 に答える