AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Showmessage in Service aufrufen

Ein Thema von kobel · begonnen am 21. Jan 2005 · letzter Beitrag vom 21. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2   
kobel

Registriert seit: 6. Dez 2004
Ort: Attendorn
42 Beiträge
 
Delphi 6 Professional
 
#1

Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:04
Hallo,

ich möchte aus einem Service Meldungsfenster aufrufen
z.B. showmessage('hallo')

warum geht das nicht ?

DANKE kobel
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:10
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
kobel

Registriert seit: 6. Dez 2004
Ort: Attendorn
42 Beiträge
 
Delphi 6 Professional
 
#3

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:18
Zitat:
Unter welchem Konto läuft der Dienst bzw. ist Datenaustausch zwischen Dienst und Desktop erlaubt.
Wie kann ich das herausfinden ?


Der Dienst soll Abfragen aus einer Datenbank machen und unter bestimmten Bedingung nur eine Meldung anzeigen die dann vom Benutzer einfach weggeclickt werden kann
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:21
Zitat von Bernhard Geyer:
Falls unabhängig vom Angemeldeten Benutzer die interaktion mit dem Desktop ermöglicht werden soll, so mußt Du 2 Programme schreiben.
Nicht unbedingt, solange Du nicht auf Terminal Clients arbeitest, ist folgende Lösung ganz einfach: MessageBox aus non-interactive Anwendungen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:22
Zitat von kobel:
Wie kann ich das herausfinden ?
Geh in die Liste der Dienste (je nach BS-Version an unterschiedlichen Stellen zu finden) und dort einfach doppelklick, Reiterseite Anmelden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:28
Zitat von kobel:
Hallo,

ich möchte aus einem Service Meldungsfenster aufrufen
z.B. showmessage('hallo')

warum geht das nicht ?
Weil der Dienst in einer anderen WindowStation läuft und so keinen Zugriff auf den Desktop des angemeldeten Benutzers hat. Um nun mit den angemeldeten Benutzer interagieren zu können, muss der Dienst die interaktive WindowStation öffnen (WinSta0) und den standard Deskotp ("Default"). Wie das geht zeigt folgender C-Quellcode aus dem PSDK:
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;
}
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kobel

Registriert seit: 6. Dez 2004
Ort: Attendorn
42 Beiträge
 
Delphi 6 Professional
 
#7

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:39
@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!!!)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:43
Zitat von kobel:
@sakura:
habs probiert: beim Starten des Dienstes kommt Fehlermeldung
Was für eine Fehlermeldung - ich habe diese Funktion über zwei Jahre zum Debuggen genutzt, heute mache ich es über Pipes

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
kobel

Registriert seit: 6. Dez 2004
Ort: Attendorn
42 Beiträge
 
Delphi 6 Professional
 
#9

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:47
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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Showmessage in Service aufrufen

  Alt 21. Jan 2005, 14:50
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.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 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