procedure tmain.create(sender:tobject);
var
   hold:string;
   found:HWND;
   zappname:array[0..127]of char;
begin    
//----------------限制程序执行次数----------------------
  hold:=application.Title;
   application.Title:='我的系统...'+inttostr(Hinstance);
   strpcopy(zappname,hold);
   found:=findwindow(nil,zappname);
   application.Title:=hold;
   if found<>0 then
   begin
        showwindow(found,SW_RESTORE);
        application.Terminate;
   end; 
//-----------------------------------------------------
end;
注:程序运行时只创建datamodule模块.当datamodule里的链接数据库函数链接成功后.创建Frm_Login登录窗体;并且显示;
当输入密码正确以后创建Frm_Main并且最小化Frm_Main窗体到系统任务栏;
请问如果才能限制程序执行次数?????
谢谢大家!!!

解决方案 »

  1.   

    跟注册机制有点相同...可在注册表中创建一个子项.每次运行程序时从注册表中读取该项的值..再作判断,如果没有达到限定的次数,则将值加1,比如:如果是大于1而小于10.则表示次数未到达,并且没有注册.....如果值是1则已经注册...具体请看下这个贴子:
    http://community.csdn.net/Expert/topic/5243/5243555.xml?temp=.2997553
      

  2.   

    首先谢谢mdejtod(稻草人)的回答;
    不好意思我打错了一个字.真的很抱歉;
    我的问题是:如何去限制程序运行次数....而不是执行次数;
    谢谢...
      

  3.   

    可以用互斥体解决,
      //程序开始时,定个名字如:YourProjName,创建互斥体
      hMutex := CreateMutex(nil, False, 'YourProjName');
      if GetLastError = ERROR_ALREADY_EXISTS then
        Halt;
    程序结束时
      ReleaseMutex(hMutex); // release the mutex as a politeness
      CloseHandle(hMutex);