Español
Foro

Programa como letztes final?

 
¡Hola Profaner...

Gibt lo una Möglichkeit una Programa beim Herunterfahren des Rechners como letztes final que se?
 
19.05.2005  
 



¿Te ha - el Reihenfolge bestimmen - en el Kernel el Prozessen el kill.app.mensaje envía?

Oder media Usted así algo como en lugar de Autostart Autoend?

Von beidem Sé que no como - wäre para mich aber trotzdem interessant ¿qué es exactamente ¿Quieres decir que.

Salve.
 
19.05.2005  
 



Verstehe el Cuestión no tan completamente, con ~WM_QUERYENDSESSION en un Callback, kannste abfangen si Windows termina. Usted selber como letztes, höchstens como Service oder Skript en NT-Systemen. Yo glaube aber el trifft lo todavía no, oder ???
 
19.05.2005  
 



~WM_QUERYENDSESSION  es auch no el goldene vom Ei - como uno en NT-Systemen una QUERYENDSESSIONTimeout de 0 einstellen kann. Also sicher es solch Callback auch no umbedingt - auch si fast kein Schwein el QUERYENDSESSIONTimeout de 20.000 en 0 (ms) setzt.

Yo sin embargo habs getan.

Salve.
 
19.05.2005  
 



[quote:0ca25bf230=iF]¿Te ha - el Reihenfolge bestimmen - en el Kernel el Prozessen el kill.app.mensaje envía?
[/quote:0ca25bf230]
¡Hola IF...

Sí, genau. Das hängt u.a. de el Startreihenfolge el Prozesse de. Yo gehe veces bastante schwer su de, daß el nada oder sólo Trick va.

@Thomas...
[quote:0ca25bf230]
Verstehe el Cuestión no tan completamente, con ~WM_QUERYENDSESSION en un Callback, kannste abfangen si Windows termina.
[/quote:0ca25bf230]
Im Augenblick regelt el el Programa encima una Subclassing de ~WM_QUERYENDSESSION por una zweite EXE, el allein sólo para el Subclassing zuständig es. Yo quería veces schauen, si existe todavía irgendwelche otro Möglichkeiten son, como el Herunterfahren abzufangen.
[quote:0ca25bf230]
Usted selber como letztes, höchstens como Service oder Skript en NT-Systemen. Yo glaube aber el trifft lo todavía no, oder ???
[/quote:0ca25bf230]
Exactamente en NT-Systeme es. Beim Herunterfahren des Systems se sí a cada Programa el ~WM_QUERYENDSESSION gesendet.
Das Programa se necesariamente solange laufen, como Windows se ejecuta, el es wichtig!
Wenn Yo irgendwie erreichen podría, daß el Prog bajo NT sólo como letztes el ~WM_QUERYENDSESSION erhält, podría Yo el Subclassing sparen y einiges sería algo sauberer durchlaufen...
 
19.05.2005  
 




Michael
Wodrich
¡Hola Andreas,

me schmiert de y a el Rechner de (con Prozessen überladen) y como me está aufgefallen:

Der FireFox es el letzte, el se verabschiedet, como Yo siempre mehrere Tabs offen habe. FireFox fragt ahora, si él wirklich final se. Wenn Yo el Cuestión en el Bildschirm lasse, entonces außer el Fuchs nichts mehr aktiv.

In Profano hay doch SetCloseMsg, vieleicht hilft el sí.

MfG
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
19.05.2005  
 



¡Hola Michael...

SetCloseMsg fällt sowieso flach, como Yo a Tiempo XProfan besitze.
FireFox dürfte el encima el Subclassing de ~WM_QUERYENDSESSION regeln - el möchte Yo no, como Yo en mi Programa entonces a viel incluso regeln müßte.
 
20.05.2005  
 



Hola Thomas...

[quote:e3a546d485]
Usted selber como letztes, höchstens como Service oder Skript en NT-Systemen. Yo glaube aber el trifft lo todavía no, oder ???
[/quote:e3a546d485]
Eventuell trifft lo el doch. Bajo Windows9x wäre genau el el Solución (RegisterServiceProcess), como brauche Yo pero no. Ein weiteres Problema wäre, el mein Service una Ventana hätte. Yo podría me vorstellen, el NT como evtl. con el Zugriffsrechten algo streikt - como müßte Yo tal vez entonces una bischen tricksen...
Leider Yo no blassen Schimmer, Yo bajo NT una Service installiere. ¿Puede du - oder sonst alguien - me tal vez en el Sprünge helfen?
 
20.05.2005  
 



[quote:6298a5d2c1=AH]
Leider Yo no blassen Schimmer, Yo bajo NT una Service installiere. ¿Puede du - oder sonst alguien - me tal vez en el Sprünge helfen?[/quote:6298a5d2c1]
Hab Usted qué de el CodeArchiv para PureBasic rausgesucht. ¿Puede lo Usted primero ansehen, tal vez auch selber übertragen, ansonsten meldest Usted otra vez. Ist no schwer (para mich es XProfan schwerer )
KompilierenMarcaSeparación
; English forum:
; Author: Richard Eikeland
; Date: 12. April 2003
; angepaßt an 3.93 ts-soft
; Apr. 12, 2003
; Converted to PB by Richard Eikeland
; This code is posted as is with out any waranties.
;
#SERVICE_WIN32_OWN_PROCESS = $10
#SERVICE_WIN32_SHARE_PROCESS = $20
#SERVICE_WIN32 = #SERVICE_WIN32_OWN_PROCESS + #SERVICE_WIN32_SHARE_PROCESS
#SERVICE_ACCEPT_STOP = $1
#SERVICE_ACCEPT_PAUSE_CONTINUE = $2
#SERVICE_ACCEPT_SHUTDOWN = $4
#SC_MANAGER_CONNECT = $1
#SC_MANAGER_CREATE_SERVICE = $2
#SC_MANAGER_ENUMERATE_SERVICE = $4
#SC_MANAGER_LOCK = $8
#SC_MANAGER_QUERY_LOCK_STATUS = $10
#SC_MANAGER_MODIFY_BOOT_CONFIG = $20
#STANDARD_RIGHTS_REQUIRED = $F0000
#SERVICE_QUERY_CONFIG = $1
#SERVICE_CHANGE_CONFIG = $2
#SERVICE_QUERY_STATUS = $4
#SERVICE_ENUMERATE_DEPENDENTS = $8
#SERVICE_START = $10
#SERVICE_STOP = $20
#SERVICE_PAUSE_CONTINUE = $40
#SERVICE_INTERROGATE = $80
#SERVICE_USER_DEFINED_CONTROL = $100
;#SERVICE_ALL_ACCESS = #STANDARD_RIGHTS_REQUIRED | #SERVICE_QUERY_CONFIG | #SERVICE_CHANGE_CONFIG | #SERVICE_QUERY_STATUS | #SERVICE_ENUMERATE_DEPENDENTS | #SERVICE_START | #SERVICE_STOP | #SERVICE_PAUSE_CONTINUE | #SERVICE_INTERROGATE |#SERVICE_USER_DEFINED_CONTROL
#SERVICE_DEMAND_START = $3
#SERVICE_ERROR_NORMAL = $1
;- SERVICE_CONTROL
#SERVICE_CONTROL_STOP = $1
#SERVICE_CONTROL_PAUSE = $2
#SERVICE_CONTROL_CONTINUE = $3
#SERVICE_CONTROL_INTERROGATE = $4
#SERVICE_CONTROL_SHUTDOWN = $5
;-SERVICE_STATE
#SERVICE_STOPPED = $1
#SERVICE_START_PENDING = $2
#SERVICE_STOP_PENDING = $3
#SERVICE_RUNNING = $4
#SERVICE_CONTINUE_PENDING = $5
#SERVICE_PAUSE_PENDING = $6
#SERVICE_PAUSED = $7
Global ServiceStatus.SERVICE_STATUS, hServiceStatus.l, SERVICE_NAME.s, Finish.l
Declare Handler(fdwControl.l)
Declare ServiceMain(dwArgc.l, lpszArgv.l)
Declare WriteLog(Value.s)
Procedure Main()
hSCManager.l
hService.l
ServiceTableEntry.SERVICE_TABLE_ENTRY
b.l
cmd.s
;Change SERVICE_NAME and app name as needed
AppPath.s = "C:DevPureBasicworkdirNTServiceMyService.exe"
SERVICE_NAME = "MyService"
cmd = Trim(LCase(ProgramParameter()))

Select cmd

    Case "install" ;Install service on machine
    hSCManager = OpenSCManager_(0, 0, #SC_MANAGER_CREATE_SERVICE)
    hService = CreateService_(hSCManager, SERVICE_NAME, SERVICE_NAME, #SERVICE_ALL_ACCESS, #SERVICE_WIN32_OWN_PROCESS, #SERVICE_DEMAND_START, #SERVICE_ERROR_NORMAL, AppPath, 0, 0, 0, 0, 0)
    CloseServiceHandle_(hService)
    CloseServiceHandle_(hSCManager)
    Finish = 1
    Case "uninstall" ;Remove service from machine
    hSCManager = OpenSCManager_(0, 0, #SC_MANAGER_CREATE_SERVICE)
    hService = OpenService_(hSCManager, SERVICE_NAME, #SERVICE_ALL_ACCESS)
    DeleteService_(hService)
    CloseServiceHandle_(hService)
    CloseServiceHandle_(hSCManager)
    Finish = 1
    Default
    *sname.s = SERVICE_NAME
    ;Start the service
    ServiceTableEntrylpServiceName = @SERVICE_NAME
    ServiceTableEntrylpServiceProc = @ServiceMain()
    b = StartServiceCtrlDispatcher_(@ServiceTableEntry)
    WriteLog("Starting Service bResult=" + Str(b))

    If b = 0

        Finish = 1

    EndIf

EndSelect

Repeat

Until Finish =1

End
EndProcedure
Procedure Handler(fdwControl.l)
b.l

Select fdwControl

    Case #SERVICE_CONTROL_PAUSE
    ;** Do whatever it takes To pause here.
    ServiceStatusdwCurrentState = #SERVICE_PAUSED
    Case #SERVICE_CONTROL_CONTINUE
    ;** Do whatever it takes To continue here.
    ServiceStatusdwCurrentState = #SERVICE_RUNNING
    Case #SERVICE_CONTROL_STOP
    ServiceStatusdwWin32ExitCode = 0
    ServiceStatusdwCurrentState = #SERVICE_STOP_PENDING
    ServiceStatusdwCheckPoint = 0
    ServiceStatusdwWaitHint = 0 ;Might want a time estimate
    b = SetServiceStatus_(hServiceStatus, ServiceStatus)
    ;** Do whatever it takes to stop here.
    Finish = 1
    ServiceStatusdwCurrentState = #SERVICE_STOPPED
    Case #SERVICE_CONTROL_INTERROGATE
    ;Fall through To send current status.
    Finish = 1
    ;Else

EndSelect

;Send current status.
b = SetServiceStatus_(hServiceStatus, ServiceStatus)
EndProcedure
Procedure ServiceMain(dwArgc.l, lpszArgv.l)
b.l
WriteLog("ServiceMain")
;Set initial state
ServiceStatusdwServiceType = #SERVICE_WIN32_OWN_PROCESS
ServiceStatusdwCurrentState = #SERVICE_START_PENDING
ServiceStatusdwControlsAccepted = #SERVICE_ACCEPT_STOP | #SERVICE_ACCEPT_PAUSE_CONTINUE | #SERVICE_ACCEPT_SHUTDOWN
ServiceStatusdwWin32ExitCode = 0
ServiceStatusdwServiceSpecificExitCode = 0
ServiceStatusdwCheckPoint = 0
ServiceStatusdwWaitHint = 0
hServiceStatus = RegisterServiceCtrlHandler_(SERVICE_NAME, @Handler())
ServiceStatusdwCurrentState = #SERVICE_START_PENDING
b = SetServiceStatus_(hServiceStatus, ServiceStatus)
;** Do Initialization Here
ServiceStatusdwCurrentState = #SERVICE_RUNNING
b = SetServiceStatus_(hServiceStatus, ServiceStatus)
;** Perform tasks -- If none exit
;** If an error occurs the following should be used for shutting
;** down:
; SetServerStatus SERVICE_STOP_PENDING
; Clean up
; SetServerStatus SERVICE_STOPPED
EndProcedure
Procedure WriteLog(Value.s)
sfile.s = "MyServiceLog.txt"

If OpenFile(0, sfile)

    WriteStringN(Value)
    CloseFile(0)

Else

    If CreateFile(0,sfile)

        WriteStringN(Value)
        CloseFile(0)

    EndIf

EndIf

EndProcedure
Main()

Weiß ahora bloß no qué el HL con el Code macht

Saludo
thomas
(ts-soft)
 
20.05.2005  
 



Der Code se nix nutzen - como wirken sólo PureBasic-Befehle para el PureBasic-Compiler - y compiliert sí native.

In C++ z.B. ists eigendlich auch sólo una Projekteinstellung - en como Dienst a compilieren.

Salve.
 
20.05.2005  
 



*.l son long
*.s son cadena
*.b son byte
*hallo hierbei es es strukturen

#xxxx son konstanten

funktionen con _ al Ende son Api-funktionen

Saludo
Thomas

 
20.05.2005  
 



[quote:676b84de14=iF]Der Code se nix nutzen - como wirken sólo PureBasic-Befehle para el PureBasic-Compiler - y compiliert sí native.

In C++ z.B. ists eigendlich auch sólo una Projekteinstellung - en como Dienst a compilieren.

Salve.[/quote:676b84de14]Como liegste algo verkehrt, denke Yo, son sólo API aufrufen con gefüllten Estructuras, sowie auswertung el übergebenen Commandos. Sollte machbar ser. Das Programa se sólo como Service registriert y reagiert entsprechen. Wenn AH se el angesehen ha, y meint lo könne así ir, voluntad Yo después de XProfan umsetzen, hoffe Yo

Saludo
Thomas
 
20.05.2005  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

3.832 Views

Untitledvor 0 min.
H.Brill18.11.2023
W.L.05.07.2017

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie