我想制作一个按键盘按键的程序,或者我最好说一个程序告诉电脑键被按下(但他们不是),但我不知道哪种语言最适合此目的。也许C?如果最合适的语言是C,我应该使用哪些库或系统调用?
我的操作系统是Windows 7。
答案 0 :(得分:1)
在Windows上,您可以使用keybd_event
功能。
VOID WINAPI keybd_event(
_In_ BYTE bVk,
_In_ BYTE bScan,
_In_ DWORD dwFlags,
_In_ ULONG_PTR dwExtraInfo
);
它在windows.h
中定义。
示例程序:
#include <stdio.h>
#include <ctype.h>
#include <windows.h>
/* Types the string @str on a virtual keyboard. */
void type_str(const char *str)
{
char ch;
int key;
while ((ch = *str++)) {
if (!isalpha(ch) && ch != ' ') {
fprintf(stderr, "Cannot type '%c'!\n", ch);
continue;
}
fprintf(stderr, "Typing '%c'.\n", ch);
if (isupper(ch)) {
key = ch; /* The keycode equals the character value for all
alphabetic characters and space. */
keybd_event(VK_SHIFT, 0, 0, 0);
/* 2nd arg: 0 means press the key. */
keybd_event(key, 0, 0, 0);
/* 2nd arg: KEYEVENTF_KEYUP means release the key. */
keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
} else {
/* We need to use the uppercase character value. */
key = toupper(ch);
keybd_event(key, 0, 0, 0);
keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
}
}
}
int main(int argc, char *argv[])
{
puts("Waiting one second!");
Sleep(1000); // Wait for user to open a text editor.
type_str("Hello world");
return 0;
}
此示例只能打印字母字符和空格。如果您想为该功能添加更多字符,请访问此链接以查找其他密钥的密钥代码:http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
有关该功能的更多文档,请访问:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx