首页
社区
课程
招聘
[求助]DLL中使用SetTimer Delphi
发表于: 2008-6-25 18:34 9072

[求助]DLL中使用SetTimer Delphi

2008-6-25 18:34
9072
library Project2;
uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas';
{$R *.res}
begin
xzcx;
end.

unit Unit1;
interface
uses Windows,SysUtils;
var
  t1: LongWord=0; // 定时器句柄
procedure xzcx();
procedure TimerOn;  // 安装定时器
procedure TimerOff; // 删除定时器
implementation
Procedure WriteTxt(sFileName,sText:String); //写txt文件
Var
F:TextFile;
Begin
AssignFile(F,sFileName);
IF FileExists(sFileName) Then
Append(F)
Else
ReWrite(F);
WriteLn(F,sText);
CloseFile(F);
End;
procedure TimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; dwTime: DWORD); stdcall;
begin
WriteTxt('0.txt','正在执行定时器'+ inttostr(t1));
end;
procedure xzcx();
begin
TimerOn;
WriteTxt('0.txt','启动定时器'+ inttostr(t1));
end;
procedure TimerOn;
begin
  if (t1 <> 0) then TimerOff;
  t1:= SetTimer(0, 0, 100, @TimerProc);
end;
procedure TimerOff;
begin
  if (t1 <> 0) then
  begin
    KillTimer(0, t1);
    t1 := 0;
  end;
end;
end.

结果
启动定时器28535
启动定时器32759
没有执行,为什么会这样呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1004
活跃值: (75)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
2
你的这个动态链接库写的有问题呀,没有入口点,也没有导出相关的函数,其他程序无法加载这个dll,当然就无法调用xzcx了,不知道是不是这样。
2008-6-25 18:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个DLL在随系统启动的,系统启动的时候自动加载这个DLL 同时也调用xzcx了.但就是定时器不会启动,但是定时器确定是创建成功了.
2008-6-25 18:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
定时器没有按我设置的100MS执行一次, 就启动了就没了,一次都没执行,不知道是为什么,.
2008-6-25 18:55
0
雪    币: 1004
活跃值: (75)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
5
你的这个程序没有问题,我用D2007编译后用OD加载,计时器是100ms执行一次的。
2008-6-25 19:43
0
雪    币: 184
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
没有窗体吧?接收不了WM_TIMER消息。自然就没起作用了。
2008-6-26 00:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
没问题
lz直接用的回调函数
2008-6-26 10:27
0
游客
登录 | 注册 方可回帖
返回
//