WinForm多进程浏览器设计探讨(娱乐)

相思梦 2014-06-07 09:41:10
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 流程图都没求画,总结的蛋疼
...全文
257 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅得_被人砍 2014-06-08
  • 打赏
  • 举报
回复
学习了谢谢楼主
破碎的脸 2014-06-08
  • 打赏
  • 举报
回复
JF。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
yaotomo 2014-06-08
  • 打赏
  • 举报
回复
学习一下,有源码可以分享吗
相思梦 2014-06-08
  • 打赏
  • 举报
回复
管道(PIPE),由CreatePipe(创建匿名管道)函数搭配CreateProcess(创建进程)进行安全 属性关联实现共享,不过他并非最完美,因为管道关联时所创建的写入写出管道 其实纠结为底层为内存文件共享,返回的是hFile,我们通过ReadFile,WriteFile 进行控制,但基本都为死循环while中进行,但我们需要注意的是系统能给予我们 最底延迟1MS,当然我们可以进行高精度延迟(不建议)
相思梦 2014-06-08
  • 打赏
  • 举报
回复
引用 2 楼 yaotomo 的回复:
学习一下,有源码可以分享吗
度娘说不定有...
江湖评谈 2014-06-08
  • 打赏
  • 举报
回复
看起来很吊的样子
相思梦 2014-06-07
  • 打赏
  • 举报
回复
大家来点设计意见嘛

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧