RCAHelper.h
上传用户:hyz2004817
上传日期:2022-03-30
资源大小:226k
文件大小:3k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #ifndef _RCAHELPER_H_
  3. #define _RCAHELPER_H_
  4. //////////////////////////////////////////
  5. //
  6. // 发送数据帮助函数, IO 模型为 event select 
  7. //
  8. // 在调用函数前 SOCKET s 必须被置为异步模式,
  9. // 并且用带有 FD_WRITE 事件通知的标志对其调用了 WSAEventSelect 函数
  10. //
  11. BOOL 
  12. WINAPI RCASend_EventSelectIO(
  13. SOCKET s,
  14. HANDLE hEventArray[2],
  15. char * buf,
  16. int len
  17. );
  18. #define RCARECV_WAIT_TIMEOUT 1
  19. #define RCARECV_WAIT_MSGRETURN 2
  20. #define RCARECV_SOCKET_ERROR 3
  21. #define RCARECV_SUCCEEDED 4
  22. #define RCARECV_FAILED 5
  23. #define RCARECV_REMOTECOSED 6
  24. #define RCARECV_WAIT_FAILED 7
  25. ////////////////////////////////////////
  26. //
  27. // 接收数据帮助函数, IO 模型为 Async Event
  28. //
  29. // 在调用函数前 SOCKET s 必须被置为异步模式, 
  30. // 并且用带有 FD_READ 事件通知的标志对其调用了 WSAEventSelect 函数
  31. //
  32. extern "C"
  33. BOOL 
  34. WINAPI RCARecv_EventSelectIO( 
  35. SOCKET s,
  36. HANDLE hEventArray[2],
  37. char * buf, // 接收缓冲区 . 若成功
  38. int len // 
  39. );
  40. ///////////////////////////////////////////
  41. //
  42. // 获得整个屏幕的象素信息
  43. //
  44. // 参数: 
  45. //
  46. // pbmi[in,out] -- BITMAPINFO 结构指针, 函数成功调用后会填充这个结构,这个结构反映了象素信息
  47. //
  48. // x, y, w, h;  矩形的左上角座标, 以及宽高. 如果这些参数不合法,将被修整为合法参数
  49. //
  50. // pBits[in,out] -- void 指针, 函数调用成功后,pBits 将被象素值填充. 如果 pBits 为NULL,
  51. // 函数将修改 dwBufferSize 参数, 指明需要多少缓冲存放象素值
  52. //
  53. //  dwBufferSize -- [in, out] 指明 pBits 的大小. 如果函数成功调用后, dwBufferSize 将会被修改, 
  54. // 指明实际拷贝的象素字节数
  55. // 返回值:
  56. //  BOOL 类型, 函数调用成功后, 将返回 TRUE; 失败,将返回 FALSE;
  57. // 
  58. extern "C"
  59. HBITMAP 
  60. WINAPI GetDCPixel_BMP (
  61. HDC hdc,
  62. int  x,
  63. int  y,
  64. int  w,
  65. int  h,
  66. int zw, // 缩放控制, 0 为不缩放
  67. int zh, // 缩放控制, 0 为不缩放
  68. WORD wBitCount,
  69. VOID ** pBits,
  70. BITMAPINFOHEADER * pbmih, // 当色深为 8 时, 包含颜色表
  71. DWORD * pdwBitmapInfoSize
  72. );
  73. ////////////////////////////////////////////////
  74. ////
  75. //
  76. // 从一个 JPEG 格式的像素缓冲区解码,
  77. // 解码后的像素格式为 WINDOWS DIB 格式
  78. //
  79. //  存放 WINDOWS DIB 格式的像素缓冲区由此函数分配,
  80. // 释放交由调用者. 必须用  delete[] 释放
  81. //
  82. extern "C"
  83. BOOL 
  84. WINAPI 
  85. DecodeFromJPEGBuffer(
  86. BYTE * lpJpgBuffer,
  87. DWORD  dwJpgBufferSize,
  88. BYTE** lppRgbBuffer,
  89. DWORD* lpdwWidth,
  90. DWORD* lpdwHeight,
  91. DWORD* lpdwNumberOfChannels
  92. );
  93. ////////////////////////////////////////////////
  94. //
  95. // 从一个 WINDOWS DIB 格式的像素缓冲区编码到一个 JPEG 格式的像素缓冲区
  96. //
  97. // 存放 JPEG 格式的像素缓冲区由此函数分配
  98. // 释放交由调用者, 必须用  delete[] 释放
  99. extern "C"
  100. BOOL 
  101. WINAPI 
  102. EncodeToJPEGBuffer(
  103.  BYTE* lpRgbBuffer,
  104.  DWORD dwWidth,
  105.  DWORD dwHeight,
  106.  BYTE** lppJpgBuffer,
  107.  DWORD* lpdwJpgBufferSize,
  108.  int iQuality // JPEG 图象质量
  109. );
  110. /////////////////////////////////////////////////////
  111. //
  112. // 初始化一个应答头, dwTotalBytes 被初始化为 sizeof(RCARESPONSEHEADER)
  113. //
  114. extern "C"
  115. VOID
  116. WINAPI InitResponseHead(
  117. PRCARESPONSEHEADER prresh,
  118. DWORD dwStatusCode,
  119. DWORD dwSize
  120. );
  121. #endif