当前位置: 传客网 > DELPHI如何限制系统服务和桌面程序只运行一个

DELPHI如何限制系统服务和桌面程序只运行一个

2016-12-30 作者:农家的牛

 如何限制系统服务和桌面程序只运行一个

在工程加入下列代码可以设置系统服务和桌面程序只运行一个。
program FleetReportSvr;

uses
  SvcMgr,
  Forms,
  SysUtils,
  Windows,
  SvrMain in 'SvrMain.pas' {FleetReportService: TService},
  AppMain in 'AppMain.pas' {FmFleetReport};

{$R *.RES}

const
  CSMutexName = 'Global/Services_Application_Mutex';
var
  OneInstanceMutex: THandle;
  SecMem: SECURITY_ATTRIBUTES;
  aSD: SECURITY_DESCRIPTOR;
begin
  InitializeSecurityDescriptor(@aSD, SECURITY_DESCRIPTOR_REVISION);
  SetSecurityDescriptorDacl(@aSD, True, nil, False);
  SecMem.nLength := SizeOf(SECURITY_ATTRIBUTES);
  SecMem.lpSecurityDescriptor := @aSD;
  SecMem.bInheritHandle := False;
  OneInstanceMutex := CreateMutex(@SecMem, False, CSMutexName);
  if (GetLastError = ERROR_ALREADY_EXISTS)then
  begin
    DlgError('Error, Program or service already running!');
    Exit;
  end;
  if FindCmdLineSwitch('svc', True) or
    FindCmdLineSwitch('install', True) or
    FindCmdLineSwitch('uninstall', True) then
  begin
    SvcMgr.Application.Initialize;
    SvcMgr.Application.CreateForm(TSvSvrMain, SvSvrMain);
    SvcMgr.Application.Run;
  end
  else
  begin
    Forms.Application.Initialize;
    Forms.Application.CreateForm(TFmFmMain, FmMain);
    Forms.Application.Run;
  end;
end.



相关推荐

  • 分享一个简单的php计算程序运行时间实例

    这篇文章主要介绍了php计算程序运行时间的简单例子,首先课课家视频教程平台分析一下原理,要想得到程序运行时间,那么可以在程序最开始运行的时候定义一个变量记下当前时间,然后等我们程序运行完之后再记录一下当前的时间,两者相差就是该程序运行花费的

  • ACE程序运行:无法定位程序输入点 ACEMainBase 于动态链接库ACE.dll 上.

    ACE程序运行:无法定位程序输入点ACE_Main_Base于动态链接库ACE.dll上.程序编译、连接都OK,但是运行的时候报错如下:无法定位程序输入点ACE_Main_Base于动态链接库ACE.dll上。程序如下:#include&q

  • JVM之Java内存区域及内存溢出异常 程序运行时数据区域

    一、Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。1、程序计数器占用较小内存空间,可以看做当前线程所执行的字节码的行号指示器,线程拥有独立的计数器。如果线程正在执行java方法,计数器记录正在执行的虚

  • ABAP程序运行效率

    程序的效率是每个程序员都应该重视的,无论您是采用哪一种语言进行开发.程序有时候越短,并不一定越快,有时候程序很多代码,但不一定会很慢.性能是一把双刃剑,获得时间效率的同时,牺牲的是空间的开销.这里提供一些建议以提高你的程序运行速度和减低系统

  • Tirobn不同版本的exe文件造成的程序运行错误

    问题的现象是执行Tribon二次开发程序,程序界面点击按钮没有反应。换一个Tribon模块用Toolbar手动载入执行程序没有问题。从Log看不出来有任何提示。查看Tribon模块的exe文件并不是旧文件,但是在另外一台机器上执行相同的程序

  • Java程序运行机制

    Java语言是一种特殊的高级语言,它既具有解释性语言的特征,也具有编译型语言的特征,因为Java程序要经过先编译,后解释两个步骤。高级语言的运行机制计算机高级语言按程序的执行方式可以分为:编译型和解释型两种。编译型的语言指使用专门的编译器、

  • 黑马程序员 JAVA程序运行机制

    java有两种核心机制:java虚拟机(JavaVirtualMachine):垃圾收集机制(Garbagecollection)这两种机制在支持着java程序的运行Java虚拟机(JVM)Java虚拟机(JVM)一种用于计算机设备的规范,

  • PHP仿牌空间 支持各种开源程序运行

      PHP仿牌主机,支持各种开源程序运行,我们有各种php版本系统,能够友好的支持PHP仿牌程序。  CentOS5.6-6.2都能能够支持,从开源ecshop、shopex、zencart、magento、opencart已经国外其他开源

  • JRE 安装和配置,以适合JAVA程序运行所具备的环境linux

    参考:http://www.linuxsir.org/main/?q=node/59JAVA程序的运行必须要安装JAVARUNTIME,也就是运行所需要的环境;我们可以通过安装JRE或者JDK所获得;如果我们只是应用不是开发,只下载JRE的

  • 改善C#程序,提高程序运行效率的50种方法

    一、用属性代替可访问的字段  1、.NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处;  2、在属性的get和set访问器重可使用lock添加多线程的支持。  二、readonly(运行时常量)和const(编译时常量)  1、

  • 禁止程序运行的方法

    1.通过注册表或组策略限制程序运行打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer键,在下面建一DWORD值,名称为“Disall

  • 关于程序运行时的内存分配(堆栈等...)

    首先堆栈的意思是:堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆:顺序随意栈:后进先出(Last-In/First-Out)一个由C/C++编译的程序占用的内存

  • mfc程序运行机制

    学MFC,竟然还不知道MFC的MAIN函数在什么地方?怎么运行的?实在不高明。正在装载数据……看过候捷(JJHOU)老师的《深入浅出MFC》的,对它一定很熟悉。呵呵,本文是献给没有看过那本书,但是又很希望学习MFC程序设计的朋友的。(没有看

  • 如何方便的指定Java程序运行所需要的所有jar包

    初学Java的人经常遇到的一个问题是:如果一个程序依赖某个文件夹下的一堆jar包,那么启动它的时候就需要在java-cp参数后面一个一个的加上jar包的名称,很不方便。比如主程序类叫Main,在目录lib下有aaa.jar,bbb.jar,

  • ThinkPHP 程序运行流程总结 加载文件的顺序

    记录下加载文件的顺序,有利于对框架的理解,方便以后利用框架开发。首先从入口文件进入require(THINK_PATH."/ThinkPHP.php");接着加载框架入口文件,在框架入口文件中通过缓存或者build_runtime()加载核

  • C#程序运行过程

    第一部:进入staticvoidMain()第二部:运行staticvoidMain()中的Application.Run(newForm1());在这中间对窗体进行构造。2.1执行privateSystem.ComponentModel.

  • linux环境下方便的指定Java程序运行所需要的所有jar包

    比如主程序类叫Main,在目录lib下有aaa.jar,bbb.jar,ccc.jar,则需要输入以下命令才能执行:java-cplib/aaa.jar;lib/bbb.jar;/lib.ccc.jarMain(linux系统下用冒号,wi

  • 黑马程序员—JAVA程序运行的机制

    ----------------------android培训、java培训、期待与您交流!----------------------java有两种核心机制:java虚拟机(JavaVirtualMachine):垃圾收集机制(Garba

  • C程序运行的进程地址空间

    【南京诺博源】【南京诺博源怎么样】【南京软件开发】【南京游戏开发】【南京PHP培训】【南京诺博源】提醒:一个成功的男人背后,至少有一个伟大的女人;一个不成功的男人,至少有一双手。【南京诺博源】而一个C程序,无论成功不成功,它的背后一定有一个

  • Android开发环境搭建:SDK在线离线安装+在Eclipse中配置ADT+第一个Android程序运行

    欢迎访问我的新个人主页http://dongyuxi.github.ioAndroid开发环境搭建上个月为了参加Google举办的Android大学生挑战赛,搭建了Android开发环境,虽然一个晚上在视频教程和网络资源的帮助下离线安装好了

返回
顶部