📄 main.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 + -