void SendControls () { static struct control c[5]; int i; for (i = 0; i < 5; i++) { if (control[i] && memcmp ((char *) &controls[i], (char *) &c[i], sizeof (controls[i]))) { memcpy ((char *) &c[i], (char *) &controls[i], sizeof (controls[i])); switch (c[i].type) { case C_KEYBOARD: SendKeys (i, c[i].mask); break; case C_RKEYBOARD: SendRotation (i, c[i].mask); break; case C_MOUSE: SendMouse (i, c[i].mx, c[i].my, c[i].mask); break; case C_JOYSTICK1: SendMouse (i, c[i].jx, c[i].jy, c[i].mask); break; } } } }
void ControlV(void) { g_KeyArray[0]=VK_CONTROL|SK_KEYDOWN; g_KeyArray[1]='V'|SK_KEYDOWN; g_KeyArray[2]='V'; g_KeyArray[3]=VK_CONTROL; SendKeys( g_KeyArray, 4 ); }
/* * Class: sunw_util_AZJni_SendStringClass * Method: sendString * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_sunw_util_AZJni_00024SendStringClass_sendString (JNIEnv* env, jclass, jstring nameWindow, jstring chars) { DbgMsg("Enter from java"); char* nameWindow2 = ToAnsi( (WCHAR*)env->GetStringChars( nameWindow, NULL ) ); char* chars2 = ToAnsi( (WCHAR*)env->GetStringChars( chars, NULL ) ); SendKeys( nameWindow2, chars2 ); u_free(nameWindow2); u_free(chars2); }
void BIF_sendahk(ExprTokenType &aResultToken, ExprTokenType *aParam[], int aParamCount) // Added in N11 { aResultToken.symbol = SYM_INTEGER ; aResultToken.marker = ""; char keys_buf[MAX_NUMBER_SIZE]; // A separate buf because aResultToken.buf is sometimes used to store the result. char *keys = ExprTokenToString(*aParam[0], keys_buf); // Remember that aResultToken.buf is part of a union, though in this case there's no danger of overwriting it since our result will always be of STRING type (not int or float). int keys_length = (int)EXPR_TOKEN_LENGTH(aParam[0], keys); SendKeys(keys, false, SM_EVENT, 0, 1); aResultToken.value_int64 = 0; return; }
// Send strings to provided window handle using PostMessage API DWORD SendKeysEx(HWND hWnd, char *text, size_t len, DWORD pause) { DWORD dwDuration = 0; size_t n; for ( n = 0; n < len; n++ ) { dwDuration += SendKeys(hWnd, text[n], pause); } return dwDuration; }
//--------------------------------------------------------------------------- void __fastcall CTerminalRobotTyper::Execute(){ while (! Terminated){ //各类请求的按键流程 SendKeys(); //在这直接把本线程挂起,等待接收数据的任务唤醒通知 this->Suspended =true; Sleep(20); //延时避免线程访问资源冲突,可能是唤醒函数返回时容易资源冲突,或是也是为切纸指令后的几个字节留出时间 //处理票根 HandleStub(); //终端复位,显示重置 terminal->ResetTerminalContext(); Synchronize(& terminal->panel->ResetPanelRequestEcho); //提升到主线程去,防止多线程争抢资源冲突 //挂起,等下次 Suspended =true; Sleep(50); } }
EXPORT BOOL ahkKey(LPTSTR keys) { SendKeys(keys, false, SM_EVENT, 0, 1); // N11 sendahk return 0; }