Service Anwendungen
-
Habe ich behauptet, dass ihr Hellseher seid?

-
Hi,
hast Du irgendwo ein exit(0); stehen.
Grüsse
-
Nein, brauche ich das?
Ps: Ich hab vergessen zu sagen, dass ich im Thema Service Anwendungen ein Anfänger bin.
-
Stefan.St schrieb:
Habe ich behauptet, dass ihr Hellseher seid?
akari wollte zum Ausdruck bringen, dass anhand der spärlichen Informationen über dein Programm keine Aussage zu eventuellen Ursachen des Problems möglich ist. Und für Ratespiele ist das Forum nicht der richtige Platz.
-
Stefan.St schrieb:
Habe ich behauptet, dass ihr Hellseher seid?

Deine Frage ist nach dem Muster "Ich habe ein rotes Auto und das hält nach ein paar Augenblicken Fahrt immer an. Warum?"
Das heißt ohne relevanten Quellcode samt genauer (Fehler-) beschreibung können wir dazu nichts dazu sagen. Fakt ist das Services nicht einfach so beendet werden, sondern das liegt an deinem eigenem Code. Am besten gehst du selber mit dem Debugger durch und Logst den Verlauf deines Programmes mit.
bis bald
akari
-
Zuersteinmal schuldigung, dass habe ich wohl falsch verstanden und danke für alle antworten die inzwischen dazugekommen sind.
Ich habe mal den Projektquellcode debbugt und festgestellt, dass er nach dem initialisieren der Form1 ganz normal auf Application->Run(); trifft. Leider konnte ich dahinein nicht steppen, aber ich habe gesehen dass er automatisch nach ca. 12 Sekunden weitergesprungen ist (Ende des Programms).
Hier der Projektquellcode:
#include <SysUtils.hpp> #include <SvcMgr.hpp> #pragma hdrstop #define Application Svcmgr::Application USEFORM("Unit1.cpp", Service1); /* TService: File Type */ //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { if ((!Application->DelayInitialize) || (Application->Installing())) { Application->Initialize(); } Application->CreateForm(__classid(TService1), &Service1); Application->Run(); } catch (Exception &exception) { Sysutils::ShowException(&exception, System::ExceptAddr()); } catch(...) { try { throw Exception(""); } catch(Exception &exception) { Sysutils::ShowException(&exception, System::ExceptAddr()); } } return 0; }Stefan
-
Hallo
schön, das ist die von der VCL generierte Codebasis.
Die ist bei jedem Service-Projekt gleich und damit nicht Urheber des Problems.
Sondern das relevante spielt sich in ->Run() ab, wenn das Service-Form angezeigt wird. Also entweder debuggst du gleich im Quellcode vom Service1-Form (Breakpoints)oder du postest den Code hierein.bis bald
akari
-
Hallo,
ich bin jetzt mal Service1 durchgegangen, aber ich hab nix gefunden.
Es sieht so aus, als würde der Compiler irgendwie eine Art timer einbauen.Dieser Code wurde allerdings auch automatisch erzeugt und ich konnte nichts ungewöhnliches feststellen:
//--------------------------------------------------------------------------- #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TService1 *Service1; //--------------------------------------------------------------------------- __fastcall TService1::TService1(TComponent* Owner) : TService(Owner) { } TServiceController __fastcall TService1::GetServiceController(void) { return (TServiceController) ServiceController; } void __stdcall ServiceController(unsigned CtrlCode) { Service1->Controller(CtrlCode); } //--------------------------------------------------------------------------- void __fastcall TService1::TcpClient1Receive(TObject *Sender, PChar Buf, int &DataLen) { MessageBox(0, "Empfangen", "Empfangen", MB_OK); } //--------------------------------------------------------------------------- void __fastcall TService1::est1Click(TObject *Sender) { ShowMessage("Dies ist eine Testmessage"); } //---------------------------------------------------------------------------Zur Info, ich hab auf der Form 3 Componenten:
1. TrayIcon
2. PopupMenü
3. TcpClient1Ich hab außerdem ein Neues Projekt gestartet und da tritt es wieder auf, vondaher denke es Könnte sogar von Borland kommen.
Stefan
-
Hallo,
das ist bei einer Service-Anwendung immer so.
Sie kann in der Entwicklungsumgebung nicht gestartet werden.
Die Anwendung muss nun mit dem Komando "Anwendung.exe /install" als Dienst
registriert werden und kann danach in der Systemsteuerung/Verwaltung/Dienste
gestartet und gesteuert werden.Gruss jersey
-
Vielen Dank ersteinmal für alle Antworten, das Kommando funktioniert super!

Stefan