我想让我的程序里面加上开机就启动,并且占据屏幕程序关闭就自动关机?分不够另外开帖!!!急!

解决方案 »

  1.   

    希望能对你有帮助:有时需要让Windows在启动时自动运行你的程序,如何在程序中实现呢? 使用Regedit查找HKEY_LOCALMACHINE,你会发现所有的Windows启动时调用的程序都在这里,于是你将你的程序增加在这里就可以了。名称为你的程序的标题,其值为你的程序的执行路径和文件名称。 在程序中实现可以使用TRegIniFile或者使用TRegistry都可以。 User Registry;     Var RegF:TRegistry;     begin      RegF:=TRegistry.Create;      RegF.RootKey:=HKEY_LOCAL_MACHINE;     try      RegF.OpenKey('SOFTWARE\parWindows',True);      RegF.WriteString('MyProg', "Mypr-og.exe"');     except      ...      End; {try}     RegF.Close;    RegF.Free;     end;
      

  2.   


    一、写入注册表或启动组或win.ini(9x)让程序自启动。
        写到注册表的函数:
    uses Registry;
    procedure writeToAutorun(filename:string);
    var
      reg:TRegistry;
      s:string;
    begin
      s:=filename;
      s:=extractFilename(s);
      if length(s)>4 then
        s:=leftStr(s,length(s)-4);
      reg:=TRegistry.Create;
      reg.RootKey:=HKEY_LOCAL_MACHINE;
      try
        reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\run',true);
        reg.WriteString(s,extractfilename(filename));
      finally
        REG.CloseKey;
        reg.Free;
      end;
    end;在程序中如下调用:
    writeToAutorun(Application.exename);二、要全屏很简单:
        form1.left:=0;form1.top:=0;form1.width:=screen.width;form1.height:=screen.height;form1.formStyle:=fsStayOnTop;三、要屏蔽系统热键Ctrl+Alt+Del
    在win9x下可以通过以下语句屏蔽掉:
    SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,nil,0);
    在winnt下则比较复杂,请搜索以前的帖子
      

  3.   

    四、关机函数//关闭win2000的过程///////////////////////////////////////////////////////////
    procedure ExitWin2000(ewx: integer);  {ewx 1: 重启;2:关闭电源}
    var
      hToken: THANDLE;
      hProc: THANDLE;
      mLUID: TLargeInteger;
      mPriv, mNewPriv: TOKEN_PRIVILEGES;
      mBufferLength: DWord;
    begin
      if not (ewx in [1, 2]) then
        exit;
      hProc := GetCurrentProcess();
      OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken);
      LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID);
      mPriv.PrivilegeCount := 1;
      mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      mPriv.Privileges[0].Luid := mLUID;
      AdjustTokenPrivileges(hToken, False, mPriv, (4 + (12 * mPriv.PrivilegeCount)), mNewPriv, mBufferLength);
      case ewx of
        1: ExitWindowsEx(EWX_FORCE + EWX_REBOOT, 0);
        2: ExitWindowsEx(EWX_FORCE + EWX_POWEROFF, 0);
      end;
    end;
    //关闭计算机的过程/////////////////////////////////////////////////////////
    procedure shutDown();
    var
      os:OSVERSIONINFO;
    begin
      os.dwOSVersionInfoSize:=sizeOf(TOSversionInfo);
      getVersionEx(os);
      if (os.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS) then
        exitWindowsEx(EWX_SHUTDOWN,0);
      if (os.dwPlatformId=VER_PLATFORM_WIN32_NT) then
        exitWin2000(2);
    end;在主窗体的OnDestroy事件中写下
    shutDown(); 即可关闭计算机。