Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TService - Druckerproblem! (https://www.delphipraxis.net/12374-tservice-druckerproblem.html)

negaH 26. Nov 2003 13:41

Re: TService - Druckerproblem!
 
Eine Bemerkung noch: einen Service zu schreiben der Interaktiv ist, ist im grunde schwachsinnig. Interaktive Services unterwandern den eigentlichen Sinn von Services und somit auch die Sicherheit. Sie sind im Grunde schlimmer, eg. unsicherer, als normale Anwendungen.

Einen interaktiven Service kannste auch als normale Anwendung programmieren, und dies wäre dann vom Sicherheitskonzept sinnvoller und erspart dir viel Arbeit.
Normalerweise sollte ein Service nicht interaktiv sein, und falls notwendig wird eine zweite Anwendung installiert die dann die Informationen zum Service anzeigen und ändern kann.

Gruß Hagen

Killi138 26. Nov 2003 13:43

Re: TService - Druckerproblem!
 
brauch aber ne gute Lösung um ein externes Programm VOR allem anderen zu starten - dass man nicht auf die TaskBar kommt...

negaH 26. Nov 2003 13:46

Re: TService - Druckerproblem!
 
Dein TForm sollte in TService.OnExecute() erzeugt und auch wieder freigegeben werden. Bedenke in Serives ist alles Thread-basiert.

Gruß Hagen

Killi138 26. Nov 2003 13:48

Re: TService - Druckerproblem!
 
das ist bisher so:

Code:
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var
  ProcID: PCardinal;
begin
RunProcess(ExtractFilePath(ParamStr(0)) + 'Disco.exe', SW_MINIMIZE, TRUE, ProcID);

end;

function TService1.RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PCardinal): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb         := SizeOf(StartupInfo);
  StartupInfo.dwFlags    := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;

dai ich ja kein form anzeigen will, sondern ein Programm starte...

Killi138 26. Nov 2003 15:00

Re: TService - Druckerproblem!
 
weiß keiner woran es liegen könnte?

Killi138 26. Nov 2003 15:02

Re: TService - Druckerproblem!
 
weiß keiner woran es liegen könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr.
Seite 2 von 2     12   

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