0X41.cpp
上传用户:hyz2004817
上传日期:2022-03-30
资源大小:226k
文件大小:1k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. extern BOOL g_bMustExit;
  3. ////////////////////////////////
  4. //
  5. // 生成键盘事件
  6. //
  7. // 附加数据描述: 一个 RCAKEYBDINPUT 结构数组.
  8. //
  9. // 数组元素个数可以这样获得: 
  10. // (RCAREUQUESTHEAD.requestBytes-sizeof(RCAREQUESTHEADER)) / sizeof(RCAKEYBDINPUT)
  11. //
  12. BYTE bSave;
  13. BOOL bFirst = 0;
  14. BOOL WINAPI
  15. RCAID_0X41_HANDLER(
  16.    SOCKET s,
  17.    RCAREQUESTHANDLEDATA * pData,
  18.    RCAREQUESTHEADER * pRCAHead,
  19.    HANDLE hEventArray[2]
  20. )
  21. {
  22. int len; // 附加数据长度;
  23. int count; // 数组元素个数
  24. int ret;
  25. BOOL bExit = FALSE;
  26. RCAKEYBDINPUT bi;
  27. len = pRCAHead->requestBytes - sizeof( RCAREQUESTHEADER );
  28. // 计算数组元素个数
  29. count = len / sizeof(RCAKEYBDINPUT);
  30. // 限制一次执行的次数,最大 20 次
  31. if( count > 20 )
  32. return FALSE;
  33. // 接收, 执行; 接收, 执行...
  34. while( count-- )
  35. {
  36. ret = RCARecv_EventSelectIO( s, hEventArray, (char*)&bi, sizeof(RCAKEYBDINPUT));
  37. if( ret != len )
  38. {
  39. // 添加错误响应
  40. return FALSE;
  41. }
  42. keybd_event( (BYTE)(bi.wVk), (BYTE)(bi.wScan), bi.dwFlags, bi.dwExtraInfo );
  43. }
  44. // 添加响应处理
  45. return TRUE;
  46. }