⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 是和Delphi 编程精选集锦书本配套的源码
💻 PAS
字号:
//************************************************//
// Author:Youzhen
// Date: 2000/08/09
// Version: 1.0
//
// This Is A Dll File For Config ScreenSave
//
// Don't Use TString In Dll File !
// Use shortstring Instead of TString !
//
// Topic Function:
//         AssignFile
//         Reset
//         Rewrite
//         CloseFile
//         Erase
//         Eof
//
//
//************************************************//
unit Main;

interface

uses
   SysUtils,Dialogs,
   My_Registry,My_API,My_API_for_Systemini;

function yz_Config_ScreenSave_By_API
          (Input_New_Password:shortstring;
           Input_Minutes:integer;
           ScreenSave_File_Name:shortstring;
           Temp_File_Name:shortstring;
           Open_Or_Close:boolean):boolean;

implementation

function yz_Config_ScreenSave_By_API
          (Input_New_Password:shortstring;
           Input_Minutes:integer;
           ScreenSave_File_Name:shortstring;
           Temp_File_Name:shortstring;
           Open_Or_Close:boolean):boolean;

var My_Temp_File:TextFile;
    S:shortstring;
    Input_Active_Or_InActive:shortstring;
    // '0' := InActive  AND '1' := Active
    ScreenSaveUsePassword_Active_Or_InActive:shortstring;
    // '0' := InActive  AND '1' := Active
    Input_Minutes_String:shortstring;
    // =IntToStr(Input_Minutes)

    Output_String:shortstring;
      // Output Form System.ini
    Output_String1:shortstring;
      // Output The Original ScreenSaveUsePassword
    Output_String2:shortstring;
      // Output The Original ScreenSave_Data (Has Decoded)
    Output_String3:shortstring;
      // Output The Original SPI_GETSCREENSAVETIMEOUT
    Output_String4:shortstring;
      // Output The Original SPI_GETSCREENSAVEACTIVE
begin
  Result:=false;
  if Open_Or_Close then // The Main Program Open !
    begin
    try
      AssignFile(My_Temp_File,Temp_File_Name);
      Rewrite(My_Temp_File);


      // Output The Original ScreenSave File Name In System.ini !
      My_GetPrivateProfileString(
        'boot','scrnsave.exe','This is null!',
        Output_String,100,'system.ini');

      if Output_String='This is null!' then
        begin
          Writeln(My_Temp_File,'');
        end
      else
        begin
          Writeln(My_Temp_File,Output_String);
        end;

      // Change The System.ini File
      // And This Must Happen Before
      // My_Set_SPI_SETSCREENSAVEACTIVE Event !!!
      My_WritePrivateProfileString(
        'boot','scrnsave.exe',
        ScreenSave_File_Name,'system.ini');



      // Output The Original ScreenSaveUsePassword In Registry !
      // And Output The Original ScreenSave_Data In Registry !

      if My_Read_Key(Output_String1,Output_String2)
         // Unit My_Registry
          then
        begin
          Writeln(My_Temp_File,Output_String1);
          Writeln(My_Temp_File,Output_String2);
        end
      else
        begin
          Exit;
        end;

      // Output The Original SPI_GETSCREENSAVETIMEOUT
      Output_String3:=My_Get_SPI_GETSCREENSAVETIMEOUT;
        // Unit My_API
      Writeln(My_Temp_File,Output_String3);

      // Output The Original SPI_GETSCREENSAVEACTIVE
      Output_String4:=My_Get_SPI_GETSCREENSAVEACTIVE;
        // Unit My_API
      Writeln(My_Temp_File,Output_String4);

      CloseFile(My_Temp_File);


      // Set SPI_SETSCREENSAVETIMEOUT By API Function
      Input_Minutes_String:=IntToStr(Input_Minutes);
      My_Set_SPI_SETSCREENSAVETIMEOUT(Input_Minutes_String);
        // Unit My_API

      // Set SPI_SETSCREENSAVEACTIVE By API Function
      Input_Active_Or_InActive:='1';
      My_Set_SPI_SETSCREENSAVEACTIVE(Input_Active_Or_InActive);
        // Unit My_API

      // Set ScreenSaveUsePassword Active
      // And Set New ScreenSave_DataIn Registry !!!
      ScreenSaveUsePassword_Active_Or_InActive:='1';
      if not My_Create_Key(Input_New_Password,
               ScreenSaveUsePassword_Active_Or_InActive) then
               // Unit My_Registry
        begin
          Exit;
        end;

    except on E:EInOutError do
      begin
        MessageDlg(E.Message,
                   mtInformation,[mbOk],0);
        Exit;
      end;
    end;
    end
  else // The Main Program Close !
    begin
    try

      Assign(My_Temp_File,Temp_File_Name);
      Reset(My_Temp_File);

      Readln(My_Temp_File,S);
      ScreenSave_File_Name:=S;
      // The Original ScreenSave File Name In System.ini !
      // Resume The System.ini File
      // And This Must Happen Before
      // My_Set_SPI_SETSCREENSAVEACTIVE Event !!!
      My_WritePrivateProfileString(
        'boot','scrnsave.exe',
        ScreenSave_File_Name,'system.ini');


      // Resume The Original ScreenSaveUsePassword In Registry !
      // And Resume The Original ScreenSave_Data In Registry !
      Readln(My_Temp_File,
        ScreenSaveUsePassword_Active_Or_InActive);
      Readln(My_Temp_File,
        Input_New_Password);
      if not My_Create_Key(Input_New_Password,
               ScreenSaveUsePassword_Active_Or_InActive) then
               // Unit My_Registry
        begin
          Exit;
        end;

      // Resume The Original SPI_GETSCREENSAVETIMEOUT
      Readln(My_Temp_File,
        Input_Minutes_String);
      My_Set_SPI_SETSCREENSAVETIMEOUT(Input_Minutes_String);
        // Unit My_API

      // Resume The Original SPI_GETSCREENSAVEACTIVE
      Readln(My_Temp_File,
        Input_Active_Or_InActive);
      My_Set_SPI_SETSCREENSAVEACTIVE(Input_Active_Or_InActive);
        // Unit My_API

      CloseFile(My_Temp_File);

      Erase(My_Temp_File);
      // Delete The Temp File
    except on E:EInOutError do
      begin
        MessageDlg(E.Message,
                   mtInformation,[mbOk],0);
        Exit;
      end;
    end
    end;
  Result:=true;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -