我写的一个SERVICE的代码,可是运行时候没反应,请问是怎么回事?

Javpp 2004-10-23 11:34:23
//Main.h

//---------------------------------------------------------------------------
#ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <SvcMgr.hpp>
#include <vcl.h>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TGetData : public TService
{
__published: // IDE-managed Components
void __fastcall ServiceExecute(TService *Sender);
private: // User declarations
public: // User declarations
__fastcall TGetData(TComponent* Owner);
TServiceController __fastcall GetServiceController(void);

friend void __stdcall ServiceController(unsigned CtrlCode);
};
//---------------------------------------------------------------------------
extern PACKAGE TGetData *GetData;
//---------------------------------------------------------------------------
#endif





//Main.cpp

//---------------------------------------------------------------------------
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TGetData *GetData;

HANDLE hComm;
//---------------------------------------------------------------------------
__fastcall TGetData::TGetData(TComponent* Owner)
: TService(Owner)
{
}

TServiceController __fastcall TGetData::GetServiceController(void)
{
return (TServiceController) ServiceController;
}

void __stdcall ServiceController(unsigned CtrlCode)
{
GetData->Controller(CtrlCode);
}
//---------------------------------------------------------------------------
void __fastcall TGetData::ServiceExecute(TService *Sender)
{
try
{
char *ComNo;
DCB dcb;
String Temp;

Temp = "COM1";
ComNo = Temp.c_str ();
hComm = CreateFile (ComNo, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);

if (hComm == INVALID_HANDLE_VALUE)
{
ShowMessage ("Open Port Error");
}

GetCommState (hComm, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;

if (!SetCommState (hComm, &dcb))
{
ShowMessage ("Set Port Error");
CloseHandle (hComm);
}

ShowMessage ("OK");

while (!Terminated)
{
ServiceThread->ProcessRequests (false);
}
}
__finally
{
}
}
//---------------------------------------------------------------------------
...全文
139 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hb_wxy 2005-04-22
  • 打赏
  • 举报
回复
up
hb_wxy 2005-04-20
  • 打赏
  • 举报
回复
mark
Javpp 2004-10-25
  • 打赏
  • 举报
回复
upupupupup
Javpp 2004-10-25
  • 打赏
  • 举报
回复
UP

asimpleman 2004-10-24
  • 打赏
  • 举报
回复
g
mediawizard 2004-10-24
  • 打赏
  • 举报
回复
我也是才刚开始学写系统服务的,你可以先把它按照普通应用那样去写、调试,然后把没问题的代码加到系统服务的工程里就OK了。
Javpp 2004-10-23
  • 打赏
  • 举报
回复
原来我是在OnStart事件里写的如下代码,可是也没有执行
try
{
char *ComNo;
DCB dcb;
String Temp;

Temp = "COM1";
ComNo = Temp.c_str ();
hComm = CreateFile (ComNo, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);

if (hComm == INVALID_HANDLE_VALUE)
{
ShowMessage ("Open Port Error");
}

GetCommState (hComm, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;

if (!SetCommState (hComm, &dcb))
{
ShowMessage ("Set Port Error");
CloseHandle (hComm);
}

ShowMessage ("OK");
}
__finally
{
}

能不能讲讲在这些事件中,自己的代码应该怎么组织,比如说在服务启动的时候执行的初始化动作,服务运行时的处理动作,还有服务停止时的结尾动作,都应该怎么安排。。。

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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