易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi编写系统服务二:系统服务和桌面程序的区别

 Delphi编写系统服务二:系统服务和桌面程序的区别 收藏
 Windows 2000/XP/2003等支持一种叫做“系统服务程序”的进程,系统服务和桌面程序的区别是:
系统服务不用登陆系统即可运行;
系统服务是运行在System Idle Process/System/smss/winlogon/services下的,而桌面程序是运行在Explorer下的;
系统服务拥有更高的权限,系统服务拥有Sytem的权限,而桌面程序只有Administrator权限;
在Delphi中系统服务是对桌面程序进行了再一次的封装,既系统服务继承于桌面程序。因而拥有桌面程序所拥有的特性;
系统服务对桌面程序的DoHandleException做了改进,会自动把异常信息写到NT服务日志中;
普通应用程序启动只有一个线程,而服务启动至少含有三个线程。(服务含有三个线程:TServiceStartThread服务启动线程;TServiceThread服务运行线程;Application主线程,负责消息循环);
  摘录代码:
  procedure TServiceApplication.Run;
  begin
    .
    .
    .
      StartThread := TServiceStartThread.Create(ServiceStartTable);
      try
        while not Forms.Application.Terminated do
          Forms.Application.HandleMessage;
        Forms.Application.Terminate;
        if StartThread.ReturnValue <> 0 then
          FEventLogger.LogMessage(SysErrorMessage(StartThread.ReturnValue));
      finally
        StartThread.Free;
      end;
     .
     .
     .
  end;
  procedure TService.DoStart;
  begin
    try
      Status := csStartPending;
      try
        FServiceThread := TServiceThread.Create(Self);
    


相关文档:

C#学习及与delphi的比较(一)

刚开始很不习惯c#的风格,哎,先入为主啊,delphi习惯了,{}代替begin/end太扎眼。
属性方法的宣告和代码在一起,没有像delphi分interface/implementation,感觉太乱,都不知道一个class到底有几个方法。
每个属性和方法前面都要单独写private/protected/public,老天,c#是delphi之父设计的揶,怎么不学delphi写一个就行 ......

DELPHI参数几个概念上的区别

 引用参数:
引用参数用var关键字标示
procedure DoubleTheValue (var Value: Integer);
begin
Value := Value * 2;
end;
在这种情况下,参数既把一个值传递给过程,又把新值返回给调用过程的代码。当你执行完以下代码时:
var
X: Integer;
begin
X := 10;
DoubleTheValue (X);
x变量的值变成了20 ......

Delphi调用Servlet

一直想让Delphi做为RIA,而业务层使用Java!今天没事做,简单实现了一下!
目前有2种方案:
WebService
IndyHttp调用Servlet
以下是用IndyHttp来调用Servlet
一、先写一个helloworld的Servlet
1.编写ui以及service
//工具包
package com.cdrs.jutils;
import java.io.IOException;
import java.util.Date;
impor ......

Delphi编写系统服务六:在服务中使用COM组件

Delphi编写系统服务六:在服务中使用COM组件 收藏
 在服务中调用COM组件不能像在桌面程序中直接创建,在每次创建之前先调用CoInitialize(nil),释放的时候调用CoUninitialize。例如:调用ADO组件
var
  Qry: TADOQuery;
begin
  CoInitialize(nil);
  Qry := TADOQuery.Create(nil);
  tr ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号