我的服务程序窗体上怎么不能输入任何东西??

smilelhh 2005-06-09 04:45:05
我为我的服务程序做了个交互的窗体,
可是,窗体上所有的用来输入的控件都不能输入东西,但是checkbox,button等用鼠标操作的控件却行。
这是为什么??
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyaozgc 2005-06-11
  • 打赏
  • 举报
回复
帮你顶
smilelhh 2005-06-10
  • 打赏
  • 举报
回复
up
lovend 2005-06-09
  • 打赏
  • 举报
回复
帮你顶
smilelhh 2005-06-09
  • 打赏
  • 举报
回复
这是main.pas主文件
unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
TRsvrTransfer = class(TService)
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceExecute(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceShutdown(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;

var
RsvrTransfer: TRsvrTransfer;

implementation

uses Unit1;

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
RsvrTransfer.Controller(CtrlCode);
end;

function TRsvrTransfer.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;

procedure TRsvrTransfer.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;

procedure TRsvrTransfer.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;

procedure TRsvrTransfer.ServicePause(Sender: TService;
var Paused: Boolean);
begin
Paused := True;
end;

procedure TRsvrTransfer.ServiceShutdown(Sender: TService);
begin
gbCanClose := true;
MainForm.Free;
Status := csStopped;
ReportStatus();
end;

procedure TRsvrTransfer.ServiceStart(Sender: TService;
var Started: Boolean);
begin
Started := True;
Svcmgr.Application.CreateForm(TMainForm, MainForm);
gbCanClose := False;
MainForm.Hide;
end;

procedure TRsvrTransfer.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
Stopped := True;
gbCanClose := True;
MainForm.Free;
end;

end.
窗体文件:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
CnClasses, CnTrayIcon, Menus, StdCtrls, ExtCtrls, CnEdit,
Mask, CnSpin, IdUDPBase, IdUDPClient, IdTrivialFTP, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient;

type
TMainForm = class(TForm)
CnTrayIcon1: TCnTrayIcon;
pm1: TPopupMenu;
j1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
pnl1: TPanel;
pnl2: TPanel;
pnl3: TPanel;
pnl4: TPanel;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
chk1: TCheckBox;
lbl4: TLabel;
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
edt4: TEdit;
edt5: TEdit;
chk2: TCheckBox;
chk3: TCheckBox;
chk4: TCheckBox;
chk5: TCheckBox;
lbl5: TLabel;
lbl6: TLabel;
lbl7: TLabel;
EdtSavePath1: TCnEdit;
SpnEdtInteral: TCnSpinEdit;
lbl8: TLabel;
IdTCPClient1: TIdTCPClient;
IdTrivialFTP1: TIdTrivialFTP;
lbl9: TLabel;
lbl10: TLabel;
lbl11: TLabel;
lbl12: TLabel;
edtHost: TEdit;
edtPort: TEdit;
edtFtpUser: TEdit;
edtFtpPass: TEdit;
edtFtpDir: TEdit;
lbl13: TLabel;
lbl14: TLabel;
lbl15: TLabel;
lbl16: TLabel;
edtDbServer: TEdit;
edtDbUser: TEdit;
edtDbPass: TEdit;
lbl17: TLabel;
lbl18: TLabel;
edtEmail: TEdit;
edtEmailPass: TEdit;
procedure j1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
gbCanClose: Boolean;

implementation

uses main;

{$R *.dfm}

procedure TMainForm.j1Click(Sender: TObject);
begin
self.CnTrayIcon1.ShowApplication;
end;

procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
gbCanClose := gbCanClose;
if not gbCanClose then
begin
self.CnTrayIcon1.HideApplication;
end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
//FormStyle := fsStayOnTop; {窗口最前}
//SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); {不在任务栏显示}
gbCanClose := False;
end;

procedure TMainForm.N2Click(Sender: TObject);
begin
WinExec('net stop RsvrTransfer',SW_HIDE);
end;

procedure TMainForm.btn1Click(Sender: TObject);
begin
self.CnTrayIcon1.HideApplication;
end;

procedure TMainForm.btn3Click(Sender: TObject);
begin
WinExec('net pause RsvrTransfer',SW_HIDE);
self.btn2.Enabled := true;
self.btn3.Enabled := false;
end;

procedure TMainForm.btn2Click(Sender: TObject);
begin
WinExec('net continue RsvrTransfer',SW_HIDE);
self.btn2.Enabled := false;
self.btn3.Enabled := true;
end;

end.
smilelhh 2005-06-09
  • 打赏
  • 举报
回复
服务程序一般是不用交互,可我是想通过一个交互界面进行一些程序的设置工作呀。

程序很普通,就是一个窗体上放了一些checkbox,button,edit而已,checkbox,button可以交互,但edit却不能输入任何东西?输入焦点什么的都有。
怪事?
ly_liuyang 2005-06-09
  • 打赏
  • 举报
回复
服务程序本来就不要交互的!
你可以设置允许交互,但不推荐,作为服务是不需要直接交互的
Windows下这么多服务程序,那个允许交互了?

http://lysoft.7u7.net
Kshape 2005-06-09
  • 打赏
  • 举报
回复
把代码贴出来
看看窗体在Show得时候有异常么?
smilelhh 2005-06-09
  • 打赏
  • 举报
回复
难道不能交互吗?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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