VC++/CLR // 样式
VC# // 样式
设计思路:
1:分离AxWebBrowser
防止卡顿,假死
2:多进程管理模式
3:消息队列(MessageQueue)
SendMessage/PostMessage
4:多进程内存共享,
not CreateFileMaping(内存文件映射)
5:撤销:Net Byte[] To Win32 Byte[]
// 效率过低,却比管道(Pipe)最低1MS快
// 通过GetThreadTimes我们可以看见时间差

B进程:Net Byte[] To Win32 Byte[]
A进程:Win32 Byte[] To Net Byte[]
由于当初这么做的原因为 Net 托管内存堆保护机制
不过如今无意发现操作 Net Byte[] 玄机,所以撤销
使用:SetHandleCount( Net / Win32 ); // 取指针地址
lstrcpyn( Byte1,Byte2,0 ) // if Byte1 = Byte2 return Pointer else corp Byte2 To Byte1
// unsigned char*
6:网页放大缩小
通过 AxWebBrowser.Document 捕获
IWebBrowser2 Interface ComObject
Body - Style - Zoom // C# Net Error
所以通过投递按键消息实现放大缩小
AxWebBrowser.ExecWB
OLECMDID_ZOOM
获取放大缩小比例
7:注册系统全局同步事件(可以理解为Mutex(互斥体))
A进程创建全局事件,B进程进行检查是否已创建A进程
8:分离出的AxWebBrowser承载窗口启动时检查, 管理进程(Manage Process)HWND
由于EnumWindows过慢,所以采用FindWindow查找主窗口,查找成功进行宿主化
前提是程式必须检查到主进程创建的系统全局同步事件对象,才会进行检查管理进程
9:手都写痛了,娱乐软件文档 N/S 流程图都没求画,总结的蛋疼