我尝试使用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 );
}
其中选择列表[selectWindow]是我发送数据的窗口,并篡改char [2](将char从hello [i]转换为char *用于该函数。 这段代码将hello wariable的内容写入所选窗口,但是,我试图发送Return键,
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的“滞后”,因为如果我在等待(2) 'for'循环结束,它工作正常,但我不想在每次发送邮件的2秒内等待。
我不知道如何解决这个问题。
谢谢。
答案 0 :(得分:1)
XFlush(disp)或XSync(disp,false)?