能在电脑上使用的循环计时器!
答案:2 悬赏:80 手机版
解决时间 2021-04-04 16:31
- 提问者网友:回忆在搜索
- 2021-04-04 07:24
能在电脑上使用的循环计时器!。比如我输入100秒,它可以自动从0到100后自动回到0重新开始计时。不是在手机上使用的!
最佳答案
- 五星知识达人网友:轮獄道
- 2021-04-04 07:29
还是我来回答这个问题吧。
其实,DLL与EXE是非常不同的两类可执行模块,尤其在线程的创建释放等事务上面,而对于在DLLMAIN中创建线程,那则是非常不能原谅的事情,因为此时创建的线程无法正常释放。
不过,要解决你这个问题,其实并不是很难的事情,有如下几步:
1. 运行一个DLL。
2. 在DLL加载完成之后,显示的使用函数启动一个线程。
3. 在这个线程中使用WaitForSingleObject()函数,把等待的超时时间设为你需要的定时时间。
这样,你就可以在WaitForSingleObject函数解阻之后,做你要做的事情了。
下面,是简单的伪码:
volatile bool _g_vbThreadRun = false;
static HANDLE _g_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
unsigned int fThreadTimer(void* pv)
{
while( _g_vbThreadRun )
{
// the event this function waited must be created in advance.
WaitForSingleObject(_g_hEvent, 3000); // 3 s
// out time
// do something
}
return 0;
}
void LaunchTimer()
{
_g_vbThreadRun = true;
AfxBeginThread(fThreadTimer, NULL);
}
其实,DLL与EXE是非常不同的两类可执行模块,尤其在线程的创建释放等事务上面,而对于在DLLMAIN中创建线程,那则是非常不能原谅的事情,因为此时创建的线程无法正常释放。
不过,要解决你这个问题,其实并不是很难的事情,有如下几步:
1. 运行一个DLL。
2. 在DLL加载完成之后,显示的使用函数启动一个线程。
3. 在这个线程中使用WaitForSingleObject()函数,把等待的超时时间设为你需要的定时时间。
这样,你就可以在WaitForSingleObject函数解阻之后,做你要做的事情了。
下面,是简单的伪码:
volatile bool _g_vbThreadRun = false;
static HANDLE _g_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
unsigned int fThreadTimer(void* pv)
{
while( _g_vbThreadRun )
{
// the event this function waited must be created in advance.
WaitForSingleObject(_g_hEvent, 3000); // 3 s
// out time
// do something
}
return 0;
}
void LaunchTimer()
{
_g_vbThreadRun = true;
AfxBeginThread(fThreadTimer, NULL);
}
全部回答
- 1楼网友:duile
- 2021-04-04 07:38
软件有很多,楼主帮你找了下
看看有没有你用的那款~
上网记时 8.5 中文免费版_用于个人上网用户记录上网时间
http://www.downbank.cn/soft/2/35/2007/200702013169.htm
绿色上网 v3.2.20 绿色版_详细记录上网时间与掉线时间等
http://www.xdowns.com/soft/1/16/2007/soft_37316.html
记时提醒王绿色版 v1.40
http://www.orsoon.com/soft/6197.html
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯