this slowpoke moves

Register Server

type
  TDLLRegisterServer = function:DWORD;
  TDLLUnregisterServer = function:DWORD;

function RegisterServer(const Filename: String): Boolean;
var
  hLib: THandle;
  ProcAddress: TDLLRegisterServer;
begin
  Result := False;
  hLib := LoadLibrary(PChar(Filename));
  if hLib <> 0 then
  begin
    @ProcAddress := GetProcAddress(hLib, 'DllRegisterServer');
    if Assigned(ProcAddress) then
    begin
      Result := ProcAddress = S_OK;
    end
  end
end;

function UnregisterServer(const Filename: String): Boolean;
var
  hLib: THandle;
  ProcAddress: TDLLUnregisterServer;
begin
  Result := False;
  hLib := LoadLibrary(PChar(Filename));
  if hLib <> 0 then
  begin
    @ProcAddress := GetProcAddress(hLib, 'DllUnregisterServer');
    if Assigned(ProcAddress) then
    begin
      Result := ProcAddress = S_OK;
    end
  end
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if OpenDialog1.Execute then Edit1.Text := OpenDialog1.FileName;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not RegisterServer(Edit1.Text) then
    ShowMessage(SysErrorMessage(GetLastError));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if not UnregisterServer(Edit1.Text) then
    ShowMessage(SysErrorMessage(GetLastError));
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate