Español
Foro

Programa como letztes final?

 
- Página 1 -


¡Hola Profaner...

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



 
- Página 1 -


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  
 



 
- Página 2 -


ok.

Salve.
 
20.05.2005  
 




CB
¡Hola Andreas!
[quote:4cca043a78]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:4cca043a78]
Ganz simplemente: (Admin)
Systemsteuerung - Verwaltung - Dienste.
Ggf. mußt Usted vorher en Menu adaptar: Verwaltung Mostrar aktivieren.
Re. Ratón en una Dienst - Características.
Und ya kannst Usted Usted austoben.

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
20.05.2005  
 



Bestens Dank para eure Mithilfe, como es ya muy viel brauchbares esta.

@Thomas:
In Profano saber Yo mich bastante bien de - en otro Idiomas sieht el ya schlechter de .
El APIs, el en deinem Ver código fuente vorkommen, entsprechen eigentlich denen, el Yo bislang angesehen habe (CreateService, OpenSCManager). El Sache müßte also auch en Profano machbar ser. Sämtliche Flags posición scheinbar auch con drin (habs sólo sobrevolados), scheint also en el Principio brauchbar a ser...

@Christian: Gracias para el Tipp, Yo voluntad veces schauen, si el bajo 2000 auch va!
 
20.05.2005  
 



¡Hola Andreas,
tener veces una Teilstück des Codes después de XProfan traducido, así el el Rest eigentlich simplemente a ersehen es. Yo hoffe lo hilft Usted más.
KompilierenMarcaSeparación
 $H windows.ph
 $H Structs.ph
Global ServiceStatus.SERVICE_STATUS, hServiceStatus.l, SERVICE_NAME.s, Finish.l
Declare ServiceStatus# , hServiceStatus&, SERVICE_NAME$, Finish&
Dim ServiceStatus#, ~SERVICE_STATUS
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

Proc Handler

    Parameters fdwControl&

    If fdwControl& = ~SERVICE_CONTROL_PAUSE

        ** Do whatever it takes To pause here.
        ServiceStatus#.dwCurrentState = ~SERVICE_PAUSED

    ElseIf fdwControl& = ~SERVICE_CONTROL_CONTINUE

        ** Do whatever it takes To continue here.
        ServiceStatus#.dwCurrentState = ~SERVICE_RUNNING

    ElseIf fdwControl& = ~SERVICE_CONTROL_STOP

    ElseIf fdwControl& = ~SERVICE_CONTROL_INTERROGATE

    EndIf

    ~SetServiceStatus(hServiceStatus&, Addr(ServiceStatus#))

../references-fonction/XProfan/ENDPROC/'>ENDPROC


Ist sólo soviel, como para el Übersetzung erforderlich es. Solltest No klarkommen, voluntad Yo, el Rest auch adaptar, el kann entonces aber algo dauern, como Todavía otro Dinge erledigen muß

Saludo
Thomas
 
20.05.2005  
 



... kann algo dauern, a Yo mich así beschäftigen kann, Yo denke aber, Yo vengo klar. Besten Dank!
 
20.05.2005  
 



El Solución mein Problema scheint el API SetProcessShutdownParameters a ser.
 
15.07.2005  
 



Ok, el war el Solución. Mit dieser API läßt se festlegen, wann genau mi Anwendung beim Herunterfahren termina.
 
16.07.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.818 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