请问如何关闭WINDOWS,获得计算机名,和屏蔽CTRL+ALT+DEL
谢谢

解决方案 »

  1.   

    改计算机名
    改变计算机在网络中的名字,重新启动后才生效
    SetComputerName('Hello World');控制热启动
    要使系统的热启动键(Ctrl+Alt+Del)失效,使用以下语句
    SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
    要恢复系统的热启动键(Ctrl+Alt+Del),使用以下语句
    SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);临时路径
    有时需要Windows的临时路径来做备份等工作,那么就要知道路径在哪,下面的程序帮你忙:
    var aa:pchar;
    begin
    GetTempPath(20,aa); //返回路径名
    edit1.text:=aa;
    end;关闭Windows
    控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数
    首先定义常数
    const
    EWX_FORCE=4; //关闭所有程序并以其他用户身份登录
    EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
    EWX_REBOOT=2; //重新启动计算机
    EWX_SHUTDOWN=1;//关闭计算机
    运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句
    ExitWindowsEx(How,0);关闭外部应用程序
    如何在 Delphi 应用程序中, 去关闭外部已开启的应用程序?
    下面给出一段在 Delphi 中关闭"计算器"程序为例:
    var
    HWndCalculator : HWnd;
    begin
    // find the exist calculator window
    HWndCalculator := Winprocs.FindWindow(nil, '计算器'); // close the exist Calculator
    if HWndCalculator <> 0 then
    SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
    end;得到执行程序的目录
    SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 用哪一个?没有太大的关系。
    不过有以下的差别: ExtractFilePath 传回值的最後一个字元是反斜杠"/"。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowMessage(ExtractFileDir(Application.Exename));
    // ie: c:
    ShowMessage(ExtractFilePath(Application.Exename));
    // ie: c:\parend;
    相同点: 如果执行文件在根目录下(如:C:.EXE)的话, 两者的传回值相同, 且最后一个字符都是"/"。
      

  2.   

    都是猛料上的
    ---------------
    获得计算机名
    var
       CNameBuffer : PChar;
      fl_loaded : Boolean;
      CLen : ^DWord;begin    GetMem(CNameBuffer,255);
        New(CLen);
        CLen^:= 255;    fl_loaded := GetComputerName(CNameBuffer,CLen^);    if fl_loaded then
          ComputerName := StrPas(CNameBuffer)
        else
          ComputerName := 'Unkown';    FreeMem(CNameBuffer,255);
        Dispose(CLen);end;
    ---------------------------------------
    关闭WINDOWS
    控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数
    首先定义常数
    const
    EWX_FORCE=4; //关闭所有程序并以其他用户身份登录
    EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
    EWX_REBOOT=2; //重新启动计算机
    EWX_SHUTDOWN=1;//关闭计算机
    运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句
    ExitWindowsEx(How,0);///////////////////////////////////////////
    Function ShutDownWindows(Flags: Byte) : Boolean;
    begin
         Result := ExitWindowsEx(Flage, 0)
         // 如果成功返回 True.
    end;Flags可用参数:EWX_LOGOFF:
      (=0)
      安全地关闭所有进程,并关闭用户登录。EWX_SHUTDOWN:
      (=1)
      关闭系统。所有缓冲区的内容都能被安全的存盘,所有进程都将被停止。
      对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。
      对于Windows 95: 不必有任何特权。EWX_REBOOT:
      (=2)
      关闭并重新启动系统。
      对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。
      对于Windows 95: 不必有任何特权。EWX_FORCE:
      (=4)
       强制切断连接,关闭所有应用程序。当使用这个参数时,Windows 将不向正在运行的应用程序发送 WM_QUERYENDSESSION 和 WM_ENDSESSION 消息,有可能造成数据丢失。所以推荐只在紧急时使用这个参数。EWX_POWEROFF:
      (=8)
      关闭系统并切断电源,需要ATX电源支持。
    /////////////////////////////////////
    ---------------------------------------------------------------------
    屏蔽CTRL+ALT+DEL    有时我们不希望程序被用户用Alt+Tab、Ctrl+Alt+Del、Ctrl+Esc等系统功能键打断(比如自动演示程序),那么该怎么做呢?提示你一点,在运行屏幕保护程序的时候,这些功能键都是不起作用的--也就是说,只要在你的程序运行过程中,“欺骗”一下Windows,使它自以为正处在屏幕保护状态就成了!请看下面这段代码:
          var
          temp : integer;
          begin
           SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0);
          end;
          当然,在程序结尾处千万别忘了恢复设置,把Windows“唤醒”。代码如下:
          var
          temp : integer;
          begin
           SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @temp, 0);
          end;