![]() |
![]() ![]() ![]() ![]() |
|
Создать Системную Точку Восстановления (XP)Delphi , ОС и Железо , WindowsСоздать Системную Точку Восстановления (XP)
Оформил: DeeCo
{
If you haven't installed the Microsoft Scripting Control yet
(TScriptControl component),
get it from http://www.msdn.microsoft.com/scripting/
Once you've downloaded and run the installation, start Delphi and go to the
Component | Import ActiveX Control... menu.
Select "Microsoft Script Control 1.0" from the Listbox amd click "Install"
to install the component into Delphi's palette.
What you should end up with now is a TScriptControl component on your ActiveX tab.
Start a new application, and drop a TButton, and a TScriptControl onto the main form.
In the OnClick event of Button1, put the following code:
}
{
Wenn du das Microsoft Scripting Control noch nicht installiert hast
(Komponente TScriptControl), dann kannst du hier runterladen:
http://www.msdn.microsoft.com/scripting/
Nachdem Herunterladen und der Installation wahle in der Delphi IDE unter dem
Menu "Komponente" den Menupunkt "ActiveX importieren".
Dann in der Listbox "Microsoft Script Control 1.0" auswahlen und "Installieren..."
anklicken.
Nun sollte die TScriptControl Komponente unter dem ActiveX Register zu finden sein.
Plaziere nun eine TScriptControl Komponente und einen TButton auf einer Form und
schreibe im OnClick Ereignis des Buttons den folgenden Code:
}
procedure TForm1.Button1Click(Sender: TObject);
var
sr: OLEVAriant;
begin
ScriptControl1.Language := 'VBScript';
sr := ScriptControl1.Eval('getobject("winmgmts:\\.\root\default:Systemrestore")');
if sr.CreateRestorePoint('Automatic Restore Point', 0, 100) = 0 then
ShowMessage('New Restore Point successfully created.')
// Wiederherstellungspunkt erfolgreich erstellt
else
ShowMessage('Restore Point creation Failed!');
// Wiederherstellungspunkt Erstellung fehlgeschlagen.
end;
{*****************************************************}
{2. Using the SRSetRestorePoint() API from SrClient.dll}
// Translation from SRRestorePtAPI.h
const
// Type of Event
BEGIN_SYSTEM_CHANGE = 100;
END_SYSTEM_CHANGE = 101;
// Type of Restore Points
APPLICATION_INSTALL = 0;
CANCELLED_OPERATION = 13;
MAX_DESC = 64;
MIN_EVENT = 100;
// Restore point information
type
PRESTOREPTINFOA = ^_RESTOREPTINFOA;
_RESTOREPTINFOA = packed record
dwEventType: DWORD; // Type of Event - Begin or End
dwRestorePtType: DWORD; // Type of Restore Point - App install/uninstall
llSequenceNumber: INT64; // Sequence Number - 0 for begin
szDescription: array [0..MAX_DESC] of CHAR; // Description - Name of Application / Operation
end;
RESTOREPOINTINFO = _RESTOREPTINFOA;
PRESTOREPOINTINFOA = ^_RESTOREPTINFOA;
// Status returned by System Restore
PSMGRSTATUS = ^_SMGRSTATUS;
_SMGRSTATUS = packed record
nStatus: DWORD; // Status returned by State Manager Process
llSequenceNumber: INT64; // Sequence Number for the restore point
end;
STATEMGRSTATUS = _SMGRSTATUS;
PSTATEMGRSTATUS = ^_SMGRSTATUS;
function SRSetRestorePointA(pRestorePtSpec: PRESTOREPOINTINFOA; pSMgrStatus: PSTATEMGRSTATUS): Bool;
stdcall; external 'SrClient.dll' Name 'SRSetRestorePointA';
// Example how to create and cancel a previous restore point.
// Ref: http://tinyurl.com/78pv
procedure TForm1.Button1Click(Sender: TObject);
const
CR = #13#10;
var
RestorePtSpec: RESTOREPOINTINFO;
SMgrStatus: STATEMGRSTATUS;
begin
// Initialize the RESTOREPOINTINFO structure
RestorePtSpec.dwEventType := BEGIN_SYSTEM_CHANGE;
RestorePtSpec.dwRestorePtType := APPLICATION_INSTALL;
RestorePtSpec.llSequenceNumber := 0;
RestorePtSpec.szDescription := 'SAMPLE RESTORE POINT';
if (SRSetRestorePointA(@RestorePtSpec, @SMgrStatus)) then
begin
ShowMessage('Restore point set. Restore point data:' + CR+
'Sequence Number: ' + Format('%d', [SMgrStatus.llSequenceNumber]) + CR+
'Status: ' + Format('%u', [SMgrStatus.nStatus]));
// Restore Point Spec to cancel the previous restore point.
RestorePtSpec.dwEventType := END_SYSTEM_CHANGE;
RestorePtSpec.dwRestorePtType := CANCELLED_OPERATION;
RestorePtSpec.llSequenceNumber := SMgrStatus.llSequenceNumber;
// This is the sequence number returned by the previous call.
// Canceling the previous restore point
if (SRSetRestorePointA(@RestorePtSpec, @SMgrStatus)) then
ShowMessage('Restore point canceled. Restore point data:' + CR+
'Sequence Number: ' + Format('%d', [SMgrStatus.llSequenceNumber]) + CR+
'Status: ' + Format('%u', [SMgrStatus.nStatus]))
else
ShowMessage('Couldn''t cancel restore point.');
end
else
ShowMessage('Couldn''t set restore point.');
end;
end;
Перевод контента на русский язык: Код, предоставленный ниже, создает точку восстановления системы (SR) с помощью двух различных методов: Microsoft Scripting Control и SRSetRestorePoint() API из SrClient.dll. Метод 1: Использование Microsoft Scripting Control Этот метод использует VBScript для взаимодействия с пространством имен Windows Management Instrumentation (WMI). Функция Код создает компоненты TButton и TScriptControl на форме и в событии OnClick кнопки устанавливает язык ScriptControl-компонента на VBScript и оценивает скрипт, создавший новую точку восстановления с именем "Automatic Restore Point". Метод 2: Использование SRSetRestorePoint() API из SrClient.dll Этот метод использует функцию SRSetRestorePoint() из библиотеки SrClient.dll для создания и отмены предыдущей точки восстановления. Функция принимает два параметра: Код инициализирует структуру RESTOREPOINTINFO с желаемыми значениями для точки восстановления, такими как тип события (BEGIN_ SYSTEM_CHANGE), тип точки восстановления (APPLICATION_INSTALL), последовательный номер (0) и описание ("SAMPLE RESTORE POINT"). Функцию Затем код отменяет предыдущую точку восстановления, установив тип события в END_ SYSTEM_CHANGE и тип точки восстановления в CANCELLED_OPERATION. Последовательный номер устанавливается в значение, возвращенное предыдущим вызовом функции Если отмена успешна, отображается сообщение об информации о отмененной точке восстановления. Если отмена неудачна, отображается сообщение об ошибке. Улучшения
В примере ниже показано, как код мог быть улучшен: В улучшенном коде используется отдельный класс Создать Системную Точку Восстановления (XP) для создания и удаления точек восстановления в системе Windows XP. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||