VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1088|回复: 5

[求助] DLL怎么有自己的消息循环?

[复制链接]
35_avatar_middle
online_vip 发表于 2016-5-2 01:50:14 | 显示全部楼层 |阅读模式
3驿站币
我向exe程序注入一个dll
那么这个dll我应该怎么写?
有自己的消息循环
也可以加定时器
对了,不需要创建窗口





上一篇:怎么在列表框控件中添加树形控件
下一篇:编程抓取windows servers 2003 的hash
74_avatar_middle
在线会员 发表于 2016-5-2 09:01:47 | 显示全部楼层
你都不需要窗口了 還要什麼消息循環啊?
其次 win的定時器 似乎必須和 窗口關聯吧 記得 winapi設置定時器時 是必須傳入一個窗口句柄的 也是通過 窗口消息 處理的 定時器回調

你可以在dll中 啟動個 新的 線程 線程中 做個 loop 處理 自己的 事件(類似窗口程序的 消息循環) 定時器只能使用 類似sleep的函數模擬 或則 可以使用 boost 庫的
deadline_timer  組件
54_avatar_middle
在线会员 发表于 2016-5-2 18:45:04 | 显示全部楼层
对了,楼上的高手怎么做没有界面的程序?(不说控制台)不胜感激!
74_avatar_middle
在线会员 发表于 2016-5-2 23:40:07 | 显示全部楼层
lileisgns 发表于 2016-5-2 18:45
对了,楼上的高手怎么做没有界面的程序?(不说控制台)不胜感激!

1 定義一個 隊列 實現類似窗口的消息處理
孤一般直接用 std::deque 保存需要處理的 消息事件
當然 消息事件一般是由其他 線程 提交的 所以要注意同步 孤一般直接使用 boost::mutex
2 當發生需要處理的 事件時 向 std::deque push_back 一個事件結構
3 在主要處理線程中 實現一個 loop
  不斷從 std::deque pop_front 事件處理

4 loop 如果要實現簡單 直接 不斷 pop_front 並且 Sleep便可
(或者 使用 一個win32的 event 在 pop_front 前 WaitForSingleObject
在步驟2中 每次 push_back後 SetEvent 通知 WaitForSingleObject 有事件需要處理 以便WaitForSingleObject 返回
)
51_avatar_middle
online_admins 发表于 2016-5-3 15:46:40 | 显示全部楼层
SetTimer 可以不用窗口,用回调函数的机制也可以实现定时器,至于DLL的消息循环的话可以考虑开一个线程,在县城里面添加一个 while 消息循环,获取消息,处理消息,别的线程发过来之后,应该可以获取到,记得之前这么做过
54_avatar_middle
在线会员 发表于 2016-5-11 21:32:20 | 显示全部楼层
zuiwuchang 发表于 2016-5-2 23:40
1 定義一個 隊列 實現類似窗口的消息處理
孤一般直接用 std::deque 保存需要處理的 消息事件
當然 消 ...

感谢,还不懂这一块。是在VC++6.0实现的吗?
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 03:55

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表