我有以下代码,我试图从活动窗口中获取所选文本并将其打印到控制台上。
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 );
”
我想知道这里有什么问题。由于任何声明问题,我不认为这个错误会突然出现。你能帮帮我吗?谢谢。
答案 0 :(得分:3)
MAPVK_VK_TO_VSC是一个简单的#define MAPVK_VK_TO_VSC (0)
,甚至不是常量,所以它应该在预处理阶段解决。
要么你错过了在此代码之前包含“winuser.h”(在这种情况下,MapVirtualKey和VK_常量也将是未声明的),或者你在某处未定义WIN_VER(或定义它小于0x400)。有时很容易忘记WIN_VER必须以十六进制定义,并且像#define WINVER 500这样的版本,你的版本低于2.0