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);
 
Ïà¹ØÎĵµ£º
unit winntService;
interface
uses
Windows,WinSvc,WinSvcEx;
function InstallService(const strServiceName,strDisplayName,strDescription,strFilename: string):Boolean;
procedure UninstallService(strServiceName:string);
implementation
function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: C ......
Ò»¡¢ÀàÓë¶ÔÏó
1¡¢ Àà(Class)ÊÇÓû§¶¨ÒåµÄÊý¾ÝÀàÐÍ
2¡¢ ¶ÔÏó£¨Object£©ÊÇÀà(Class)µÄÒ»¸öʵÀý£¬»òÓÉÀඨÒåÊý¾ÝÀàÐ͵ÄÒ»¸ö±äÁ¿;
3¡¢ ÀàÓÐÒ»ÖÖ״̬£¨ÄÚ²¿Êý¾Ý£©£¬²Ù×÷£¨ÐÐΪ»ò·½·¨£©£¬ÊôÐÔ;
4¡¢ ¶ÔÏóÊÇÒ»¸öʵÌ壬³ÌÐòÔËÐÐʱ»áΪÆäÄÚ²¿±íÏÖ·ÖÅäһЩÄÚ´æ;
5¡¢ ÀàÓë¶ÔÏóÖ®¼äµÄ¹ØÏµºÍ±äÁ¿ÓëÀàÐ ......
<1>ÀûÓÃUnitµÄ
InitalizationÓëFinalizationÕâÁ½¸öС½Ú
¡¡¡¡¿ÉÒÔÔÚUnitµÄÕâÁ½¸öС½ÚÖа²ÅÅUnitµÄ½øÈëºÍÍ˳ö£¬µ«ÊÇ
Program
Óë
Library²¢Ã»ÓÐÕâÁ½¸ö²¿·Ö£¬ËùÒÔÖ»ÄÜдÔÚUnitÖС£
<2>ÀûÓÃExitProc±äÁ¿
¡¡¡¡ÔÚLibraryµÄbegin
..end.ÖмäÊÇ¿ÉÒÔд´úÂë
µÄ£¬
ÕâÀï¿ÉÒÔ·ÅÖÃ
DLL³õʼ»¯´úÂë
¡£Èç¹ûÏëÒª×öÉÆ ......
var
L,i:integer;
Ustr,str:string;
p:char;
begin
str:='123456789ABCDEFG'
L:=length(str);
for i:=1 to l do begin
p:=str[i];
str[i]:=str[l-(i-1)];
......
Delphi±àдϵͳ·þÎñÈý£º±àдÁ½ÆÜϵͳ·þÎñ ÊÕ²Ø
²ÉÓÃÏÂÃæµÄ·½·¨£¬¿ÉÒÔʵÏÖÒ»¸öÁ½ÆÜϵͳ·þÎñ£¨¼Èϵͳ·þÎñºÍ×ÀÃæ³ÌÐòµÄÁ½ÖÖģʽ£©
¹¤³Ì´úÂ룺
program FleetReportSvr;
uses
SvcMgr,
Forms,
SysUtils,
Windows,
SvrMain in 'SvrMain.pas' {FleetReportService: TService}, ......