程序简单,就是让喇叭每2秒响一次,发布后就不行。=============================
procedure TService1.ServiceExecute(Sender: TService);
begin
timer1.Enabled:=true;
while not Terminated do ServiceThread.ProcessRequests(true);
timer1.Enabled:=false;
end;procedure TService1.Timer1Timer(Sender: TObject);begin
Windows.Beep(330, 300);
end;
procedure TService1.ServiceExecute(Sender: TService);
begin
timer1.Enabled:=true;
while not Terminated do ServiceThread.ProcessRequests(true);
timer1.Enabled:=false;
end;procedure TService1.Timer1Timer(Sender: TObject);begin
Windows.Beep(330, 300);
end;
解决方案 »
- Undeclared identifier:'Winlogon'
- delphi中dbgrid如何实现picklist功能
- 线程如何传回数据问题
- 请高人指点,怎样读取数据库的表清单、函数清单、过程清单?
- query的CachedUpdates属性问题,回复有分。
- 前途,我该何去何从!派分发泄!
- 我想用DELPHI做个简单的组件,但是不知道从什么地方下手,谁能告诉我???
- 1000分求条码控件,能生成如下条码!或条码字体!
- 请教大家如何用DLEPHI搞定XML??(有钱捧个钱场,没钱捧个人场啊!人人都有分哦~~)
- 关于Midas 的TSocketConnection具体怎么使用?
- dbgrid的问题,基础问题
- shellAPI 打开程序问题。。
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,Unit2;type
TService1 = class(TService)
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean); private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;var
Service1: TService1;
DataThread: th;
implementation{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
DataThread:= th.Create(False);//创建线程对象
Started := True;
end;procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
DataThread.Terminate; //关闭线程
Stopped := True;
end;procedure TService1.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
DataThread.Resume; //重新启动
Continued := True;
end;end.unit Unit2;interface
uses
Classes,SysUtils,windows,ExtCtrls; type
th = class(TThread)
tmr1: TTimer;
private
{ Private declarations }
protected
procedure Execute; override;
end;implementationprocedure th.Execute;
begin
while True do
begin
Sleep(2000);
Windows.Beep(330, 300);
end;end;end.刚才试验过可以的,要用线程来做
可以在DELPHI7环境,带参数/install或者/uninstall按F9运行时,是有蜂鸣响的,一旦到服务里面去启动,就不响了。那原来用的什么响啊,听着也像主板上的响声。但是我可以关掉声音——难道不是蜂鸣器?
unit2里面的tmr1没有用上啊?
我试过在我的电脑是可以响的,是不是你电脑主板speak线没插啊
然后在操作系统里启动或 net start 你的服务就行了
uses
Classes,SysUtils,windows,ExtCtrls,Dialogs; type
th = class(TThread)
Tmr : TTimer;
private
{ Private declarations }
protected
procedure Execute; override;
procedure TimerOn(Sender: TObject);
procedure Destory;
end;implementation
procedure th.Destory;
begin
inherited;
Tmr.Free;
end;procedure th.Execute;
begin
Tmr := TTimer.Create(nil);
Tmr.Interval := 2000;
Tmr.OnTimer := TimerOn;
Tmr.Enabled := True;end;
procedure th.TimerOn(Sender: TObject);
begin
Windows.Beep(330, 300);
end;end.我在线程中用timer在执行windows.beep,线程执行完毕Timer就失效了,哪位帮我改改代码
不是有sleep了吗?不需要用timer了吧?
我是不明白