Entwickler-Ecke
Windows API - Windows-Dienste steuern
delbor - Mi 24.02.10 19:32
Titel: Windows-Dienste steuern
Hi zusammen
In der Delphi-Lybrary hab ich diesen (
http://www.delphi-library.de/topic_einen+Service+startenstoppen_77.html) hochinteressanten Tip gefunden. Wie ich über die Suchfunktion in Erfahrung bringen konnte, entstammt der Tip jedoch einer Lazarus-Unit. In Delphi gibt es keine Unit WinSvc, und der Typ TServiceStatus wird von der Delphi-Help (RadStudio 2007) auch nicht gefunden. Wie lässt sich der Code dennoch in Delphi verwenden?
Gruss
Delbor
Noob23 - Mi 24.02.10 19:44
Hallo und Willkommen im Delphi-Forum,
wenn du nicht unbedingt diesen Quelltext nutzen willst, kannst du auch Dienste via Konsole starten und stoppen...
Wäre hilfreich wenn du sagst was du genau machen willst.
Grüße
Noob23
delbor - Mi 24.02.10 20:13
Hi noob23
Danke für deine schnelle Antwort.
Ich hab bei mir die IIS laufen, da ich mit Delphi eine Webanwendung am entwickeln bin. Andrerseits soll meine Website demnächst gründlich umgebaut werden, und dazu beabsichtige ich, ein freies CMS - voraussichtlich Typo3 und MySQL - zu verwenden.
Typo3 läuft allerdings unter Apache. Das bedeutet für mich: will ich mit Delphi an meiner Webanwendung arbeiten, rein in die Verwaltung, um die IIS von Hand abzuschalten und Apache zu starten, und umgekehrt, wenn ich mit Typo3 arbeiten will.
Was liegt da näher, als ein kleines Progrämmchen zu schreiben, das dies 'auf Knopfdruck' macht?
Zitat: |
...wenn du nicht unbedingt diesen Quelltext nutzen willst, kannst du auch Dienste via Konsole starten und stoppen... |
Ich frage ja eben, weil ich diesen Code nutzen will - aber eben in Delphi, nicht in Lazarus.
Gruss
Delbor
Xentar - Mi 24.02.10 20:23
delbor hat folgendes geschrieben : |
Was liegt da näher, als ein kleines Progrämmchen zu schreiben, das dies 'auf Knopfdruck' macht? |
Zwei unterschiedliche Ports verwenden, so dass die Anwendungen gleichzeitig laufen können?
Ansonsten: In der Konsole geht das mit "net start <Dienst>" bzw. net stop
Aufrufen mit ShellExecute.
delbor - Mi 24.02.10 20:36
Hi Xentar
Zitat: |
Zwei unterschiedliche Ports verwenden, so dass die Anwendungen gleichzeitig laufen können? |
Das ist wirklich alles, wenn Apache und die IIS nebeneinander laufen sollen?
Mann, das haut mich doch glatt aus den Pantoffeln !!
Und dabei hab ich vor längerer Zeit dieses Thema schon mal gewälzt....
Gruss
Delbor
Xentar - Mi 24.02.10 20:37
kA ob das dann geht, benutze weder Apache, noch IIS.
Aber da beides Webserver sind, und somit standardmäßig auf Port 80 lauschen, könnte dies ein Grund sein, warum das nicht geht..
Wüsste nicht, was da sonst gegen sprechen soll, beide parallel zu verwenden.
jaenicke - Mi 24.02.10 20:50
Ist auch so, ich hatte schon drei verschiedene Http-Server zum Testen konfiguriert, die problemlos nebeneinander liefen, das waren Apache aus Xampp, IIS und Server2Go. Mit unterschiedlichen Ports gibt es ja auch keinen Grund warum das nicht gehen sollte.
delbor hat folgendes geschrieben : |
In Delphi gibt es keine Unit WinSvc, und der Typ TServiceStatus wird von der Delphi-Help (RadStudio 2007) auch nicht gefunden. |
Hmm, bei mir (Delphi 2006) gibts die Unit und auch den Typ.
delbor - Mi 24.02.10 21:11
Hi zusammen
Ich hab eben mal die Windows-Suche angeworfen und die Suchresultate als jpg angehängt, da sich die Listview des Explorers nicht komplett kopieren lässt.
Gruss
Delbor
jaenicke - Mi 24.02.10 21:13
Eben, unter lib liegt die Unit doch ganz normal. Was passiert denn, wenn du die in die uses schreibst?
delbor - Mi 24.02.10 21:34
Hi jaenicke
Da passiert rein gar nichts - also auch keine Unbekannt-Markierung oder irgendwas á la 'Unitname kann nicht aufgelöst werden.
Da bleibt nur die Frage, wieso die Suche in der Help ergebnislos bleibt, wenn ich nach TServiceStatus suche.
D2005 war doch mal...
Aber wenn die Webserver nur über verschiedene Ports konviguriert werden müssen, brauchts das nicht wirklich. Da könnte man doch glatt mit Typo3 und Delphi gleichzeitig arbeiten. 8)
Gruss
Delbor
jaenicke - Mi 24.02.10 21:37
delbor hat folgendes geschrieben : |
Da passiert rein gar nichts - also auch keine Unbekannt-Markierung oder irgendwas á la 'Unitname kann nicht aufgelöst werden. |
Das ist ja egal, ich meine beim Kompilieren, du sagtest doch dein Delphi kennt weder die Unit noch den Typ, da muss doch eine entsprechende Meldung gekommen sein. :gruebel:
delbor hat folgendes geschrieben : |
Da bleibt nur die Frage, wieso die Suche in der Help ergebnislos bleibt, wenn ich nach TServiceStatus suche. |
Weil es die Windows API ist, die steht eben nicht in der Delphi-Hilfe, das ist doch normal.
delbor - Mi 24.02.10 23:40
Hi zusammen
jaenicke hat folgendes geschrieben : |
Das ist ja egal, ich meine beim Kompilieren, du sagtest doch dein Delphi kennt weder die Unit noch den Typ, da muss doch eine entsprechende Meldung gekommen sein. :gruebel: |
Ja, klar sagte ich, Delphi kenne die Unit nicht - die Windows-Suche habe ich erst später eingesetzt.
Kompilieren ist auch kein Problem. Allerdings hab ich die Unit nur eingebunden ohne darauf zuzugreifen.
jaenicke hat folgendes geschrieben : |
Weil es die Windows API ist, die steht eben nicht in der Delphi-Hilfe, das ist doch normal. |
Vom Namen her (TServiceStatus) handelt es sich hier doch um einen Delphi-Tip, der lediglich Funktionen der Win-Api kapselt. Ausserdem: im RadStudio kann Hilfe für verschiedene Sprachen ausgewählt werden (C++, Delphi/C++,C#, J#, VB und JScript).
Luckie, hast du dir die angehängte Jpeg weiter oben schon angesehen? :)
Gruss
Delbor
Delete - Mi 24.02.10 23:45
Und da ist doch die Unit. Ich verstehe dein Problem nicht.
Xentar - Do 25.02.10 00:03
Wenn das Programm kompiliert, dann kennt Delphi auch die Unit..
Egal, ob du etwas daraus nutzt, oder nicht.
delbor - Do 25.02.10 00:15
Hi Luckie
Das hat sich mit diesem Suchresultat beantwortet. Aber viel interessanter war der Beitrag von Xentar:
Zitat: |
Zwei unterschiedliche Ports verwenden, so dass die Anwendungen gleichzeitig laufen können? |
Wie sich da herausgestellt hat, können mehrere Server nebeneinander laufen. Ich hab bis heute geglaubt, dass dies nicht geht - man lernt immer wieder dazu. Und wieso oder wozu sollte ich die Dienste programmgesteuert ein- und ausschalten, wenn es nur darum geht, zu einer bestimmten Zeit einen bestimmten Server zu nutzen, wenn beide zur gleichen Zeit laufen können?
Na ja, die Dienste steuern zu können, ohne sie von Hand bearbeiten zu müssen, kann durchaus Sinn machen - allerdings erst, wenn es darum geht, durch anhalten zur Zeit nicht benötigter Dienste Systemressourcen zu sparen. Aber das ist ein anderes Kapitel...
Gruss
Delbor
Delphi-Laie - Do 25.02.10 16:45
delbor hat folgendes geschrieben : |
In Delphi gibt es keine Unit WinSvc |
Die Unit WinSvc gibt es bereits ab/in Delphi 3!
Xentar - Do 25.02.10 18:10
Hehe, wer bietet weniger? :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!