unit regunit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
activex, wmiserv, WbemScripting_TLBa, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
WBEMLocator: SWBEMLocator;
WBEMServices: ISWBEMServices;
regobject: ISWBemObject;
InParam, OutParam: ISWBemObject;
InProp: ISWBemProperty;
outv: Olevariant;
begin
WBEMLocator := WMIStart;
WBemServices := WMIRegConnect(WBEMLocator, '', '', '');
WMIGetMethodInfo(WBEMServices, regobjstring, 'GetExpandedStringValue',
regobject, InParam);
WMISetValue(InParam, 'hDefKey', HKEY_CURRENT_USER);
WMISetValue(InParam, 'sSubKeyName', 'Control Panel\Desktop');
WMISetValue(InParam, 'sValueName', 'Wallpaper');
OutParam := regobject.ExecMethod_('GetExpandedStringValue', InParam, 0, nil);
// output value is SValue
InProp := OutParam.Properties_.Item('sValue', 0);
outv := InProp.Get_Value;
ShowMessage(outv); // the value of the registry key
end;
end.