![]() |
Showmessage in Service aufrufen
Hallo,
ich möchte aus einem Service Meldungsfenster aufrufen z.B. showmessage('hallo') warum geht das nicht ? DANKE kobel |
Re: Showmessage in Service aufrufen
Unter welchem Konto läuft der Dienst bzw. ist Datenaustausch zwischen Dienst und Desktop erlaubt.
Falls unabhängig vom Angemeldeten Benutzer die interaktion mit dem Desktop ermöglicht werden soll, so mußt Du 2 Programme schreiben: Eines ist der Dienst und einer ist für die Anzeige auf dem Desktop zuständig. |
Re: Showmessage in Service aufrufen
Zitat:
Der Dienst soll Abfragen aus einer Datenbank machen und unter bestimmten Bedingung nur eine Meldung anzeigen die dann vom Benutzer einfach weggeclickt werden kann |
Re: Showmessage in Service aufrufen
Zitat:
![]() ...:cat:... |
Re: Showmessage in Service aufrufen
Zitat:
|
Re: Showmessage in Service aufrufen
Zitat:
Code:
DWORD dwGuiThreadId = 0;
int UserMessageBox( RPC_BINDING_HANDLE h, LPSTR lpszWindowStation, LPSTR lpszDesktop, LPSTR lpszText, LPSTR lpszTitle, UINT fuStyle) { DWORD dwThreadId; HWINSTA hwinstaSave; HDESK hdeskSave; HWINSTA hwinstaUser; HDESK hdeskUser; int result; // Ensure connection to service window station and desktop, and // save their handles. GetDesktopWindow(); hwinstaSave = GetProcessWindowStation(); dwThreadId = GetCurrentThreadId(); hdeskSave = GetThreadDesktop(dwThreadId); // Impersonate the client and connect to the User's // window station and desktop. RpcImpersonateClient(h); hwinstaUser = OpenWindowStation(lpszWindowStation, FALSE, MAXIMUM_ALLOWED); if (hwinstaUser == NULL) { RpcRevertToSelf(); return 0; } SetProcessWindowStation(hwinstaUser); hdeskUser = OpenDesktop(lpszDesktop, 0, FALSE, MAXIMUM_ALLOWED); RpcRevertToSelf(); if (hdeskUser == NULL) { SetProcessWindowStation(hwinstaSave); CloseWindowStation(hwinstaUser); return 0; } SetThreadDesktop(hdeskUser); // Display message box. dwGuiThreadId = dwThreadId; result = MessageBox(NULL, lpszText, lpszTitle, fuStyle); dwGuiThreadId = 0; // Restore window station and desktop. SetThreadDesktop(hdeskSave); SetProcessWindowStation(hwinstaSave); CloseDesktop(hdeskUser); CloseWindowStation(hwinstaUser); return result; } |
Re: Showmessage in Service aufrufen
@Bernhard Geyer:
Lokales Konto, kein Datenaustausch mit Desktop. @sakura: habs probiert: beim Starten des Dienstes kommt Fehlermeldung @lucki: wo binde ich das ein ? oder ist das eine procedure ? (verstehe garnicht was da gemacht wird!!!) |
Re: Showmessage in Service aufrufen
Zitat:
...:cat:... |
Re: Showmessage in Service aufrufen
Fehler:
Der Dienst konnte nicht gestartet werden. Der Dienst hat keinen Fehler zurückgegeben. Es kann sich um einen internen Windowsfehler oder einen internen Dienstfehler handeln. |
Re: Showmessage in Service aufrufen
Könnte das an etwas anderem liegen? Das Beispiel setzt einfach auf der MessageBox von MS Windows auf :? Auf jeden Fall macht es keinen Sinn an der Stelle. Setze die mal in einen neuen, leeren NT Service, der sollte gehen.
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz