AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Lokalen COM-Server registrieren???
Thema durchsuchen
Ansicht
Themen-Optionen

Lokalen COM-Server registrieren???

Ein Thema von romber · begonnen am 30. Mai 2010 · letzter Beitrag vom 31. Mai 2010
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Lokalen COM-Server registrieren???

  Alt 30. Mai 2010, 23:23
Hallo!

Ich habe in mein Projekt einen lokalen COM-Server eingebunden und möchte diesen registrieren. Wie mache ich das?
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#2

Re: Lokalen COM-Server registrieren???

  Alt 30. Mai 2010, 23:33
Du willst die DLL registrieren?

Das geht z.B. so:
Delphi-Quellcode:
// Register a DLL
function RegisterDLL(dllname: string) : boolean ;
type
  TRegFunc = function : HResult; stdcall;
var
  ARegFunc : TRegFunc;
  aHandle : THandle;
  ocxPath : string;
begin
 try
  Result := true ;
  if DirectoryExists(ExtractFilePath(dllname))
  then ocxPath := dllname
  else ocxPath := ExtractFilePath(Application.ExeName) + dllname ;

  aHandle := LoadLibrary(PChar(ocxPath));
  if aHandle <> 0 then
  begin
    ARegFunc := GetProcAddress(aHandle,'DllRegisterServer');
    if Assigned(ARegFunc) then
    begin
      ExecAndWait('regsvr32','/s "' + ocxPath + '"');
    end;
    FreeLibrary(aHandle);
  end
  else
   Result := false ;
 except
  Result := false ;
 end;
end;


// Execute something and wait till finished
function ExecAndWait(const ExecuteFile : string; const ParamString : string = ''; const ExecWindowStatus: Integer = SW_NORMAL): boolean;
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
begin
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);
  with SEInfo do begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    lpParameters := PChar(ParamString);
    nShow := ExecWindowStatus;
  end;
  if ShellExecuteEx(@SEInfo) then
  begin
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
      sleep(1) ;
    until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
    Result:=True;
  end
  else Result:=False;
end;
Aufruf:

RegisterDLL(VollerPfadZuMeinerDLL);
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: Lokalen COM-Server registrieren???

  Alt 31. Mai 2010, 00:05
Vielen Dank für die schnelle Antwort!

Nein, das ist keine DLL, sondern eine ausführbare Datei, in die ein COM-Server integriert ist. Diesen Server möchte ich registrieren.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Lokalen COM-Server registrieren???

  Alt 31. Mai 2010, 06:42
regsvr32 <Exename>
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#5

Re: Lokalen COM-Server registrieren???

  Alt 31. Mai 2010, 07:27
Auf der Kommandozeile: <exename> /register
Uwe Raabe
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#6

Re: Lokalen COM-Server registrieren???

  Alt 31. Mai 2010, 08:54
Vielen Dank!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Lokalen COM-Server registrieren???

  Alt 31. Mai 2010, 16:38
Zitat von romber:
Nein, das ist keine DLL, sondern eine ausführbare Datei, in die ein COM-Server integriert ist. Diesen Server möchte ich registrieren.
Ausführbare Dateien (*.exe) lassen sich per Übergabeparameter registrieren:
Code:
C:\Test\> MeinProgramm.exe /regserver
Es sind Administratorrechte erforderlich!!
Der Parameter /register funktioniert (zumindest bei älteren Delphi Versionen) nicht.
Wenn man das Programm normal ohne Übergabeparameter startet wird ebenfalls eine Registrierung ausgeführt.
Der Parameter /regserver bewirkt also nur, dass das Programm nach der Registrierung beendet wird, bevor auch nur das Hautpformular sichtbar wird.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz