mirror of
https://github.com/Cc28256/CcRemote.git
synced 2025-07-28 16:58:33 +00:00
Compare commits
7 Commits
20200530.1
...
20200604.2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
41c189a5a7 | ||
![]() |
d3ad76272a | ||
![]() |
2afd8019a8 | ||
![]() |
d12cd9d6ac | ||
![]() |
208be40ccb | ||
![]() |
3d3b2ce49a | ||
![]() |
cd670fdaed |
Binary file not shown.
@@ -1,36 +1 @@
|
||||
f:\myapp\ccremote\bin\server\ccmaindll.lib
|
||||
f:\myapp\ccremote\bin\server\ccmaindll.exp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.pch
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\vc141.pdb
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\vc141.idb
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\pch.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\audio.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\until.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\buffer.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\clientsocket.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\videomanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\videocap.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\systemmanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\shellmanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\screenspy.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\screenmanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\regeditex.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\manager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\keyboardmanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\kernelmanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\install.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\dialupass.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\audiomanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\filemanager.obj
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\dllmain.obj
|
||||
f:\myapp\ccremote\bin\server\ccmaindll.ilk
|
||||
f:\myapp\ccremote\bin\server\ccmaindll.dll
|
||||
f:\myapp\ccremote\bin\server\ccmaindll.pdb
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\..\..\bin\server\ccmaindll.dll
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\ccmaindll.write.1u.tlog
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\cl.command.1.tlog
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\cl.read.1.tlog
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\cl.write.1.tlog
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\link.command.1.tlog
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\link.read.1.tlog
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\debug\ccmaindll.tlog\link.write.1.tlog
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\..\..\bin\server\ccmaindll.dll
|
||||
|
@@ -1,108 +1,108 @@
|
||||
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(377,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。
|
||||
G:\VS2017\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(377,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
pch.cpp
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
Audio.cpp
|
||||
f:\myapp\ccremote\common\audio.cpp(99): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\common\audio.cpp(99): warning C4018: “<”: 有符号/无符号不匹配
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
ClientSocket.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(69): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(71): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(207): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(324): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(423): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(478): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(69): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(71): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(207): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(324): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(423): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(478): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
Buffer.cpp
|
||||
until.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\until.cpp(68): warning C4996: 'strcmpi': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strcmpi. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(543): note: 参见“strcmpi”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\until.cpp(169): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
d:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\until.cpp(172): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
d:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\until.cpp(68): warning C4996: 'strcmpi': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strcmpi. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(543): note: 参见“strcmpi”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\until.cpp(169): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\until.cpp(172): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
正在生成代码...
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
AudioManager.cpp
|
||||
Dialupass.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\dialupass.h(62): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(139): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(143): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(147): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(208): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
d:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.h(62): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(139): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(143): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(147): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(208): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
install.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(7): warning C4101: “Desc”: 未引用的局部变量
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(120): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(338): note: 参见“strncpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(121): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(214): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(338): note: 参见“strncpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\install.cpp(215): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(7): warning C4101: “Desc”: 未引用的局部变量
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(120): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(338): note: 参见“strncpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(121): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(214): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(338): note: 参见“strncpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(215): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
KernelManager.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(43): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(43): warning C4018: “<”: 有符号/无符号不匹配
|
||||
KeyboardManager.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(33): warning C4018: “<”: 有符号/无符号不匹配
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(307): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(33): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(307): warning C4018: “<”: 有符号/无符号不匹配
|
||||
Manager.cpp
|
||||
RegEditEx.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(9): warning C4996: 'strnicmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strnicmp. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(560): note: 参见“strnicmp”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(100): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(111): warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(266): note: 参见“strncat”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(112): warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(266): note: 参见“strncat”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(114): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(141): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(9): warning C4996: 'strnicmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strnicmp. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(560): note: 参见“strnicmp”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(100): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(111): warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(266): note: 参见“strncat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(112): warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(266): note: 参见“strncat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(114): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(141): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
ScreenManager.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenmanager.cpp(5): warning C4005: “_WIN32_WINNT”: 宏重定义
|
||||
d:\windows kits\10\include\10.0.17763.0\shared\sdkddkver.h(216): note: 参见“_WIN32_WINNT”的前一个定义
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenmanager.cpp(5): warning C4005: “_WIN32_WINNT”: 宏重定义
|
||||
g:\windows kits\10\include\10.0.17763.0\shared\sdkddkver.h(216): note: 参见“_WIN32_WINNT”的前一个定义
|
||||
ScreenSpy.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(363): warning C4018: “>”: 有符号/无符号不匹配
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(384): warning C4018: “<”: 有符号/无符号不匹配
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(403): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(379): warning C4018: “>”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(400): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(419): warning C4018: “<”: 有符号/无符号不匹配
|
||||
ShellManager.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\shellmanager.cpp(52): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\shellmanager.cpp(52): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
SystemManager.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\dialupass.h(62): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\systemmanager.cpp(137): warning C4018: “<”: 有符号/无符号不匹配
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\systemmanager.cpp(228): warning C4101: “cbNeeded”: 未引用的局部变量
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.h(62): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\systemmanager.cpp(137): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\systemmanager.cpp(228): warning C4101: “cbNeeded”: 未引用的局部变量
|
||||
VideoCap.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\videocap.cpp(118): warning C4101: “gCapTureParms”: 未引用的局部变量
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\videocap.cpp(118): warning C4101: “gCapTureParms”: 未引用的局部变量
|
||||
VideoManager.cpp
|
||||
正在生成代码...
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
FileManager.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(271): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(272): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(422): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(597): warning C4307: “+”: 整型常量溢出
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(594): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(240): warning C4715: “CFileManager::OpenFile”: 不是所有的控件路径都返回值
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(271): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(272): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(422): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(597): warning C4307: “+”: 整型常量溢出
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(594): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(240): warning C4715: “CFileManager::OpenFile”: 不是所有的控件路径都返回值
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
dllmain.cpp
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\login.h(38): warning C4101: “pEnd”: 未引用的局部变量
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\login.h(184): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
d:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
f:\myapp\ccremote\ccmaindll\ccmaindll\dllmain.cpp(168): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\login.h(38): warning C4101: “pEnd”: 未引用的局部变量
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\login.h(184): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\dllmain.cpp(168): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
LINK : warning LNK4044: 无法识别的选项“/Zc:strictStrings”;已忽略
|
||||
正在创建库 ..\..\bin\server\CcMainDll.lib 和对象 ..\..\bin\server\CcMainDll.exp
|
||||
LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
|
||||
CcMainDll.vcxproj -> F:\myapp\CcRemote\CcMainDll\CcMainDll\..\..\bin\server\CcMainDll.dll
|
||||
CcMainDll.vcxproj -> G:\CcRemote\CcRemote\CcMainDll\CcMainDll\..\..\bin\server\CcMainDll.dll
|
||||
|
@@ -1,2 +1,2 @@
|
||||
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0
|
||||
Debug|Win32|F:\myapp\CcRemote\CcMainDll\|
|
||||
Debug|Win32|G:\CcRemote\CcRemote\CcMainDll\|
|
||||
|
1
CcMainDll/CcMainDll/Release/CcMainDll.Build.CppClean.log
Normal file
1
CcMainDll/CcMainDll/Release/CcMainDll.Build.CppClean.log
Normal file
@@ -0,0 +1 @@
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\..\..\bin\server\ccmaindll.dll
|
108
CcMainDll/CcMainDll/Release/CcMainDll.log
Normal file
108
CcMainDll/CcMainDll/Release/CcMainDll.log
Normal file
@@ -0,0 +1,108 @@
|
||||
G:\VS2017\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(377,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
pch.cpp
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
Audio.cpp
|
||||
g:\ccremote\ccremote\common\audio.cpp(99): warning C4018: “<”: 有符号/无符号不匹配
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
ClientSocket.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(69): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(71): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(207): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(324): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(423): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\clientsocket.cpp(478): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
Buffer.cpp
|
||||
KeyboardManager.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(33): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\keyboardmanager.cpp(307): warning C4018: “<”: 有符号/无符号不匹配
|
||||
until.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\until.cpp(68): warning C4996: 'strcmpi': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strcmpi. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(543): note: 参见“strcmpi”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\until.cpp(169): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\until.cpp(172): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
AudioManager.cpp
|
||||
Dialupass.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.h(62): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(139): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(143): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(147): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.cpp(208): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
install.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(7): warning C4101: “Desc”: 未引用的局部变量
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(121): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(120): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(338): note: 参见“strncpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(215): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\install.cpp(214): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(338): note: 参见“strncpy”的声明
|
||||
KernelManager.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\kernelmanager.cpp(43): warning C4018: “<”: 有符号/无符号不匹配
|
||||
Manager.cpp
|
||||
RegEditEx.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(9): warning C4996: 'strnicmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strnicmp. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(560): note: 参见“strnicmp”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(100): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(114): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(141): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(111): warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(266): note: 参见“strncat”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\regeditex.cpp(112): warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(266): note: 参见“strncat”的声明
|
||||
ScreenManager.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenmanager.cpp(5): warning C4005: “_WIN32_WINNT”: 宏重定义
|
||||
g:\windows kits\10\include\10.0.17763.0\shared\sdkddkver.h(216): note: 参见“_WIN32_WINNT”的前一个定义
|
||||
ScreenSpy.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(379): warning C4018: “>”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(400): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(419): warning C4018: “<”: 有符号/无符号不匹配
|
||||
ShellManager.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\shellmanager.cpp(52): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
SystemManager.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\dialupass.h(62): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\systemmanager.cpp(137): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\systemmanager.cpp(228): warning C4101: “cbNeeded”: 未引用的局部变量
|
||||
VideoCap.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\videocap.cpp(118): warning C4101: “gCapTureParms”: 未引用的局部变量
|
||||
VideoManager.cpp
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
FileManager.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(271): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(272): warning C4244: “=”: 从“unsigned __int64”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(422): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(594): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(597): warning C4307: “+”: 整型常量溢出
|
||||
cl : 命令行 warning D9002: 忽略未知选项“/Zc:stricStrings”
|
||||
dllmain.cpp
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\login.h(38): warning C4101: “pEnd”: 未引用的局部变量
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\login.h(184): warning C4996: 'GetVersionExA': 被声明为已否决
|
||||
g:\windows kits\10\include\10.0.17763.0\um\sysinfoapi.h(378): note: 参见“GetVersionExA”的声明
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\dllmain.cpp(168): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(133): note: 参见“strcpy”的声明
|
||||
LINK : warning LNK4044: 无法识别的选项“/Zc:strictStrings”;已忽略
|
||||
正在创建库 ..\..\bin\server\CcMainDll.lib 和对象 ..\..\bin\server\CcMainDll.exp
|
||||
正在生成代码
|
||||
g:\ccremote\ccremote\ccmaindll\ccmaindll\common\filemanager.cpp(240): warning C4715: “CFileManager::OpenFile”: 不是所有的控件路径都返回值
|
||||
All 351 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
|
||||
已完成代码的生成
|
||||
CcMainDll.vcxproj -> G:\CcRemote\CcRemote\CcMainDll\CcMainDll\..\..\bin\server\CcMainDll.dll
|
@@ -0,0 +1,2 @@
|
||||
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0
|
||||
Release|Win32|G:\CcRemote\CcRemote\CcMainDll\|
|
@@ -114,9 +114,12 @@ void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize)
|
||||
|
||||
void CScreenManager::sendBITMAPINFO()
|
||||
{
|
||||
//CScreenSpy<70><79><EFBFBD>õ<EFBFBD>bmp size
|
||||
DWORD dwBytesLength = 1 + m_pScreenSpy->getBISize();
|
||||
LPBYTE lpBuffer = (LPBYTE)VirtualAlloc(NULL, dwBytesLength, MEM_COMMIT, PAGE_READWRITE);
|
||||
lpBuffer[0] = TOKEN_BITMAPINFO;
|
||||
|
||||
// ͼ<><CDBC>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>ض<EFBFBD>
|
||||
memcpy(lpBuffer + 1, m_pScreenSpy->getBI(), dwBytesLength - 1);
|
||||
Send(lpBuffer, dwBytesLength);
|
||||
VirtualFree(lpBuffer, 0, MEM_RELEASE);
|
||||
@@ -170,15 +173,19 @@ DWORD WINAPI CScreenManager::WorkThread(LPVOID lparam)
|
||||
{
|
||||
CScreenManager *pThis = (CScreenManager *)lparam;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>bmpλͼ<CEBB>ṹ
|
||||
pThis->sendBITMAPINFO();
|
||||
// <20>ȿ<EFBFBD><C8BF>ƶ˶Ի<CBB6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// <20>ȿ<EFBFBD><C8BF>ƶ˶Ի<CBB6><D4BB><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
||||
pThis->WaitForDialogOpen();
|
||||
|
||||
//<2F><><EFBFBD>͵<EFBFBD>һ֡
|
||||
pThis->sendFirstScreen();
|
||||
try // <20><><EFBFBD>ƶ<EFBFBD>ǿ<EFBFBD>ƹر<C6B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
while (pThis->m_bIsWorking)
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pThis->sendNextScreen();
|
||||
}catch(...){};
|
||||
|
||||
|
@@ -33,13 +33,17 @@ CScreenSpy::CScreenSpy(int biBitCount, bool bIsGray, UINT nMaxFrameRate)
|
||||
|
||||
if (!SelectInputWinStation())
|
||||
{
|
||||
// <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>洰<EFBFBD><E6B4B0>
|
||||
m_hDeskTopWnd = GetDesktopWindow();
|
||||
|
||||
// <20><><EFBFBD>ݴ<EFBFBD><DDB4>ڻ<EFBFBD>ȡDC<44>ٱ<EFBFBD>
|
||||
m_hFullDC = GetDC(m_hDeskTopWnd);
|
||||
}
|
||||
|
||||
m_dwBitBltRop = SRCCOPY;
|
||||
|
||||
m_bAlgorithm = ALGORITHM_SCAN; // Ĭ<><C4AC>ʹ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>㷨
|
||||
// Ĭ<><C4AC>ʹ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>㷨
|
||||
m_bAlgorithm = ALGORITHM_SCAN;
|
||||
m_dwLastCapture = GetTickCount();
|
||||
m_nMaxFrameRate = nMaxFrameRate;
|
||||
m_dwSleep = 1000 / nMaxFrameRate;
|
||||
@@ -50,6 +54,7 @@ CScreenSpy::CScreenSpy(int biBitCount, bool bIsGray, UINT nMaxFrameRate)
|
||||
|
||||
m_nStartLine = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>DC
|
||||
m_hFullMemDC = ::CreateCompatibleDC(m_hFullDC);
|
||||
m_hDiffMemDC = ::CreateCompatibleDC(m_hFullDC);
|
||||
m_hLineMemDC = ::CreateCompatibleDC(NULL);
|
||||
@@ -57,21 +62,27 @@ CScreenSpy::CScreenSpy(int biBitCount, bool bIsGray, UINT nMaxFrameRate)
|
||||
m_lpvLineBits = NULL;
|
||||
m_lpvFullBits = NULL;
|
||||
|
||||
// LPBITMAPINFOλͼ<CEBB><CDBC>Ϣ<EFBFBD>ṹ
|
||||
m_lpbmi_line = ConstructBI(m_biBitCount, m_nFullWidth, 1);
|
||||
m_lpbmi_full = ConstructBI(m_biBitCount, m_nFullWidth, m_nFullHeight);
|
||||
m_lpbmi_rect = ConstructBI(m_biBitCount, m_nFullWidth, 1);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>λͼ<CEBB>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_lpbmi_full<6C><6C>m_lpvFullBits<74><73><EFBFBD>͵Ļ<CDB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>ץȡ<D7A5><C8A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1>浽<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ض<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>Ϊλͼ<CEBB><CDBC><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ڴ<EFBFBD><DAB4>ռ<EFBFBD>
|
||||
m_hLineBitmap = ::CreateDIBSection(m_hFullDC, m_lpbmi_line, DIB_RGB_COLORS, &m_lpvLineBits, NULL, NULL);
|
||||
m_hFullBitmap = ::CreateDIBSection(m_hFullDC, m_lpbmi_full, DIB_RGB_COLORS, &m_lpvFullBits, NULL, NULL);
|
||||
m_hDiffBitmap = ::CreateDIBSection(m_hFullDC, m_lpbmi_full, DIB_RGB_COLORS, &m_lpvDiffBits, NULL, NULL);
|
||||
|
||||
// <20><><EFBFBD>ڴ<EFBFBD>DC<44><43>HITMAP<41><50>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
// ͨ<><CDA8>m_hFullMemDCץȡ<D7A5><C8A1><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD> m_hFullBitmapȻ<70><C8BB><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1>浽<EFBFBD><E6B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_lpvFullBits<74><73>
|
||||
::SelectObject(m_hFullMemDC, m_hFullBitmap);
|
||||
::SelectObject(m_hLineMemDC, m_hLineBitmap);
|
||||
::SelectObject(m_hDiffMemDC, m_hDiffBitmap);
|
||||
|
||||
::SetRect(&m_changeRect, 0, 0, m_nFullWidth, m_nFullHeight);
|
||||
|
||||
// <20>㹻<EFBFBD><E3B9BB>
|
||||
// <20>㹻<EFBFBD><E3B9BB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱץȡ<D7A5><C8A1><EFBFBD><EFBFBD>ͼ<EFBFBD>εĻ<CEB5><C4BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_rectBuffer = new BYTE[m_lpbmi_full->bmiHeader.biSizeImage * 2];
|
||||
m_nDataSizePerLine = m_lpbmi_full->bmiHeader.biSizeImage / m_nFullHeight;
|
||||
|
||||
@@ -200,6 +211,8 @@ void CScreenSpy::setAlgorithm(UINT nAlgorithm)
|
||||
InterlockedExchange((LPLONG)&m_bAlgorithm, nAlgorithm);
|
||||
}
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>λͼ<CEBB>ṹ
|
||||
LPBITMAPINFO CScreenSpy::ConstructBI(int biBitCount, int biWidth, int biHeight)
|
||||
{
|
||||
/*
|
||||
@@ -303,13 +316,16 @@ void CScreenSpy::setCaptureLayer(bool bIsCaptureLayer)
|
||||
|
||||
LPBITMAPINFO CScreenSpy::getBI()
|
||||
{
|
||||
// LPBITMAPINFOλͼ<CEBB><CDBC>Ϣ<EFBFBD>ṹ
|
||||
return m_lpbmi_full;
|
||||
}
|
||||
|
||||
UINT CScreenSpy::getBISize()
|
||||
{
|
||||
// <20><>ǰλͼ<CEBB><CDBC>С
|
||||
int color_num = m_biBitCount <= 8 ? 1 << m_biBitCount : 0;
|
||||
|
||||
// <20>ṹ+λͼX<CDBC>ṹ<EFBFBD><E1B9B9>С
|
||||
return sizeof(BITMAPINFOHEADER) + (color_num * sizeof(RGBQUAD));
|
||||
}
|
||||
|
||||
|
Binary file not shown.
875
CcRemote/CcRemote/CScreenSpyDlg.cpp
Normal file
875
CcRemote/CcRemote/CScreenSpyDlg.cpp
Normal file
@@ -0,0 +1,875 @@
|
||||
// CScreenSpyDlg.cpp: 实现文件
|
||||
//
|
||||
|
||||
#include "pch.h"
|
||||
#include "CcRemote.h"
|
||||
#include "CScreenSpyDlg.h"
|
||||
#include "afxdialogex.h"
|
||||
#include "..\..\common\macros.h"
|
||||
|
||||
enum
|
||||
{
|
||||
IDM_CONTROL = 0x0010,
|
||||
IDM_SEND_CTRL_ALT_DEL,
|
||||
IDM_TRACE_CURSOR, // 跟踪显示远程鼠标
|
||||
IDM_BLOCK_INPUT, // 锁定远程计算机输入
|
||||
IDM_BLANK_SCREEN, // 黑屏
|
||||
IDM_CAPTURE_LAYER, // 捕捉层
|
||||
IDM_SAVEDIB, // 保存图片
|
||||
IDM_GET_CLIPBOARD, // 获取剪贴板
|
||||
IDM_SET_CLIPBOARD, // 设置剪贴板
|
||||
IDM_ALGORITHM_SCAN, // 隔行扫描算法
|
||||
IDM_ALGORITHM_DIFF, // 差异比较算法
|
||||
IDM_DEEP_1, // 屏幕色彩深度.....
|
||||
IDM_DEEP_4_GRAY,
|
||||
IDM_DEEP_4_COLOR,
|
||||
IDM_DEEP_8_GRAY,
|
||||
IDM_DEEP_8_COLOR,
|
||||
IDM_DEEP_16,
|
||||
IDM_DEEP_32
|
||||
};
|
||||
// 两种算法
|
||||
#define ALGORITHM_SCAN 1 // 速度很快,但碎片太多
|
||||
#define ALGORITHM_DIFF 2 // 速度很慢,也占CPU,但是数据量都是最小的
|
||||
// CScreenSpyDlg 对话框
|
||||
|
||||
IMPLEMENT_DYNAMIC(CScreenSpyDlg, CDialog)
|
||||
CScreenSpyDlg::CScreenSpyDlg(CWnd* pParent, CIOCPServer* pIOCPServer, ClientContext *pContext)
|
||||
: CDialog(IDD_SCREENSPY, pParent)
|
||||
{
|
||||
m_iocpServer = pIOCPServer;
|
||||
m_pContext = pContext;
|
||||
m_bIsFirst = true; // 如果是第一次打开对话框,显示提示等待信息
|
||||
m_lpScreenDIB = NULL;
|
||||
char szPath[MAX_PATH];
|
||||
GetSystemDirectory(szPath, MAX_PATH);
|
||||
lstrcat(szPath, "\\shell32.dll");
|
||||
m_hIcon = ExtractIcon(AfxGetApp()->m_hInstance, szPath, 17/*网上邻居图标索引*/);
|
||||
|
||||
sockaddr_in sockAddr;
|
||||
memset(&sockAddr, 0, sizeof(sockAddr));
|
||||
int nSockAddrLen = sizeof(sockAddr);
|
||||
BOOL bResult = getpeername(m_pContext->m_Socket, (SOCKADDR*)&sockAddr, &nSockAddrLen);
|
||||
|
||||
m_IPAddress = bResult != INVALID_SOCKET ? inet_ntoa(sockAddr.sin_addr) : "";
|
||||
|
||||
//重要的是这里,这里将服务端发送来的bmp结构头和服务端屏幕大小保存起来
|
||||
UINT nBISize = m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1;
|
||||
m_lpbmi = (BITMAPINFO *) new BYTE[nBISize];
|
||||
m_lpbmi_rect = (BITMAPINFO *) new BYTE[nBISize];
|
||||
//这里就是保存bmp位图头了
|
||||
memcpy(m_lpbmi, m_pContext->m_DeCompressionBuffer.GetBuffer(1), nBISize);
|
||||
memcpy(m_lpbmi_rect, m_pContext->m_DeCompressionBuffer.GetBuffer(1), nBISize);
|
||||
|
||||
memset(&m_MMI, 0, sizeof(MINMAXINFO));
|
||||
|
||||
m_bIsCtrl = false; // 默认不控制
|
||||
m_nCount = 0;
|
||||
m_bCursorIndex = 1;
|
||||
}
|
||||
|
||||
CScreenSpyDlg::~CScreenSpyDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CScreenSpyDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CScreenSpyDlg, CDialog)
|
||||
ON_WM_CLOSE()
|
||||
ON_WM_GETMINMAXINFO()
|
||||
ON_WM_HSCROLL()
|
||||
ON_WM_PAINT()
|
||||
ON_WM_SYSCOMMAND()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CScreenSpyDlg 消息处理程序
|
||||
|
||||
|
||||
void CScreenSpyDlg::OnClose()
|
||||
{
|
||||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
m_pContext->m_Dialog[0] = 0;
|
||||
|
||||
closesocket(m_pContext->m_Socket);
|
||||
|
||||
::ReleaseDC(m_hWnd, m_hDC);
|
||||
DeleteObject(m_hFullBitmap);
|
||||
|
||||
//关闭会进来两次,为了避免崩溃判断一下
|
||||
if (m_lpbmi)
|
||||
delete m_lpbmi;
|
||||
m_lpbmi = NULL;
|
||||
if (m_lpbmi_rect)
|
||||
delete m_lpbmi_rect;
|
||||
m_lpbmi_rect = NULL;
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_ARROW));
|
||||
|
||||
m_bIsCtrl = false;
|
||||
CDialog::OnClose();
|
||||
}
|
||||
|
||||
|
||||
BOOL CScreenSpyDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 在此添加额外的初始化
|
||||
//初始化菜单
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_NO));
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_CONTROL, "控制屏幕(&Y)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_SEND_CTRL_ALT_DEL, "发送Ctrl-Alt-Del(&K)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_TRACE_CURSOR, "跟踪服务端鼠标(&T)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_BLOCK_INPUT, "锁定服务端鼠标和键盘(&L)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_BLANK_SCREEN, "服务端黑屏(&B)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_CAPTURE_LAYER, "捕捉层(导致鼠标闪烁)(&L)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_SAVEDIB, "保存快照(&S)");
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_GET_CLIPBOARD, "获取剪贴板(&R)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_SET_CLIPBOARD, "设置剪贴板(&L)");
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ALGORITHM_SCAN, "隔行扫描算法(&S)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ALGORITHM_DIFF, "差异比较算法(&X)");
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_1, "1 位黑白(&A)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_4_GRAY, "4 位灰度(&B)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_4_COLOR, "4 位彩色(&C)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_8_GRAY, "8 位灰度(&D)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_8_COLOR, "8 位彩色(&E)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_16, "16位高彩(&F)");
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_DEEP_32, "32位真彩(&G)");
|
||||
|
||||
pSysMenu->CheckMenuRadioItem(IDM_ALGORITHM_SCAN, IDM_ALGORITHM_DIFF, IDM_ALGORITHM_SCAN, MF_BYCOMMAND);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_4_GRAY, IDM_DEEP_32, IDM_DEEP_8_COLOR, MF_BYCOMMAND);
|
||||
}
|
||||
|
||||
// TODO: Add extra initialization here
|
||||
CString str;
|
||||
str.Format("\\\\%s %d * %d", m_IPAddress, m_lpbmi->bmiHeader.biWidth, m_lpbmi->bmiHeader.biHeight);
|
||||
SetWindowText(str);
|
||||
|
||||
m_HScrollPos = 0;
|
||||
m_VScrollPos = 0;
|
||||
m_hRemoteCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
|
||||
ICONINFO CursorInfo;
|
||||
::GetIconInfo(m_hRemoteCursor, &CursorInfo);
|
||||
if (CursorInfo.hbmMask != NULL)
|
||||
::DeleteObject(CursorInfo.hbmMask);
|
||||
if (CursorInfo.hbmColor != NULL)
|
||||
::DeleteObject(CursorInfo.hbmColor);
|
||||
m_dwCursor_xHotspot = CursorInfo.xHotspot;
|
||||
m_dwCursor_yHotspot = CursorInfo.yHotspot;
|
||||
|
||||
m_RemoteCursorPos.x = 0;
|
||||
m_RemoteCursorPos.x = 0;
|
||||
m_bIsTraceCursor = false;
|
||||
|
||||
// 初始化窗口大小结构 位图的图像数据
|
||||
//是我们分配好的缓冲区也就是说我们可以更改这个缓冲区里的数据来改变位图图像
|
||||
m_hDC = ::GetDC(m_hWnd);
|
||||
m_hMemDC = CreateCompatibleDC(m_hDC);
|
||||
m_hFullBitmap = CreateDIBSection(m_hDC, m_lpbmi, DIB_RGB_COLORS, &m_lpScreenDIB, NULL, NULL);
|
||||
SelectObject(m_hMemDC, m_hFullBitmap);
|
||||
SetScrollRange(SB_HORZ, 0, m_lpbmi->bmiHeader.biWidth);
|
||||
SetScrollRange(SB_VERT, 0, m_lpbmi->bmiHeader.biHeight);
|
||||
|
||||
InitMMI();
|
||||
SendNext();
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 异常: OCX 属性页应返回 FALSE
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::InitMMI(void)
|
||||
{
|
||||
RECT rectClient, rectWindow;
|
||||
GetWindowRect(&rectWindow);
|
||||
GetClientRect(&rectClient);
|
||||
ClientToScreen(&rectClient);
|
||||
|
||||
int nBorderWidth = rectClient.left - rectWindow.left; // 边框宽
|
||||
int nTitleWidth = rectClient.top - rectWindow.top; // 标题栏的高度
|
||||
|
||||
int nWidthAdd = nBorderWidth * 2 + GetSystemMetrics(SM_CYHSCROLL);
|
||||
int nHeightAdd = nTitleWidth + nBorderWidth + GetSystemMetrics(SM_CYVSCROLL);
|
||||
int nMinWidth = 400 + nWidthAdd;
|
||||
int nMinHeight = 300 + nHeightAdd;
|
||||
int nMaxWidth = m_lpbmi->bmiHeader.biWidth + nWidthAdd;
|
||||
int nMaxHeight = m_lpbmi->bmiHeader.biHeight + nHeightAdd;
|
||||
|
||||
|
||||
// 最小的Track尺寸
|
||||
m_MMI.ptMinTrackSize.x = nMinWidth;
|
||||
m_MMI.ptMinTrackSize.y = nMinHeight;
|
||||
|
||||
// 最大化时窗口的位置
|
||||
m_MMI.ptMaxPosition.x = 1;
|
||||
m_MMI.ptMaxPosition.y = 1;
|
||||
|
||||
// 窗口最大尺寸
|
||||
m_MMI.ptMaxSize.x = nMaxWidth;
|
||||
m_MMI.ptMaxSize.y = nMaxHeight;
|
||||
|
||||
// 最大的Track尺寸也要改变
|
||||
m_MMI.ptMaxTrackSize.x = nMaxWidth;
|
||||
m_MMI.ptMaxTrackSize.y = nMaxHeight;
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::SendNext(void)
|
||||
{
|
||||
BYTE bBuff = COMMAND_NEXT;
|
||||
m_iocpServer->Send(m_pContext, &bBuff, 1);
|
||||
}
|
||||
|
||||
//调整最大化最小化时会调用这个函数
|
||||
void CScreenSpyDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
|
||||
{
|
||||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
// 如果m_MMI已经被赋值
|
||||
if (m_MMI.ptMaxSize.x > 0)
|
||||
memcpy((void *)lpMMI, &m_MMI, sizeof(MINMAXINFO));
|
||||
CDialog::OnGetMinMaxInfo(lpMMI);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
|
||||
{
|
||||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
SCROLLINFO si;
|
||||
int i;
|
||||
si.cbSize = sizeof(SCROLLINFO);
|
||||
si.fMask = SIF_ALL;
|
||||
GetScrollInfo(SB_HORZ, &si);
|
||||
|
||||
switch (nSBCode)
|
||||
{
|
||||
case SB_LINEUP:
|
||||
i = nPos - 1;
|
||||
break;
|
||||
case SB_LINEDOWN:
|
||||
i = nPos + 1;
|
||||
break;
|
||||
case SB_THUMBPOSITION:
|
||||
case SB_THUMBTRACK:
|
||||
i = si.nTrackPos;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
i = max(i, si.nMin);
|
||||
i = min(i, (int)(si.nMax - si.nPage + 1));
|
||||
|
||||
RECT rect;
|
||||
GetClientRect(&rect);
|
||||
|
||||
if ((rect.right + i) > m_lpbmi->bmiHeader.biWidth)
|
||||
i = m_lpbmi->bmiHeader.biWidth - rect.right;
|
||||
|
||||
InterlockedExchange((PLONG)&m_HScrollPos, i);
|
||||
|
||||
SetScrollPos(SB_HORZ, m_HScrollPos);
|
||||
|
||||
PostMessage(WM_PAINT);
|
||||
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::OnPaint()
|
||||
{
|
||||
CPaintDC dc(this); // device context for painting
|
||||
// TODO: 在此处添加消息处理程序代码
|
||||
// 不为绘图消息调用 CDialog::OnPaint()
|
||||
|
||||
if (m_bIsFirst)
|
||||
{
|
||||
DrawTipString("Please wait - initial screen loading");
|
||||
return;
|
||||
}
|
||||
//这里同样用我们讲过的api 不过他的作用可不仅仅是用来抓图,他还可以显示图像,
|
||||
//为什么呢? 因为抓图,显示图,都是我们的片面想法,这个api的作用就是复制
|
||||
//设备的缓冲区,将桌面设备缓冲区复制到我们的内存缓冲区,这个就是抓图,
|
||||
//将内存缓冲区复制到设备缓冲区就是显示图了。。。。。。。。
|
||||
BitBlt
|
||||
(
|
||||
m_hDC,
|
||||
0,
|
||||
0,
|
||||
m_lpbmi->bmiHeader.biWidth,
|
||||
m_lpbmi->bmiHeader.biHeight,
|
||||
m_hMemDC,
|
||||
m_HScrollPos,
|
||||
m_VScrollPos,
|
||||
SRCCOPY
|
||||
);
|
||||
|
||||
// (BYTE)-1 = 255;
|
||||
// Draw the cursor
|
||||
//这里画一下鼠标的图像
|
||||
if (m_bIsTraceCursor)
|
||||
DrawIconEx(
|
||||
m_hDC, // handle to device context
|
||||
m_RemoteCursorPos.x - ((int)m_dwCursor_xHotspot) - m_HScrollPos,
|
||||
m_RemoteCursorPos.y - ((int)m_dwCursor_yHotspot) - m_VScrollPos,
|
||||
m_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex), // handle to icon to draw
|
||||
0, 0, // width of the icon
|
||||
0, // index of frame in animated cursor
|
||||
NULL, // handle to background brush
|
||||
DI_NORMAL | DI_COMPAT // icon-drawing flags
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::DrawTipString(CString str)
|
||||
{
|
||||
RECT rect;
|
||||
GetClientRect(&rect);
|
||||
COLORREF bgcol = RGB(0x00, 0x00, 0x00);
|
||||
COLORREF oldbgcol = SetBkColor(m_hDC, bgcol);
|
||||
COLORREF oldtxtcol = SetTextColor(m_hDC, RGB(0xff, 0x00, 0x00));
|
||||
ExtTextOut(m_hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
|
||||
|
||||
DrawText(m_hDC, str, -1, &rect,
|
||||
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
|
||||
|
||||
SetBkColor(m_hDC, oldbgcol);
|
||||
SetTextColor(m_hDC, oldtxtcol);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::OnReceiveComplete(void)
|
||||
{
|
||||
m_nCount++;
|
||||
|
||||
switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0])
|
||||
{
|
||||
case TOKEN_FIRSTSCREEN:
|
||||
DrawFirstScreen(); //这里显示第一帧图像 一会转到函数定义
|
||||
break;
|
||||
case TOKEN_NEXTSCREEN:
|
||||
if (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[1] == ALGORITHM_SCAN)
|
||||
DrawNextScreenRect(); //这里是第二帧之后的数据了---
|
||||
else
|
||||
DrawNextScreenDiff(); //----当然这里有两种算法
|
||||
break; //我们能转到DrawFirstScreen函数定义
|
||||
case TOKEN_BITMAPINFO:
|
||||
ResetScreen();
|
||||
break;
|
||||
case TOKEN_CLIPBOARD_TEXT:
|
||||
UpdateLocalClipboard((char *)m_pContext->m_DeCompressionBuffer.GetBuffer(1), m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1);
|
||||
break;
|
||||
default:
|
||||
// 传输发生异常数据
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CScreenSpyDlg::DrawFirstScreen(void)
|
||||
{
|
||||
m_bIsFirst = false;
|
||||
//这里也很简单就是得到服务端发来的数据 ,将他拷贝到HBITMAP的缓冲区中,这样一个图像就出现了
|
||||
memcpy(m_lpScreenDIB, m_pContext->m_DeCompressionBuffer.GetBuffer(1), m_lpbmi->bmiHeader.biSizeImage);
|
||||
//我们到OnPaint()函数
|
||||
//OnPaint();
|
||||
PostMessage(WM_PAINT);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::DrawNextScreenDiff(void)
|
||||
{
|
||||
//这个函数也非常复杂 ,他不是直接画到屏幕上,而是更新一下变化部分的屏幕数据然后调用
|
||||
//OnPaint画上去
|
||||
// 根据鼠标是否移动和屏幕是否变化判断是否重绘鼠标,防止鼠标闪烁
|
||||
bool bIsReDraw = false;
|
||||
int nHeadLength = 1 + 1 + sizeof(POINT) + sizeof(BYTE); // 标识 + 算法 + 光标位置 + 光标类型索引
|
||||
LPVOID lpFirstScreen = m_lpScreenDIB;
|
||||
LPVOID lpNextScreen = m_pContext->m_DeCompressionBuffer.GetBuffer(nHeadLength);
|
||||
DWORD dwBytes = m_pContext->m_DeCompressionBuffer.GetBufferLen() - nHeadLength;
|
||||
|
||||
POINT oldPoint;
|
||||
memcpy(&oldPoint, &m_RemoteCursorPos, sizeof(POINT));
|
||||
memcpy(&m_RemoteCursorPos, m_pContext->m_DeCompressionBuffer.GetBuffer(2), sizeof(POINT));
|
||||
|
||||
// 鼠标移动了
|
||||
if (memcmp(&oldPoint, &m_RemoteCursorPos, sizeof(POINT)) != 0)
|
||||
bIsReDraw = true;
|
||||
|
||||
// 光标类型发生变化
|
||||
int nOldCursorIndex = m_bCursorIndex;
|
||||
m_bCursorIndex = m_pContext->m_DeCompressionBuffer.GetBuffer(10)[0];
|
||||
if (nOldCursorIndex != m_bCursorIndex)
|
||||
{
|
||||
bIsReDraw = true;
|
||||
if (m_bIsCtrl && !m_bIsTraceCursor)
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex));
|
||||
}
|
||||
|
||||
// 屏幕是否变化
|
||||
if (dwBytes > 0)
|
||||
bIsReDraw = true;
|
||||
|
||||
__asm
|
||||
{
|
||||
mov ebx, [dwBytes]
|
||||
mov esi, [lpNextScreen]
|
||||
jmp CopyEnd
|
||||
CopyNextBlock :
|
||||
mov edi, [lpFirstScreen]
|
||||
lodsd // 把lpNextScreen的第一个双字节,放到eax中,就是DIB中改变区域的偏移
|
||||
add edi, eax // lpFirstScreen偏移eax
|
||||
lodsd // 把lpNextScreen的下一个双字节,放到eax中, 就是改变区域的大小
|
||||
mov ecx, eax
|
||||
sub ebx, 8 // ebx 减去 两个dword
|
||||
sub ebx, ecx // ebx 减去DIB数据的大小
|
||||
rep movsb
|
||||
CopyEnd :
|
||||
cmp ebx, 0 // 是否写入完毕
|
||||
jnz CopyNextBlock
|
||||
}
|
||||
|
||||
if (bIsReDraw) PostMessage(WM_PAINT);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::DrawNextScreenRect(void)
|
||||
{
|
||||
//这个函数也非常复杂他将传送来的数据 得到变化的区域然后画到屏幕上
|
||||
|
||||
// 根据鼠标是否移动和鼠标是否在变化的区域判断是否重绘鼠标,防止鼠标闪烁
|
||||
bool bIsReDraw = false;
|
||||
int nHeadLength = 1 + 1 + sizeof(POINT) + sizeof(BYTE); // 标识 + 算法 + 光标位置 + 光标类型索引
|
||||
LPVOID lpFirstScreen = m_lpScreenDIB;
|
||||
LPVOID lpNextScreen = m_pContext->m_DeCompressionBuffer.GetBuffer(nHeadLength);
|
||||
DWORD dwBytes = m_pContext->m_DeCompressionBuffer.GetBufferLen() - nHeadLength;
|
||||
|
||||
|
||||
// 保存上次鼠标所在的位置
|
||||
RECT rectOldPoint;
|
||||
::SetRect(&rectOldPoint, m_RemoteCursorPos.x, m_RemoteCursorPos.y,
|
||||
m_RemoteCursorPos.x + m_dwCursor_xHotspot, m_RemoteCursorPos.y + m_dwCursor_yHotspot);
|
||||
|
||||
memcpy(&m_RemoteCursorPos, m_pContext->m_DeCompressionBuffer.GetBuffer(2), sizeof(POINT));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// 判断鼠标是否移动
|
||||
if ((rectOldPoint.left != m_RemoteCursorPos.x) || (rectOldPoint.top !=
|
||||
m_RemoteCursorPos.y))
|
||||
bIsReDraw = true;
|
||||
|
||||
// 光标类型发生变化
|
||||
int nOldCursorIndex = m_bCursorIndex;
|
||||
m_bCursorIndex = m_pContext->m_DeCompressionBuffer.GetBuffer(10)[0];
|
||||
if (nOldCursorIndex != m_bCursorIndex)
|
||||
{
|
||||
bIsReDraw = true;
|
||||
if (m_bIsCtrl && !m_bIsTraceCursor)
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex));
|
||||
}
|
||||
|
||||
// 判断鼠标所在区域是否发生变化
|
||||
DWORD dwOffset = 0;
|
||||
while (dwOffset < dwBytes && !bIsReDraw)
|
||||
{
|
||||
LPRECT lpRect = (LPRECT)((LPBYTE)lpNextScreen + dwOffset);
|
||||
RECT rectDest;
|
||||
if (IntersectRect(&rectDest, &rectOldPoint, lpRect))
|
||||
bIsReDraw = true;
|
||||
dwOffset += sizeof(RECT) + m_lpbmi_rect->bmiHeader.biSizeImage;
|
||||
}
|
||||
bIsReDraw = bIsReDraw && m_bIsTraceCursor;
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
dwOffset = 0;
|
||||
while (dwOffset < dwBytes)
|
||||
{
|
||||
LPRECT lpRect = (LPRECT)((LPBYTE)lpNextScreen + dwOffset);
|
||||
int nRectWidth = lpRect->right - lpRect->left;
|
||||
int nRectHeight = lpRect->bottom - lpRect->top;
|
||||
|
||||
m_lpbmi_rect->bmiHeader.biWidth = nRectWidth;
|
||||
m_lpbmi_rect->bmiHeader.biHeight = nRectHeight;
|
||||
m_lpbmi_rect->bmiHeader.biSizeImage = (((m_lpbmi_rect->bmiHeader.biWidth * m_lpbmi_rect->bmiHeader.biBitCount + 31) & ~31) >> 3)
|
||||
* m_lpbmi_rect->bmiHeader.biHeight;
|
||||
|
||||
StretchDIBits(m_hMemDC, lpRect->left, lpRect->top, nRectWidth,
|
||||
nRectHeight, 0, 0, nRectWidth, nRectHeight, (LPBYTE)lpNextScreen + dwOffset + sizeof(RECT),
|
||||
m_lpbmi_rect, DIB_RGB_COLORS, SRCCOPY);
|
||||
|
||||
// 不需要重绘鼠标的话,直接重绘变化的部分
|
||||
if (!bIsReDraw)
|
||||
StretchDIBits(m_hDC, lpRect->left - m_HScrollPos, lpRect->top - m_VScrollPos, nRectWidth,
|
||||
nRectHeight, 0, 0, nRectWidth, nRectHeight, (LPBYTE)lpNextScreen + dwOffset + sizeof(RECT),
|
||||
m_lpbmi_rect, DIB_RGB_COLORS, SRCCOPY);
|
||||
|
||||
dwOffset += sizeof(RECT) + m_lpbmi_rect->bmiHeader.biSizeImage;
|
||||
}
|
||||
|
||||
if (bIsReDraw) PostMessage(WM_PAINT);
|
||||
}
|
||||
|
||||
//更改屏幕分辨率
|
||||
void CScreenSpyDlg::ResetScreen(void)
|
||||
{
|
||||
UINT nBISize = m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1;
|
||||
if (m_lpbmi != NULL)
|
||||
{
|
||||
int nOldWidth = m_lpbmi->bmiHeader.biWidth;
|
||||
int nOldHeight = m_lpbmi->bmiHeader.biHeight;
|
||||
|
||||
delete[] m_lpbmi;
|
||||
delete[] m_lpbmi_rect;
|
||||
|
||||
m_lpbmi = (BITMAPINFO *) new BYTE[nBISize];
|
||||
m_lpbmi_rect = (BITMAPINFO *) new BYTE[nBISize];
|
||||
|
||||
memcpy(m_lpbmi, m_pContext->m_DeCompressionBuffer.GetBuffer(1), nBISize);
|
||||
memcpy(m_lpbmi_rect, m_pContext->m_DeCompressionBuffer.GetBuffer(1), nBISize);
|
||||
|
||||
DeleteObject(m_hFullBitmap);
|
||||
m_hFullBitmap = CreateDIBSection(m_hDC, m_lpbmi, DIB_RGB_COLORS, &m_lpScreenDIB, NULL, NULL);
|
||||
SelectObject(m_hMemDC, m_hFullBitmap);
|
||||
|
||||
memset(&m_MMI, 0, sizeof(MINMAXINFO));
|
||||
InitMMI();
|
||||
|
||||
// 分辨率发生改变
|
||||
if (nOldWidth != m_lpbmi->bmiHeader.biWidth || nOldHeight != m_lpbmi->bmiHeader.biHeight)
|
||||
{
|
||||
RECT rectClient, rectWindow;
|
||||
GetWindowRect(&rectWindow);
|
||||
GetClientRect(&rectClient);
|
||||
ClientToScreen(&rectClient);
|
||||
|
||||
// 计算ClientRect与WindowRect的差距(标题栏,滚动条)
|
||||
rectWindow.right = m_lpbmi->bmiHeader.biWidth + rectClient.left + (rectWindow.right - rectClient.right);
|
||||
rectWindow.bottom = m_lpbmi->bmiHeader.biHeight + rectClient.top + (rectWindow.bottom - rectClient.bottom);
|
||||
MoveWindow(&rectWindow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CScreenSpyDlg::UpdateLocalClipboard(char *buf, int len)
|
||||
{
|
||||
if (!::OpenClipboard(NULL))
|
||||
return;
|
||||
|
||||
::EmptyClipboard();
|
||||
HGLOBAL hglbCopy = GlobalAlloc(GPTR, len);
|
||||
if (hglbCopy != NULL) {
|
||||
// Lock the handle and copy the text to the buffer.
|
||||
LPTSTR lptstrCopy = (LPTSTR)GlobalLock(hglbCopy);
|
||||
memcpy(lptstrCopy, buf, len);
|
||||
GlobalUnlock(hglbCopy); // Place the handle on the clipboard.
|
||||
SetClipboardData(CF_TEXT, hglbCopy);
|
||||
GlobalFree(hglbCopy);
|
||||
}
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
#define MAKEDWORD(h,l) (((unsigned long)h << 16) | l)
|
||||
|
||||
//用来截获消息的。我们可以通过重载它来处理键盘和鼠标消息。
|
||||
BOOL CScreenSpyDlg::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
// TODO: 在此添加专用代码和/或调用基类
|
||||
|
||||
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
|
||||
switch (pMsg->message)
|
||||
{
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_LBUTTONUP:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_RBUTTONUP:
|
||||
case WM_MOUSEMOVE:
|
||||
case WM_LBUTTONDBLCLK:
|
||||
case WM_RBUTTONDBLCLK:
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_MBUTTONUP:
|
||||
case WM_MOUSEWHEEL:
|
||||
{
|
||||
MSG msg;
|
||||
memcpy(&msg, pMsg, sizeof(MSG));
|
||||
msg.lParam = MAKEDWORD(HIWORD(pMsg->lParam) + m_VScrollPos, LOWORD(pMsg->lParam) + m_HScrollPos);
|
||||
msg.pt.x += m_HScrollPos;
|
||||
msg.pt.y += m_VScrollPos;
|
||||
SendCommand(&msg);
|
||||
}
|
||||
break;
|
||||
case WM_KEYDOWN:
|
||||
case WM_KEYUP:
|
||||
case WM_SYSKEYDOWN:
|
||||
case WM_SYSKEYUP:
|
||||
if (pMsg->wParam != VK_LWIN && pMsg->wParam != VK_RWIN)
|
||||
{
|
||||
MSG msg;
|
||||
memcpy(&msg, pMsg, sizeof(MSG));
|
||||
msg.lParam = MAKEDWORD(HIWORD(pMsg->lParam) + m_VScrollPos, LOWORD(pMsg->lParam) + m_HScrollPos);
|
||||
msg.pt.x += m_HScrollPos;
|
||||
msg.pt.y += m_VScrollPos;
|
||||
SendCommand(&msg);
|
||||
}
|
||||
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return CDialog::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::SendCommand(MSG* pMsg)
|
||||
{
|
||||
if (!m_bIsCtrl)
|
||||
return;
|
||||
|
||||
LPBYTE lpData = new BYTE[sizeof(MSG) + 1];
|
||||
lpData[0] = COMMAND_SCREEN_CONTROL;
|
||||
memcpy(lpData + 1, pMsg, sizeof(MSG));
|
||||
m_iocpServer->Send(m_pContext, lpData, sizeof(MSG) + 1);
|
||||
|
||||
delete[] lpData;
|
||||
}
|
||||
|
||||
void CScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
||||
{
|
||||
// TODO: 在此添加消息处理程序代码和/或调用默认值
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
switch (nID)
|
||||
{
|
||||
case IDM_CONTROL:
|
||||
{
|
||||
m_bIsCtrl = !m_bIsCtrl;
|
||||
pSysMenu->CheckMenuItem(IDM_CONTROL, m_bIsCtrl ? MF_CHECKED : MF_UNCHECKED);
|
||||
|
||||
if (m_bIsCtrl)
|
||||
{
|
||||
if (m_bIsTraceCursor)
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)AfxGetApp()->LoadCursor(IDC_DOT));
|
||||
else
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_hRemoteCursor);
|
||||
}
|
||||
else
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_NO));
|
||||
}
|
||||
break;
|
||||
case IDM_SEND_CTRL_ALT_DEL:
|
||||
{
|
||||
BYTE bToken = COMMAND_SCREEN_CTRL_ALT_DEL;
|
||||
m_iocpServer->Send(m_pContext, &bToken, sizeof(bToken));
|
||||
}
|
||||
break;
|
||||
case IDM_TRACE_CURSOR: // 跟踪服务端鼠标
|
||||
{
|
||||
m_bIsTraceCursor = !m_bIsTraceCursor;
|
||||
pSysMenu->CheckMenuItem(IDM_TRACE_CURSOR, m_bIsTraceCursor ? MF_CHECKED : MF_UNCHECKED);
|
||||
if (m_bIsCtrl)
|
||||
{
|
||||
if (!m_bIsTraceCursor)
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_hRemoteCursor);
|
||||
else
|
||||
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)AfxGetApp()->LoadCursor(IDC_DOT));
|
||||
}
|
||||
// 重绘消除或显示鼠标
|
||||
OnPaint();
|
||||
}
|
||||
break;
|
||||
case IDM_BLOCK_INPUT: // 锁定服务端鼠标和键盘
|
||||
{
|
||||
bool bIsChecked = pSysMenu->GetMenuState(IDM_BLOCK_INPUT, MF_BYCOMMAND) & MF_CHECKED;
|
||||
pSysMenu->CheckMenuItem(IDM_BLOCK_INPUT, bIsChecked ? MF_UNCHECKED : MF_CHECKED);
|
||||
|
||||
BYTE bToken[2];
|
||||
bToken[0] = COMMAND_SCREEN_BLOCK_INPUT;
|
||||
bToken[1] = !bIsChecked;
|
||||
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
|
||||
}
|
||||
break;
|
||||
case IDM_BLANK_SCREEN: // 服务端黑屏
|
||||
{
|
||||
bool bIsChecked = pSysMenu->GetMenuState(IDM_BLANK_SCREEN, MF_BYCOMMAND) & MF_CHECKED;
|
||||
pSysMenu->CheckMenuItem(IDM_BLANK_SCREEN, bIsChecked ? MF_UNCHECKED : MF_CHECKED);
|
||||
|
||||
BYTE bToken[2];
|
||||
bToken[0] = COMMAND_SCREEN_BLANK;
|
||||
bToken[1] = !bIsChecked;
|
||||
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
|
||||
}
|
||||
break;
|
||||
case IDM_CAPTURE_LAYER: // 捕捉层
|
||||
{
|
||||
bool bIsChecked = pSysMenu->GetMenuState(IDM_CAPTURE_LAYER, MF_BYCOMMAND) & MF_CHECKED;
|
||||
pSysMenu->CheckMenuItem(IDM_CAPTURE_LAYER, bIsChecked ? MF_UNCHECKED : MF_CHECKED);
|
||||
|
||||
BYTE bToken[2];
|
||||
bToken[0] = COMMAND_SCREEN_CAPTURE_LAYER;
|
||||
bToken[1] = !bIsChecked;
|
||||
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
|
||||
}
|
||||
break;
|
||||
case IDM_SAVEDIB:
|
||||
SaveSnapshot();
|
||||
break;
|
||||
case IDM_GET_CLIPBOARD: // 获取剪贴板
|
||||
{
|
||||
BYTE bToken = COMMAND_SCREEN_GET_CLIPBOARD;
|
||||
m_iocpServer->Send(m_pContext, &bToken, sizeof(bToken));
|
||||
}
|
||||
break;
|
||||
case IDM_SET_CLIPBOARD: // 设置剪贴板
|
||||
{
|
||||
SendLocalClipboard();
|
||||
}
|
||||
break;
|
||||
case IDM_ALGORITHM_SCAN: // 隔行扫描算法
|
||||
{
|
||||
SendResetAlgorithm(ALGORITHM_SCAN);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_ALGORITHM_SCAN, IDM_ALGORITHM_DIFF, IDM_ALGORITHM_SCAN, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_ALGORITHM_DIFF: // 差异比较算法
|
||||
{
|
||||
SendResetAlgorithm(ALGORITHM_DIFF);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_ALGORITHM_SCAN, IDM_ALGORITHM_DIFF, IDM_ALGORITHM_DIFF, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_1:
|
||||
{
|
||||
SendResetScreen(1);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_1, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_4_GRAY:
|
||||
{
|
||||
SendResetScreen(3);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_4_GRAY, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_4_COLOR:
|
||||
{
|
||||
SendResetScreen(4);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_4_COLOR, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_8_GRAY:
|
||||
{
|
||||
SendResetScreen(7);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_8_GRAY, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_8_COLOR:
|
||||
{
|
||||
SendResetScreen(8);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_8_COLOR, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_16:
|
||||
{
|
||||
SendResetScreen(16);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_1, IDM_DEEP_32, IDM_DEEP_16, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
case IDM_DEEP_32:
|
||||
{
|
||||
SendResetScreen(32);
|
||||
pSysMenu->CheckMenuRadioItem(IDM_DEEP_4_GRAY, IDM_DEEP_32, IDM_DEEP_32, MF_BYCOMMAND);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
CDialog::OnSysCommand(nID, lParam);
|
||||
}
|
||||
CDialog::OnSysCommand(nID, lParam);
|
||||
}
|
||||
|
||||
|
||||
bool CScreenSpyDlg::SaveSnapshot(void)
|
||||
{
|
||||
CString strFileName = m_IPAddress + CTime::GetCurrentTime().Format("_%Y-%m-%d_%H-%M-%S.bmp");
|
||||
CFileDialog dlg(FALSE, "bmp", strFileName, OFN_OVERWRITEPROMPT, "位图文件(*.bmp)|*.bmp|", this);
|
||||
if (dlg.DoModal() != IDOK)
|
||||
return false;
|
||||
|
||||
BITMAPFILEHEADER hdr;
|
||||
LPBITMAPINFO lpbi = m_lpbmi;
|
||||
CFile file;
|
||||
if (!file.Open(dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate))
|
||||
{
|
||||
MessageBox("文件保存失败");
|
||||
return false;
|
||||
}
|
||||
|
||||
// BITMAPINFO大小
|
||||
int nbmiSize = sizeof(BITMAPINFOHEADER) + (lpbi->bmiHeader.biBitCount > 16 ? 1 : (1 << lpbi->bmiHeader.biBitCount)) * sizeof(RGBQUAD);
|
||||
|
||||
// Fill in the fields of the file header
|
||||
hdr.bfType = ((WORD)('M' << 8) | 'B'); // is always "BM"
|
||||
hdr.bfSize = lpbi->bmiHeader.biSizeImage + sizeof(hdr);
|
||||
hdr.bfReserved1 = 0;
|
||||
hdr.bfReserved2 = 0;
|
||||
hdr.bfOffBits = sizeof(hdr) + nbmiSize;
|
||||
// Write the file header
|
||||
file.Write(&hdr, sizeof(hdr));
|
||||
file.Write(lpbi, nbmiSize);
|
||||
// Write the DIB header and the bits
|
||||
file.Write(m_lpScreenDIB, lpbi->bmiHeader.biSizeImage);
|
||||
file.Close();
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
void CScreenSpyDlg::SendLocalClipboard(void)
|
||||
{
|
||||
if (!::OpenClipboard(NULL))
|
||||
return;
|
||||
HGLOBAL hglb = GetClipboardData(CF_TEXT);
|
||||
if (hglb == NULL)
|
||||
{
|
||||
::CloseClipboard();
|
||||
return;
|
||||
}
|
||||
int nPacketLen = GlobalSize(hglb) + 1;
|
||||
LPSTR lpstr = (LPSTR)GlobalLock(hglb);
|
||||
LPBYTE lpData = new BYTE[nPacketLen];
|
||||
lpData[0] = COMMAND_SCREEN_SET_CLIPBOARD;
|
||||
memcpy(lpData + 1, lpstr, nPacketLen - 1);
|
||||
::GlobalUnlock(hglb);
|
||||
::CloseClipboard();
|
||||
m_iocpServer->Send(m_pContext, lpData, nPacketLen);
|
||||
delete[] lpData;
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::SendResetAlgorithm(UINT nAlgorithm)
|
||||
{
|
||||
BYTE bBuff[2];
|
||||
bBuff[0] = COMMAND_ALGORITHM_RESET;
|
||||
bBuff[1] = nAlgorithm;
|
||||
m_iocpServer->Send(m_pContext, bBuff, sizeof(bBuff));
|
||||
}
|
||||
|
||||
|
||||
void CScreenSpyDlg::SendResetScreen(int nBitCount)
|
||||
{
|
||||
|
||||
m_nBitCount = nBitCount;
|
||||
|
||||
BYTE bBuff[2];
|
||||
bBuff[0] = COMMAND_SCREEN_RESET;
|
||||
bBuff[1] = m_nBitCount;
|
||||
m_iocpServer->Send(m_pContext, bBuff, sizeof(bBuff));
|
||||
}
|
72
CcRemote/CcRemote/CScreenSpyDlg.h
Normal file
72
CcRemote/CcRemote/CScreenSpyDlg.h
Normal file
@@ -0,0 +1,72 @@
|
||||
#pragma once
|
||||
|
||||
#include "include/IOCPServer.h"
|
||||
#include "..\..\common\CursorInfo.h"
|
||||
// CScreenSpyDlg 对话框
|
||||
|
||||
class CScreenSpyDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CScreenSpyDlg)
|
||||
|
||||
public:
|
||||
CScreenSpyDlg(CWnd* pParent = NULL, CIOCPServer* pIOCPServer = NULL, ClientContext *pContext = NULL); // 标准构造函数
|
||||
virtual ~CScreenSpyDlg();
|
||||
|
||||
// 对话框数据
|
||||
#ifdef AFX_DESIGN_TIME
|
||||
enum { IDD = IDD_SCREENSPY };
|
||||
#endif
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
private:
|
||||
int m_nBitCount;
|
||||
bool m_bIsFirst;
|
||||
bool m_bIsTraceCursor;
|
||||
ClientContext* m_pContext;
|
||||
CIOCPServer* m_iocpServer;
|
||||
CString m_IPAddress;
|
||||
HICON m_hIcon;
|
||||
MINMAXINFO m_MMI;
|
||||
HDC m_hDC, m_hMemDC, m_hPaintDC;
|
||||
HBITMAP m_hFullBitmap;
|
||||
LPVOID m_lpScreenDIB;
|
||||
LPBITMAPINFO m_lpbmi, m_lpbmi_rect;
|
||||
UINT m_nCount;
|
||||
UINT m_HScrollPos, m_VScrollPos;
|
||||
HCURSOR m_hRemoteCursor;
|
||||
DWORD m_dwCursor_xHotspot, m_dwCursor_yHotspot;
|
||||
POINT m_RemoteCursorPos;
|
||||
BYTE m_bCursorIndex;
|
||||
CCursorInfo m_CursorInfo;
|
||||
bool m_bIsCtrl;
|
||||
public:
|
||||
afx_msg void OnClose();
|
||||
virtual BOOL OnInitDialog();
|
||||
|
||||
void InitMMI(void);
|
||||
void SendNext(void);
|
||||
afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
|
||||
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
|
||||
afx_msg void OnPaint();
|
||||
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
private:
|
||||
void DrawTipString(CString str);
|
||||
void UpdateLocalClipboard(char *buf, int len);
|
||||
void SendLocalClipboard(void);
|
||||
public:
|
||||
void OnReceiveComplete(void);
|
||||
void DrawFirstScreen(void);
|
||||
void DrawNextScreenDiff(void);
|
||||
void DrawNextScreenRect(void);
|
||||
void ResetScreen(void);
|
||||
void SendCommand(MSG* pMsg);
|
||||
bool SaveSnapshot(void);
|
||||
void SendResetAlgorithm(UINT nAlgorithm);
|
||||
void SendResetScreen(int nBitCount);
|
||||
|
||||
};
|
@@ -15,9 +15,13 @@ IMPLEMENT_DYNAMIC(CSystemDlg, CDialog)
|
||||
CSystemDlg::CSystemDlg(CWnd* pParent /*=nullptr*/, CIOCPServer* pIOCPServer, ClientContext *pContext)
|
||||
: CDialog(IDD_SYSTEM, pParent)
|
||||
{
|
||||
m_iocpServer = pIOCPServer; //就是一个赋值没什么特别的我们到oninitdialog
|
||||
m_iocpServer = pIOCPServer; //参数赋值给成员变量
|
||||
m_pContext = pContext;
|
||||
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SYSTEM));
|
||||
//这里判断是窗口管理还是进程管理因为进程管理的数据头是TOKEN_PSLIST
|
||||
//窗口管理的数据头TOKEN_WSLIST 我们可以用这两个数据头来区分
|
||||
char *lpBuffer = (char *)(m_pContext->m_DeCompressionBuffer.GetBuffer(0));
|
||||
m_caseSyetemIs = lpBuffer[0];
|
||||
}
|
||||
|
||||
CSystemDlg::~CSystemDlg()
|
||||
@@ -27,19 +31,22 @@ CSystemDlg::~CSystemDlg()
|
||||
void CSystemDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_TAB, m_tab);
|
||||
DDX_Control(pDX, IDC_LIST_WINDOWS, m_list_windows);
|
||||
DDX_Control(pDX, IDC_LIST_PROCESS, m_list_process);
|
||||
DDX_Control(pDX, IDC_LIST_PROCESS_OR_WINDOW, m_list_process_or_windows);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSystemDlg, CDialog)
|
||||
ON_WM_SIZE()
|
||||
ON_WM_CLOSE()
|
||||
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &CSystemDlg::OnTcnSelchangeTab)
|
||||
ON_COMMAND(IDM_KILLPROCESS, &CSystemDlg::OnKillprocess)
|
||||
ON_COMMAND(IDM_REFRESHPSLIST, &CSystemDlg::OnRefreshpslist)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_LIST_PROCESS, &CSystemDlg::OnNMRClickListProcess)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_LIST_PROCESS_OR_WINDOW, &CSystemDlg::OnNMRClickListProcess)
|
||||
ON_COMMAND(ID_WINDOW_CLOST, &CSystemDlg::OnWindowClost)
|
||||
ON_COMMAND(ID_WINDOW_HIDE, &CSystemDlg::OnWindowHide)
|
||||
ON_COMMAND(ID_WINDOW_MAX, &CSystemDlg::OnWindowMax)
|
||||
ON_COMMAND(ID_WINDOW_MIN, &CSystemDlg::OnWindowMin)
|
||||
ON_COMMAND(ID_WINDOW_RETURN, &CSystemDlg::OnWindowReturn)
|
||||
ON_COMMAND(ID_WINDOW_REFLUSH, &CSystemDlg::OnWindowReflush)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
@@ -47,24 +54,20 @@ END_MESSAGE_MAP()
|
||||
|
||||
void CSystemDlg::AdjustList(void)
|
||||
{
|
||||
if (m_list_process.m_hWnd == NULL)
|
||||
if (m_list_process_or_windows.m_hWnd == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (m_list_windows.m_hWnd == NULL)
|
||||
{
|
||||
return;
|
||||
RECT rectClient;
|
||||
RECT rectList;
|
||||
GetClientRect(&rectClient);
|
||||
rectList.left = 0;
|
||||
rectList.top = 29;
|
||||
rectList.right = rectClient.right;
|
||||
rectList.bottom = rectClient.bottom;
|
||||
RECT rectClient;
|
||||
RECT rectList;
|
||||
GetClientRect(&rectClient);
|
||||
rectList.left = 0;
|
||||
rectList.top = 0;
|
||||
rectList.right = rectClient.right;
|
||||
rectList.bottom = rectClient.bottom;
|
||||
|
||||
m_list_process.MoveWindow(&rectList);
|
||||
m_list_windows.MoveWindow(&rectList);
|
||||
}
|
||||
m_list_process_or_windows.MoveWindow(&rectList);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -84,33 +87,6 @@ void CSystemDlg::OnClose()
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
ShowSelectWindow();
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CSystemDlg::ShowSelectWindow(void)
|
||||
{
|
||||
switch (m_tab.GetCurSel())
|
||||
{
|
||||
case 0:
|
||||
m_list_windows.ShowWindow(SW_HIDE);
|
||||
m_list_process.ShowWindow(SW_SHOW);
|
||||
if (m_list_process.GetItemCount() == 0)
|
||||
GetProcessList();
|
||||
break;
|
||||
case 1:
|
||||
m_list_windows.ShowWindow(SW_SHOW);
|
||||
m_list_process.ShowWindow(SW_HIDE);
|
||||
if (m_list_windows.GetItemCount() == 0)
|
||||
//GetWindowsList();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::GetProcessList(void)
|
||||
@@ -139,23 +115,23 @@ BOOL CSystemDlg::OnInitDialog()
|
||||
SetWindowText(str);//设置对话框标题
|
||||
|
||||
|
||||
m_tab.InsertItem(0, "进程管理"); //为tab设置标题
|
||||
m_tab.InsertItem(1, "窗口管理");
|
||||
m_tab.InsertItem(2, "拨号密码");
|
||||
|
||||
m_list_process.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化进程的列表
|
||||
m_list_process.InsertColumn(0, "映像名称", LVCFMT_LEFT, 100);
|
||||
m_list_process.InsertColumn(1, "PID", LVCFMT_LEFT, 50);
|
||||
m_list_process.InsertColumn(2, "程序路径", LVCFMT_LEFT, 400);
|
||||
|
||||
m_list_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化 窗口管理的列表
|
||||
m_list_windows.InsertColumn(0, "PID", LVCFMT_LEFT, 50);
|
||||
m_list_windows.InsertColumn(1, "窗口名称", LVCFMT_LEFT, 300);
|
||||
|
||||
|
||||
if (m_caseSyetemIs == TOKEN_PSLIST) //进程管理初始化列表
|
||||
{
|
||||
m_list_process_or_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化进程的列表
|
||||
m_list_process_or_windows.InsertColumn(0, "映像名称", LVCFMT_LEFT, 100);
|
||||
m_list_process_or_windows.InsertColumn(1, "PID", LVCFMT_LEFT, 50);
|
||||
m_list_process_or_windows.InsertColumn(2, "程序路径", LVCFMT_LEFT, 400);
|
||||
ShowProcessList(); //由于第一个发送来的消息后面紧跟着进程的数据所以把数据显示到列表当中
|
||||
}
|
||||
else if (m_caseSyetemIs == TOKEN_WSLIST)//窗口管理初始化列表
|
||||
{
|
||||
m_list_process_or_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化 窗口管理的列表
|
||||
m_list_process_or_windows.InsertColumn(0, "PID", LVCFMT_LEFT, 50);
|
||||
m_list_process_or_windows.InsertColumn(1, "窗口名称", LVCFMT_LEFT, 300);
|
||||
m_list_process_or_windows.InsertColumn(2, "窗口状态", LVCFMT_LEFT, 300);
|
||||
ShowWindowsList();
|
||||
}
|
||||
AdjustList(); //各个列表的大小
|
||||
ShowProcessList(); //由于第一个发送来的消息后面紧跟着进程的数据所以把数据显示到列表当中
|
||||
ShowSelectWindow(); //显示列表
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 异常: OCX 属性页应返回 FALSE
|
||||
}
|
||||
@@ -168,7 +144,7 @@ void CSystemDlg::ShowProcessList(void)
|
||||
char *strProcessName;
|
||||
DWORD dwOffset = 0;
|
||||
CString str;
|
||||
m_list_process.DeleteAllItems();
|
||||
m_list_process_or_windows.DeleteAllItems();
|
||||
//遍历发送来的每一个字符 数据结构 Id+进程名+0+完整名+0
|
||||
int i;
|
||||
for (i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
|
||||
@@ -178,12 +154,12 @@ void CSystemDlg::ShowProcessList(void)
|
||||
strProcessName = strExeFile + lstrlen(strExeFile) + 1; //完整名就是进程名之后的
|
||||
//数据结构构建巧妙
|
||||
|
||||
m_list_process.InsertItem(i, strExeFile); //将得到的数据加入到列表当中
|
||||
m_list_process_or_windows.InsertItem(i, strExeFile); //将得到的数据加入到列表当中
|
||||
str.Format("%5u", *lpPID);
|
||||
m_list_process.SetItemText(i, 1, str);
|
||||
m_list_process.SetItemText(i, 2, strProcessName);
|
||||
m_list_process_or_windows.SetItemText(i, 1, str);
|
||||
m_list_process_or_windows.SetItemText(i, 2, strProcessName);
|
||||
// ItemData 为进程ID
|
||||
m_list_process.SetItemData(i, *lpPID);
|
||||
m_list_process_or_windows.SetItemData(i, *lpPID);
|
||||
|
||||
dwOffset += sizeof(DWORD) + lstrlen(strExeFile) + lstrlen(strProcessName) + 2; //跳过这个数据结构 进入下一个循环
|
||||
}
|
||||
@@ -193,7 +169,7 @@ void CSystemDlg::ShowProcessList(void)
|
||||
lvc.mask = LVCF_TEXT;
|
||||
lvc.pszText = str.GetBuffer(0);
|
||||
lvc.cchTextMax = str.GetLength();
|
||||
m_list_process.SetColumn(2, &lvc); //在列表中显示有多少个进程
|
||||
m_list_process_or_windows.SetColumn(2, &lvc); //在列表中显示有多少个进程
|
||||
}
|
||||
|
||||
|
||||
@@ -201,10 +177,10 @@ void CSystemDlg::OnKillprocess()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
CListCtrl *pListCtrl = NULL;
|
||||
if (m_list_process.IsWindowVisible())
|
||||
pListCtrl = &m_list_process;
|
||||
else if (m_list_windows.IsWindowVisible())
|
||||
pListCtrl = &m_list_windows;
|
||||
if (m_list_process_or_windows.IsWindowVisible())
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
else if (m_list_process_or_windows.IsWindowVisible())
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
else
|
||||
return;
|
||||
|
||||
@@ -244,11 +220,57 @@ void CSystemDlg::OnKillprocess()
|
||||
LocalFree(lpBuffer);
|
||||
}
|
||||
|
||||
void CSystemDlg::ShowWindowsList(void)
|
||||
{
|
||||
LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
|
||||
DWORD dwOffset = 0;
|
||||
char *lpTitle = NULL;
|
||||
//m_list_process.DeleteAllItems();
|
||||
bool isDel = false;
|
||||
do
|
||||
{
|
||||
isDel = false;
|
||||
for (int j = 0; j < m_list_process_or_windows.GetItemCount(); j++)
|
||||
{
|
||||
CString temp = m_list_process_or_windows.GetItemText(j, 2);
|
||||
CString restr = "隐藏";
|
||||
if (temp != restr)
|
||||
{
|
||||
m_list_process_or_windows.DeleteItem(j);
|
||||
isDel = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} while (isDel);
|
||||
CString str;
|
||||
int i;
|
||||
for (i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
|
||||
{
|
||||
LPDWORD lpPID = LPDWORD(lpBuffer + dwOffset);
|
||||
lpTitle = (char *)lpBuffer + dwOffset + sizeof(DWORD);
|
||||
str.Format("%5u", *lpPID);
|
||||
m_list_process_or_windows.InsertItem(i, str);
|
||||
m_list_process_or_windows.SetItemText(i, 1, lpTitle);
|
||||
m_list_process_or_windows.SetItemText(i, 2, "显示"); //(d) 将窗口状态显示为 "显示"
|
||||
// ItemData 为窗口句柄
|
||||
m_list_process_or_windows.SetItemData(i, *lpPID); //(d)
|
||||
dwOffset += sizeof(DWORD) + lstrlen(lpTitle) + 1;
|
||||
}
|
||||
str.Format("窗口名称 / %d", i);
|
||||
LVCOLUMN lvc;
|
||||
lvc.mask = LVCF_TEXT;
|
||||
lvc.pszText = str.GetBuffer(0);
|
||||
lvc.cchTextMax = str.GetLength();
|
||||
m_list_process_or_windows.SetColumn(1, &lvc);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::OnRefreshpslist()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
if (m_list_process.IsWindowVisible())
|
||||
if (m_list_process_or_windows.IsWindowVisible())
|
||||
GetProcessList();
|
||||
//if (m_list_windows.IsWindowVisible())
|
||||
//GetWindowsList();
|
||||
@@ -260,7 +282,14 @@ void CSystemDlg::OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
||||
// TODO: 在此添加控件通知处理程序代码
|
||||
CMenu popup;
|
||||
popup.LoadMenu(IDR_PSLIST);
|
||||
if (m_caseSyetemIs == TOKEN_PSLIST) //进程管理初始化列表
|
||||
{
|
||||
popup.LoadMenu(IDR_PSLIST);
|
||||
}
|
||||
else if (m_caseSyetemIs == TOKEN_WSLIST)
|
||||
{
|
||||
popup.LoadMenu(IDR_WINDOW_LIST);
|
||||
}
|
||||
CMenu* pM = popup.GetSubMenu(0);
|
||||
CPoint p;
|
||||
GetCursorPos(&p);
|
||||
@@ -277,9 +306,9 @@ void CSystemDlg::OnReceiveComplete(void)
|
||||
case TOKEN_PSLIST:
|
||||
ShowProcessList();
|
||||
break;
|
||||
//case TOKEN_WSLIST:
|
||||
//ShowWindowsList();
|
||||
//break;
|
||||
case TOKEN_WSLIST:
|
||||
ShowWindowsList();
|
||||
break;
|
||||
//case TOKEN_DIALUPASS:
|
||||
//ShowDialupassList();
|
||||
//break;
|
||||
@@ -289,3 +318,130 @@ void CSystemDlg::OnReceiveComplete(void)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CSystemDlg::OnWindowClost()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE lpMsgBuf[20];
|
||||
CListCtrl *pListCtrl = NULL;
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
|
||||
int nItem = pListCtrl->GetSelectionMark();
|
||||
if (nItem >= 0)
|
||||
{
|
||||
ZeroMemory(lpMsgBuf, 20);
|
||||
lpMsgBuf[0] = COMMAND_WINDOW_CLOSE; //注意这个就是我们的数据头
|
||||
DWORD hwnd = pListCtrl->GetItemData(nItem); //得到窗口的句柄一同发送
|
||||
memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD));
|
||||
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::OnWindowHide()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE lpMsgBuf[20];
|
||||
CListCtrl *pListCtrl = NULL;
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
|
||||
int nItem = pListCtrl->GetSelectionMark();
|
||||
if (nItem >= 0)
|
||||
{
|
||||
ZeroMemory(lpMsgBuf, 20);
|
||||
lpMsgBuf[0] = COMMAND_WINDOW_TEST; //窗口处理数据头
|
||||
DWORD hwnd = pListCtrl->GetItemData(nItem); //得到窗口的句柄一同发送
|
||||
pListCtrl->SetItemText(nItem, 2, "隐藏"); //注意这时将列表中的显示状态为"隐藏"
|
||||
//这样在删除列表条目时就不删除该项了 如果删除该项窗口句柄会丢失 就永远也不能显示了
|
||||
memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); //得到窗口的句柄一同发送
|
||||
DWORD dHow = SW_HIDE; //窗口处理参数 0
|
||||
memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD));
|
||||
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
|
||||
}
|
||||
}
|
||||
|
||||
void CSystemDlg::OnWindowMax()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE lpMsgBuf[20];
|
||||
CListCtrl *pListCtrl = NULL;
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
|
||||
int nItem = pListCtrl->GetSelectionMark();
|
||||
if (nItem >= 0)
|
||||
{
|
||||
ZeroMemory(lpMsgBuf, 20);
|
||||
lpMsgBuf[0] = COMMAND_WINDOW_TEST; //同上
|
||||
DWORD hwnd = pListCtrl->GetItemData(nItem); //同上
|
||||
pListCtrl->SetItemText(nItem, 2, "显示"); //将状态改为显示
|
||||
memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD));
|
||||
DWORD dHow = SW_MAXIMIZE; //同上
|
||||
memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD));
|
||||
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
|
||||
|
||||
}
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::OnWindowMin()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE lpMsgBuf[20];
|
||||
CListCtrl *pListCtrl = NULL;
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
|
||||
int nItem = pListCtrl->GetSelectionMark();
|
||||
if (nItem >= 0)
|
||||
{
|
||||
ZeroMemory(lpMsgBuf, 20);
|
||||
lpMsgBuf[0] = COMMAND_WINDOW_TEST;
|
||||
DWORD hwnd = pListCtrl->GetItemData(nItem);
|
||||
pListCtrl->SetItemText(nItem, 2, "显示");
|
||||
memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD));
|
||||
DWORD dHow = SW_MINIMIZE;
|
||||
memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD));
|
||||
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::OnWindowReturn()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE lpMsgBuf[20];
|
||||
CListCtrl *pListCtrl = NULL;
|
||||
pListCtrl = &m_list_process_or_windows;
|
||||
|
||||
int nItem = pListCtrl->GetSelectionMark();
|
||||
if (nItem >= 0)
|
||||
{
|
||||
ZeroMemory(lpMsgBuf, 20);
|
||||
lpMsgBuf[0] = COMMAND_WINDOW_TEST;
|
||||
DWORD hwnd = pListCtrl->GetItemData(nItem);
|
||||
pListCtrl->SetItemText(nItem, 2, "显示");
|
||||
memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD));
|
||||
DWORD dHow = SW_RESTORE;
|
||||
memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD));
|
||||
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::OnWindowReflush()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
GetWindowsList();
|
||||
}
|
||||
|
||||
|
||||
void CSystemDlg::GetWindowsList(void)
|
||||
{
|
||||
BYTE bToken = COMMAND_WSLIST;
|
||||
m_iocpServer->Send(m_pContext, &bToken, 1);
|
||||
}
|
||||
|
@@ -21,29 +21,34 @@ protected:
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
CTabCtrl m_tab;
|
||||
CListCtrl m_list_windows;
|
||||
CListCtrl m_list_process;
|
||||
CListCtrl m_list_process_or_windows;
|
||||
private:
|
||||
HICON m_hIcon;
|
||||
ClientContext* m_pContext;
|
||||
CIOCPServer* m_iocpServer;
|
||||
|
||||
BYTE m_caseSyetemIs; //用来区分窗口管理和进程管理
|
||||
private:
|
||||
void AdjustList(void);
|
||||
void ShowSelectWindow(void);
|
||||
void GetProcessList(void);
|
||||
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
virtual BOOL OnInitDialog();
|
||||
void ShowProcessList(void);
|
||||
afx_msg void OnKillprocess();
|
||||
afx_msg void OnRefreshpslist();
|
||||
afx_msg void OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnWindowClost();
|
||||
afx_msg void OnWindowHide();
|
||||
afx_msg void OnWindowMax();
|
||||
afx_msg void OnWindowMin();
|
||||
afx_msg void OnWindowReturn();
|
||||
afx_msg void OnWindowReflush();
|
||||
|
||||
void GetWindowsList(void);
|
||||
void OnReceiveComplete(void);
|
||||
void ShowProcessList(void);
|
||||
void ShowWindowsList(void);
|
||||
};
|
||||
|
Binary file not shown.
@@ -96,6 +96,7 @@
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -204,6 +205,7 @@
|
||||
<ClInclude Include="..\..\common\macros.h" />
|
||||
<ClInclude Include="CcRemote.h" />
|
||||
<ClInclude Include="CcRemoteDlg.h" />
|
||||
<ClInclude Include="CScreenSpyDlg.h" />
|
||||
<ClInclude Include="CSettingDlg.h" />
|
||||
<ClInclude Include="CShellDlg.h" />
|
||||
<ClInclude Include="CSystemDlg.h" />
|
||||
@@ -223,6 +225,7 @@
|
||||
<ItemGroup>
|
||||
<ClCompile Include="CcRemote.cpp" />
|
||||
<ClCompile Include="CcRemoteDlg.cpp" />
|
||||
<ClCompile Include="CScreenSpyDlg.cpp" />
|
||||
<ClCompile Include="CSettingDlg.cpp" />
|
||||
<ClCompile Include="CShellDlg.cpp" />
|
||||
<ClCompile Include="CSystemDlg.cpp" />
|
||||
@@ -255,6 +258,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\CcRemote.rc2" />
|
||||
<None Include="res\dot.cur" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="res\CcRemote.ico" />
|
||||
|
@@ -75,6 +75,9 @@
|
||||
<ClInclude Include="CSystemDlg.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CScreenSpyDlg.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="CcRemote.cpp">
|
||||
@@ -113,6 +116,9 @@
|
||||
<ClCompile Include="CSystemDlg.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CScreenSpyDlg.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="CcRemote.rc">
|
||||
@@ -123,6 +129,9 @@
|
||||
<None Include="res\CcRemote.rc2">
|
||||
<Filter>资源文件</Filter>
|
||||
</None>
|
||||
<None Include="res\dot.cur">
|
||||
<Filter>资源文件</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="res\CcRemote.ico">
|
||||
|
@@ -83,7 +83,8 @@ BEGIN_MESSAGE_MAP(CCcRemoteDlg, CDialogEx)
|
||||
ON_MESSAGE(WM_ADDTOLIST,OnAddToList)
|
||||
ON_MESSAGE(WM_OPENSHELLDIALOG, OnOpenShellDialog)
|
||||
ON_MESSAGE(WM_OPENPSLISTDIALOG, OnOpenSystemDialog)
|
||||
|
||||
ON_MESSAGE(WM_OPENSCREENSPYDIALOG, OnOpenScreenSpyDialog)
|
||||
|
||||
|
||||
//-------------系统-------------
|
||||
ON_WM_SYSCOMMAND()
|
||||
@@ -357,6 +358,7 @@ int CCcRemoteDlg::InitMyMenu()
|
||||
::DrawMenuBar(this->GetSafeHwnd()); //显示菜单
|
||||
|
||||
popup.LoadMenu(IDR_MENU_ONLINE);//载入菜单资源
|
||||
//popup.GetSubMenu(0)->SetMenuItemBitmaps();
|
||||
::MENUINFO lpcmi;
|
||||
m_brush.CreateSolidBrush(RGB(236, 153, 101));//颜色
|
||||
memset(&lpcmi, 0, sizeof(::LPCMENUINFO));
|
||||
@@ -498,6 +500,8 @@ void CCcRemoteDlg::OnOnlineCmd()
|
||||
void CCcRemoteDlg::OnOnlineDesktop()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE bToken = COMMAND_SCREEN_SPY; //向服务端发送COMMAND_SCREEN_SPY CKernelManager::OnReceive搜之
|
||||
SendSelectCommand(&bToken, sizeof(BYTE));
|
||||
}
|
||||
|
||||
|
||||
@@ -536,6 +540,8 @@ void CCcRemoteDlg::OnOnlineVideo()
|
||||
void CCcRemoteDlg::OnOnlineWindow()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
BYTE bToken = COMMAND_WSLIST;
|
||||
SendSelectCommand(&bToken, sizeof(BYTE));
|
||||
}
|
||||
|
||||
|
||||
@@ -749,9 +755,9 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext)
|
||||
//case FILEMANAGER_DLG:
|
||||
// ((CFileManagerDlg *)dlg)->OnReceiveComplete();
|
||||
// break;
|
||||
//case SCREENSPY_DLG:
|
||||
// ((CScreenSpyDlg *)dlg)->OnReceiveComplete();
|
||||
// break;
|
||||
case SCREENSPY_DLG:
|
||||
((CScreenSpyDlg *)dlg)->OnReceiveComplete();
|
||||
break;
|
||||
//case WEBCAM_DLG:
|
||||
// ((CWebCamDlg *)dlg)->OnReceiveComplete();
|
||||
// break;
|
||||
@@ -763,7 +769,7 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext)
|
||||
// break;
|
||||
case SYSTEM_DLG:
|
||||
((CSystemDlg *)dlg)->OnReceiveComplete();
|
||||
break;
|
||||
break;
|
||||
case SHELL_DLG:
|
||||
((CShellDlg *)dlg)->OnReceiveComplete();
|
||||
break;
|
||||
@@ -806,21 +812,24 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext)
|
||||
break;
|
||||
/*case TOKEN_DRIVE_LIST: // 驱动器列表
|
||||
// 指接调用public函数非模态对话框会失去反应, 不知道怎么回事,太菜
|
||||
g_pConnectView->PostMessage(WM_OPENMANAGERDIALOG, 0, (LPARAM)pContext);
|
||||
break;
|
||||
case TOKEN_BITMAPINFO: //
|
||||
// 指接调用public函数非模态对话框会失去反应, 不知道怎么回事
|
||||
g_pConnectView->PostMessage(WM_OPENSCREENSPYDIALOG, 0, (LPARAM)pContext);
|
||||
g_pCcRemoteDlg->PostMessage(WM_OPENMANAGERDIALOG, 0, (LPARAM)pContext);
|
||||
break;
|
||||
|
||||
case TOKEN_WEBCAM_BITMAPINFO: // 摄像头
|
||||
g_pConnectView->PostMessage(WM_OPENWEBCAMDIALOG, 0, (LPARAM)pContext);
|
||||
g_pCcRemoteDlg->PostMessage(WM_OPENWEBCAMDIALOG, 0, (LPARAM)pContext);
|
||||
break;
|
||||
case TOKEN_AUDIO_START: // 语音
|
||||
g_pConnectView->PostMessage(WM_OPENAUDIODIALOG, 0, (LPARAM)pContext);
|
||||
g_pCcRemoteDlg->PostMessage(WM_OPENAUDIODIALOG, 0, (LPARAM)pContext);
|
||||
break;
|
||||
case TOKEN_KEYBOARD_START:
|
||||
g_pConnectView->PostMessage(WM_OPENKEYBOARDDIALOG, 0, (LPARAM)pContext);
|
||||
g_pCcRemoteDlg->PostMessage(WM_OPENKEYBOARDDIALOG, 0, (LPARAM)pContext);
|
||||
break;*/
|
||||
case TOKEN_BITMAPINFO: //
|
||||
// 指接调用public函数非模态对话框会失去反应, 不知道怎么回事
|
||||
g_pCcRemoteDlg->PostMessage(WM_OPENSCREENSPYDIALOG, 0, (LPARAM)pContext);
|
||||
break;
|
||||
//进程遍历和窗口遍历公用的一个窗口类,在构造判断判断下类型来显示不同的数据
|
||||
case TOKEN_WSLIST:
|
||||
case TOKEN_PSLIST:
|
||||
g_pCcRemoteDlg->PostMessage(WM_OPENPSLISTDIALOG, 0, (LPARAM)pContext);
|
||||
break;
|
||||
@@ -966,7 +975,7 @@ LRESULT CCcRemoteDlg::OnOpenShellDialog(WPARAM wParam, LPARAM lParam)
|
||||
//这里定义远程终端的对话框,转到远程终端的CShellDlg类的定义 先查看对话框界面后转到OnInitDialog
|
||||
CShellDlg *dlg = new CShellDlg(this, m_iocpServer, pContext);
|
||||
|
||||
// 设置父窗口为卓面
|
||||
// 设置父窗口为桌面
|
||||
dlg->Create(IDD_SHELL, GetDesktopWindow());
|
||||
dlg->ShowWindow(SW_SHOW);
|
||||
|
||||
@@ -989,4 +998,19 @@ LRESULT CCcRemoteDlg::OnOpenSystemDialog(WPARAM wParam, LPARAM lParam)
|
||||
pContext->m_Dialog[1] = (int)dlg;
|
||||
//先看一下这个对话框的界面再看这个对话框类的构造函数
|
||||
return 0;
|
||||
}
|
||||
|
||||
//自定义消息 打开屏幕监控窗口
|
||||
LRESULT CCcRemoteDlg::OnOpenScreenSpyDialog(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
ClientContext *pContext = (ClientContext *)lParam;
|
||||
|
||||
CScreenSpyDlg *dlg = new CScreenSpyDlg(this, m_iocpServer, pContext);
|
||||
// 设置父窗口为桌面
|
||||
dlg->Create(IDD_SCREENSPY, GetDesktopWindow());
|
||||
dlg->ShowWindow(SW_SHOW);
|
||||
|
||||
pContext->m_Dialog[0] = SCREENSPY_DLG;
|
||||
pContext->m_Dialog[1] = (int)dlg;
|
||||
return 0;
|
||||
}
|
@@ -7,6 +7,7 @@
|
||||
#include "SEU_QQwry.h"
|
||||
#include "CShellDlg.h"
|
||||
#include "CSystemDlg.h"
|
||||
#include "CScreenSpyDlg.h"
|
||||
#pragma once
|
||||
|
||||
|
||||
@@ -99,6 +100,7 @@ public:
|
||||
afx_msg LRESULT OnAddToList(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LRESULT OnOpenShellDialog(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnOpenSystemDialog(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnOpenScreenSpyDialog(WPARAM, LPARAM);
|
||||
|
||||
//-------------系统消息处理-------------
|
||||
afx_msg void OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
|
@@ -3,15 +3,22 @@ g:\ccremote\ccremote\ccremote\ccremote\debug\vc141.pdb
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\vc141.idb
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\pch.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\truecolortoolbar.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\seu_qqwry.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\inifile.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\cpuusage.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\csystemdlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\cshelldlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\csettingdlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\cscreenspydlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\ccremotedlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\ccremote.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\iocpserver.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\buffer.obj
|
||||
g:\ccremote\ccremote\ccremote\debug\ccremote.ilk
|
||||
g:\ccremote\ccremote\ccremote\debug\ccremote.exe
|
||||
g:\ccremote\ccremote\ccremote\debug\ccremote.pdb
|
||||
g:\ccremote\ccremote\bin\ccremote.ilk
|
||||
g:\ccremote\ccremote\bin\ccremote.exe
|
||||
g:\ccremote\ccremote\bin\ccremote.pdb
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\ccremote.res
|
||||
g:\ccremote\ccremote\ccremote\ccremote\..\..\bin\ccremote.exe
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\ccremote.tlog\cl.command.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\ccremote.tlog\cl.read.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\debug\ccremote.tlog\cl.write.1.tlog
|
||||
|
@@ -1,18 +1,45 @@
|
||||
pch.cpp
|
||||
G:\VS2017\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(377,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。
|
||||
pch.cpp
|
||||
CcRemote.cpp
|
||||
CcRemoteDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(218): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(235): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(162): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(167): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(308): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(325): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(798): warning C4018: “<=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(880): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
CScreenSpyDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cscreenspydlg.cpp(54): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cscreenspydlg.cpp(607): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cscreenspydlg.cpp(621): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
|
||||
CSettingDlg.cpp
|
||||
CShellDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(95): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(122): warning C4018: “<”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(208): warning C4018: “<=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配
|
||||
CSystemDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\csystemdlg.cpp(114): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
CpuUsage.cpp
|
||||
IniFile.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\inifile.cpp(33): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
|
||||
g:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||
SEU_QQwry.cpp
|
||||
TrueColorToolBar.cpp
|
||||
正在生成代码...
|
||||
Buffer.cpp
|
||||
IOCPServer.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(129): warning C4996: 'WSASocketA': Use WSASocketW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(133): warning C4996: 'WSASocketA': Use WSASocketW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(3416): note: 参见“WSASocketA”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(715): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(725): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(764): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(910): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(774): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(920): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
正在生成代码...
|
||||
CcRemote.vcxproj -> G:\CcRemote\CcRemote\CcRemote\Debug\CcRemote.exe
|
||||
CcRemote.vcxproj -> G:\CcRemote\CcRemote\CcRemote\CcRemote\..\..\bin\CcRemote.exe
|
||||
|
Binary file not shown.
@@ -1,30 +1,2 @@
|
||||
g:\ccremote\ccremote\bin\ccremote.ipdb
|
||||
g:\ccremote\ccremote\bin\ccremote.iobj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.pch
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\vc141.pdb
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\pch.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\truecolortoolbar.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\seu_qqwry.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\inifile.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\cpuusage.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\csystemdlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\cshelldlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\csettingdlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremotedlg.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\iocpserver.obj
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\buffer.obj
|
||||
g:\ccremote\ccremote\bin\ccremote.exe
|
||||
g:\ccremote\ccremote\bin\ccremote.pdb
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.res
|
||||
g:\ccremote\ccremote\ccremote\ccremote\..\..\bin\ccremote.exe
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\ccremote.write.1u.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\cl.command.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\cl.read.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\cl.write.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\link.command.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\link.read.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\link.write.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\rc.command.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\rc.read.1.tlog
|
||||
g:\ccremote\ccremote\ccremote\ccremote\release\ccremote.tlog\rc.write.1.tlog
|
||||
|
@@ -2,15 +2,20 @@
|
||||
pch.cpp
|
||||
CcRemote.cpp
|
||||
CcRemoteDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(161): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(162): warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(2219): note: 参见“gethostbyname”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(166): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(167): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(307): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(324): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(792): warning C4018: “<=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(871): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(308): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(325): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(798): warning C4018: “<=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\ccremotedlg.cpp(880): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
CScreenSpyDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cscreenspydlg.cpp(54): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cscreenspydlg.cpp(607): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cscreenspydlg.cpp(621): warning C4554: “<<”: 检查运算符优先级是否存在的可能的错误;使用括号阐明优先级
|
||||
CSettingDlg.cpp
|
||||
CShellDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(95): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
@@ -19,7 +24,7 @@ g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(122): warning C4018: “<
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(208): warning C4018: “<=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配
|
||||
CSystemDlg.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\csystemdlg.cpp(138): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\csystemdlg.cpp(114): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
CpuUsage.cpp
|
||||
IniFile.cpp
|
||||
@@ -31,11 +36,11 @@ g:\ccremote\ccremote\ccremote\ccremote\inifile.cpp(33): warning C4996: 'strcat':
|
||||
IOCPServer.cpp
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(133): warning C4996: 'WSASocketA': Use WSASocketW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(3416): note: 参见“WSASocketA”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(718): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(725): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
|
||||
g:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(767): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(913): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(774): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据
|
||||
g:\ccremote\ccremote\ccremote\ccremote\include\iocpserver.cpp(920): warning C4018: “>=”: 有符号/无符号不匹配
|
||||
正在生成代码
|
||||
All 479 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
|
||||
All 520 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
|
||||
已完成代码的生成
|
||||
CcRemote.vcxproj -> G:\CcRemote\CcRemote\CcRemote\CcRemote\..\..\bin\CcRemote.exe
|
||||
|
Binary file not shown.
@@ -343,6 +343,12 @@ void CIOCPServer::OnAccept()
|
||||
// Create the Client context to be associted with the completion port
|
||||
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ɶ˿<C9B6><CBBF><EFBFBD><EFBFBD>ӿͻ<D3BF><CDBB>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ClientContext* pContext = AllocateContext();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôҲ<C3B4><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug<75><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>WSAIoctl<74><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>쳣
|
||||
// <20><><EFBFBD><EFBFBD>pContext2<74><32>pContext2<74>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ı䣬pContextû<74><C3BB><EFBFBD>ܵ<EFBFBD>Ӱ<EFBFBD><D3B0>
|
||||
// <20><>ֻ<EFBFBD><D6BB>debug<75>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>ɵģ<C9B5><C4A3><EFBFBD>ջû<D5BB><C3BB>ƽ<EFBFBD><EFBFBD>£<EFBFBD><C2A3>²<EFBFBD><C2B2><EFBFBD>
|
||||
ClientContext* pContext2 = pContext;
|
||||
// AllocateContext fail
|
||||
if (pContext == NULL)
|
||||
return;
|
||||
@@ -386,9 +392,10 @@ void CIOCPServer::OnAccept()
|
||||
klive.onoff = 1; // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
||||
klive.keepalivetime = m_nKeepLiveTime;
|
||||
klive.keepaliveinterval = 1000 * 10; // <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>Ϊ10<31><30> Resend if No-Reply
|
||||
SOCKET dwIoControlCode = pContext->m_Socket;
|
||||
WSAIoctl
|
||||
(
|
||||
pContext->m_Socket,
|
||||
dwIoControlCode,
|
||||
SIO_KEEPALIVE_VALS,
|
||||
&klive,
|
||||
sizeof(tcp_keepalive),
|
||||
@@ -412,7 +419,7 @@ void CIOCPServer::OnAccept()
|
||||
|
||||
OVERLAPPEDPLUS *pOverlap = new OVERLAPPEDPLUS(IOInitialize);
|
||||
|
||||
BOOL bSuccess = PostQueuedCompletionStatus(m_hCompletionPort, 0, (DWORD) pContext, &pOverlap->m_ol);
|
||||
BOOL bSuccess = PostQueuedCompletionStatus(m_hCompletionPort, 0, (DWORD)pContext, &pOverlap->m_ol);
|
||||
|
||||
if ( (!bSuccess && GetLastError( ) != ERROR_IO_PENDING))
|
||||
{
|
||||
|
@@ -14,6 +14,7 @@
|
||||
#include <afxcontrolbars.h>
|
||||
#include <afxwin.h>
|
||||
#include <afxwin.h>
|
||||
#include <afxwin.h>
|
||||
|
||||
#endif //PCH_H
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 359 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 22 KiB |
BIN
CcRemote/CcRemote/res/dot.cur
Normal file
BIN
CcRemote/CcRemote/res/dot.cur
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.5 KiB |
BIN
CcRemote/CcRemote/res/ico32.png
Normal file
BIN
CcRemote/CcRemote/res/ico32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
@@ -25,6 +25,11 @@
|
||||
#define IDI_SYSTEM 146
|
||||
#define IDR_MENU4 147
|
||||
#define IDR_PSLIST 147
|
||||
#define IDR_WINDOW_LIST 148
|
||||
#define IDD_DIALOG1 149
|
||||
#define IDD_SCREENSPY 149
|
||||
#define IDI_DOT 153
|
||||
#define IDC_DOT 153
|
||||
#define IDC_ONLINE 1000
|
||||
#define IDC_LIST2 1001
|
||||
#define IDC_MESSAGE 1001
|
||||
@@ -33,7 +38,8 @@
|
||||
#define IDC_EDIT 1003
|
||||
#define IDC_TAB 1004
|
||||
#define IDC_LIST_WINDOWS 1005
|
||||
#define IDC_LIST_PROCESS 1006
|
||||
#define IDC_LIST_PROCESS_OR_WINDOW 1006
|
||||
#define IDC_LIST_PROCESS_OR_WINDOW_OR_WINDOW 1006
|
||||
#define ID_ONLINE_32771 32771
|
||||
#define ID_ONLINE_32772 32772
|
||||
#define ID_ONLINE_32773 32773
|
||||
@@ -83,13 +89,31 @@
|
||||
#define ID_PSLIST_32818 32818
|
||||
#define IDM_KILLPROCESS 32819
|
||||
#define IDM_REFRESHPSLIST 32820
|
||||
#define ID_WINDOW_32821 32821
|
||||
#define ID_WINDOW_32822 32822
|
||||
#define ID_WINDOW_32823 32823
|
||||
#define ID_WINDOW_32824 32824
|
||||
#define ID_WINDOW_32825 32825
|
||||
#define ID_WINDOW_32826 32826
|
||||
#define ID_WINDOW_32827 32827
|
||||
#define ID_WINDOW_32828 32828
|
||||
#define ID_WINDOW_U32829 32829
|
||||
#define ID_WINDOW_32830 32830
|
||||
#define ID_WINDOW_32831 32831
|
||||
#define ID_WINDOW_REFLUSH 32832
|
||||
#define ID_WINDOW_CLOST 32833
|
||||
#define ID_WINDOW_HIDE 32834
|
||||
#define ID_WINDOW_RETURN 32835
|
||||
#define ID_WINDOW_MAX 32836
|
||||
#define ID_WINDOW_MIN 32837
|
||||
#define ID_WINDOW_S 32838
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 148
|
||||
#define _APS_NEXT_COMMAND_VALUE 32821
|
||||
#define _APS_NEXT_RESOURCE_VALUE 154
|
||||
#define _APS_NEXT_COMMAND_VALUE 32839
|
||||
#define _APS_NEXT_CONTROL_VALUE 1006
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
BIN
bin/CcRemote.exe
BIN
bin/CcRemote.exe
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user