Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Ich fand das Tut auch ganz ok.
Was mir fehlte war ein Herunterladbares Beispielprojekt. Ich habe es mir nun selbst so nachgestellt, um einen eigenen Service zu erstellen. Allerdings habe ich da noch ein kleines Problem. Ich habe mir auf das Formular der Unit1 eine TServerSocket gelegt, weil ich im Hintergrund eine solche permanente interne Verbindung zwischen verschiedenen lokalen Applikationen benötige und nicht will, dass der User eventuell vergisst die entsprechende Applikation zu starten. Der Service lässt sich kompilieren und auch installieren, aber ich kann mich mit keiner TClientSocket auf den Server verbinden. Woran kann das liegen? Ich habe die gleichen Einstellungen der Server-Komponente mal in einer einfach Beispiel-Applikation nachgestellt. Da ist es mir durchaus möglich mich zu verbinden. Was ist hier das Problem? Muss ich Zusatzeinstellungen vornehmen? Denn soweit ich weiss, ist es durchaus möglich einen Service auch als Server laufen zu lassen. |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Ich weiss nicht, aber in Zeiten von Vista kommt mir mein Tutorial von damals ziemlich ... veraltet ... vor :zwinker:
|
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Zitat:
Im Übrigen würde auch ich mich über ein Beispielscode insbesondere unter Einbeziehung eines TTimer sehr freuen. |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Hallo,
hab ein problem, versuche nach dem tut einen dienst für Vista mit TurboDelphi zu erstellen. habe allerdings probleme damit, installieren funkt einwandfrei aber beim starten bekomme ich immer "Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung." Die message boxes, oncreate und afterinstall werden einwandfrei angezeigt... mein code:
Delphi-Quellcode:
bin für jede hilfe dankbar!implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall; begin Service2.Controller(CtrlCode); end; function TService2.GetServiceController: TServiceController; begin Result := ServiceController; end; procedure TService2.ServiceAfterInstall(Sender: TService); begin ShowMessage('AfterInstall'); end; procedure TService2.ServiceAfterUninstall(Sender: TService); begin ShowMessage('AfterUnistall'); end; procedure TService2.ServiceCreate(Sender: TObject); begin ShowMessage('OnCreate'); end; procedure TService2.ServiceExecute(Sender: TService); begin ShowMessage('OnExecute - begin'); while not Terminated do begin ServiceThread.ProcessRequests(False); end; ShowMessage('OnExecute - end'); end; procedure TService2.ServiceStart(Sender: TService; var Started: Boolean); begin ShowMessage('OnStart'); Started := true; end; procedure TService2.ServiceStop(Sender: TService; var Stopped: Boolean); begin ShowMessage('OnStop'); Stopped := true; end; end. lg martin |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Hallo zusammen,
weis niemnad etwas darüber? Habe mittlerweile versucht den oben geposteten dienst unter winxp laufen zu lassen, mit dem gleichen resultat wie in vista.. |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Was meint Google?
[google]Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung.[/google] |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Danke, aber Google hatte ich vorher schon ohne Erfolg bemüht...
Aber ich hab das Problem mitllerweile durch Herumprobieren gefunden: Wenn ich alle ShowMessage entferne und durch LogFile schreiben ersetze funzt es plötzlich auf XP und VISTA... Enfernen der Messages hatte ich sowieso vor aber, weils halt als einfaches BSP so gepostet war hatte ichs vergeblich so probiert... |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Zitat:
Evtl hängt das damit zusammen: [equote="MaBuSE schrieb in http://www.delphipraxis.net/internal...14ab97e#478354 "] Zitat:
Zitat:
Ansonsten hat Luckie Recht ;-)[/equote] Solange der Dialog erscheint, und nicht OK gedrückt wird, steht der Dienst. Das würde den Timeout erklären. Dumm nur wenn der Dialog nicht angezeigt wird, weil nicht interaktiv. Ist aber nur eine Vermutung. Ich habe mich bisher noch nicht mit Vista beschäftigt. |
Re: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win
Zitat:
Jedoch hat er beim install/uninstall jene von OnCreate, AfterInstall usw. angezeigt, deswegen hatte ich anfangs geglaubt das kann es nicht sein -> aber da wahr ich auf dem falschen Weg. :wall: Der Grund wird wohl sein weil man ja beim install/uninstall die EXE 'normal' ausführt... |
AW: Wie erstelle ich einen Dienst für WinNT / Win2000 / Win XP
Liste der Anhänge anzeigen (Anzahl: 1)
hi , ich hab mal zum testen einen dienst geschrieben und den in nem virtuellen win7 x64 installiert. jedoch lässt sich der dienst einfach nicht starten ...
was mach ich da falsch??? interactive ist auf true bilder sind in der rar so hab ich den dienst registriert:
Delphi-Quellcode:
function ServiceRegister(szMachine, szServiceFile, szServiceName,
szDisplayName: pchar): Boolean; var h_manager, h_svc: SC_Handle; begin Result := false; h_manager := OpenSCManager(szMachine, nil, SC_MANAGER_ALL_ACCESS); if h_manager > 0 then begin h_svc := CreateService(h_manager, szServiceName, szDisplayName, SERVICE_START or SERVICE_QUERY_STATUS or _DELETE, SERVICE_WIN32_OWN_PROCESS, // or SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, szServiceFile, nil, nil, nil, nil, nil); if h_svc > 0 then begin result := true; CloseServiceHandle(h_svc); end; CloseServiceHandle(h_manager); end; end;
Delphi-Quellcode:
und so den dienst geschrieben:
ServiceRegister(pchar(edit2.text),pchar(edit3.Text),pchar(edit1.text),pchar(edit4.text));
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ExtCtrls; type TService1 = class(TService) procedure ServiceExecute(Sender: TService); procedure ServiceStart(Sender: TService; var Started: Boolean); private { Private-Deklarationen } public function GetServiceController: TServiceController; override; { Public-Deklarationen } end; var Service1: TService1; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end; function TService1.GetServiceController: TServiceController; begin Result := ServiceController; end; procedure TService1.ServiceExecute(Sender: TService); begin // ShowMessage('OnExecute - begin'); while not Terminated do begin ServiceThread.ProcessRequests(False); end; // ShowMessage('OnExecute - end'); end; procedure TService1.ServiceStart(Sender: TService; var Started: Boolean); begin Started := True; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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