我正在开发一个自动使用这个软件EPIX XCAP的程序。
在Capture()中,它会拍摄一张照片,打开文件菜单,打开保存对话框,然后用它到达选项卡(导航到保存对话框中的文件名框)它不会这样做他们。我可以手动选中它,并且我在记事本中测试了Type(VK_TAB)循环,它在那里工作得很好,所以我不知道它为什么不起作用。
我最初尝试使用SendInput而不是keybd_event,但我无法使用Ctrl / Alt,以防万一你想知道。
非常感谢任何和所有帮助。
void Type(int x){
const int KEYEVENT_KEYUP = 0x02;
keybd_event(x,0,0,0);
keybd_event(x,0,KEYEVENT_KEYUP,0);
}
void Ctrl(int x){
const int KEYEVENT_KEYUP = 0x02;
keybd_event(VK_CONTROL,0,0,0); // press the CTRL key
keybd_event(x,0,0,0);
keybd_event(x,0,KEYEVENT_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENT_KEYUP,0); // let up the CTRL key
}
void Alt(int x){
const int KEYEVENT_KEYUP = 0x02;
keybd_event(VK_MENU,0,0,0); // press the ALT key
keybd_event(x,0,0,0);
keybd_event(x,0,KEYEVENT_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENT_KEYUP,0); // let up the ALT key
}
void Shift(int x){
const int KEYEVENT_KEYUP = 0x02;
keybd_event(VK_SHIFT,0,0,0); // press the SHIFT key
keybd_event(x,0,0,0);
keybd_event(x,0,KEYEVENT_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENT_KEYUP,0); // let up the SHIFT key
}
void Capture(string filename){
Ctrl('S');
Alt(VK_SPACE);
Type(VK_RIGHT);
Type(VK_RETURN);
for(int a = 0; a < 13; a++){
Type(VK_TAB);
}
for(int b = 0; b < filename.length(); b++){
Type(filename[b]);
}
Type(VK_RETURN);
}
答案 0 :(得分:0)
发送键盘事件时,是否需要发送指定按下哪个控件的代码? GetKeyState和GetAsyncKeyState是用于找出按下哪些键并且它们响应VK_LSHIFT,VK_RSHIFT,VK_LCONTROL,VK_RCONTROL等的API(除了与位置无关的VK_CONTROL,VK_SHIFT等)。