我尝试用XLib和XTestFakeKeyEvent将密钥发送到一个应用程序,它工作得很好,代码如下:
XSetInputFocus(disp, list[selectWindow],RevertToPointerRoot,CurrentTime);
for(i=0;i<hello.size();i++){
tamper[0] = hello[i];
KeySym key = XStringToKeysym(tamper);
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, key),True, CurrentTime );
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, key),False, CurrentTime );
}其中,Select listselectWindow是我发送数据的窗口,篡改char2 (为函数将char从helloi转换为char *。这段代码将hello _ wariable的内容写入选定的窗口,但是,我试图发送返回键,
XSetInputFocus(disp, list[selectWindow],RevertToPointerRoot,CurrentTime);
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, XK_Return),True, CurrentTime );
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, XK_Return),False, CurrentTime );所以我再次选择窗口,并将XK_Return键发送到应用程序,但它不起作用,我认为这是因为Xlib的“滞后”,因为如果我在“for”循环的末尾放置一个wait(2),它可以正常工作,但我不想每次发送消息时都在2秒内等待。
我不知道如何才能解决这个问题。
谢谢。
发布于 2012-03-29 04:39:43
调用XTestFakeKeyEvent后是XFlush(disp)还是XSync(disp,false)?
https://stackoverflow.com/questions/9410776
复制相似问题