| |
|
|
| allô Profaner...
Gibt es une Possibilité un Programme beim Herunterfahren des Rechners comme letztes finissons trop laisser? |
|
|
| |
|
|
|
| Avez- Du - qui Reihenfolge bestimmen - dans qui Kernel den Prozessen qui kill.app.message sendet?
ou bien meinst Du so quelque chose comment statt Autostart Autoend?
de beidem wüsste je pas comment - wäre pour mich mais quand même intéressant quoi oui c'est ca Du meinst.
Salve. |
|
|
| |
|
|
|
| Verstehe qui Frage pas so entier, avec ~WM_QUERYENDSESSION dans einem Callback, kannste intercepter si Windows finissez wird. Du selber comme letztes, au maximum comme Service ou bien Skript sur NT-Systemen. je crois mais cela trifft es encore pas, ou bien ??? |
|
|
| |
|
|
|
| ~WM_QUERYENDSESSION ist aussi pas cela goldene vom ouf - là on dans NT-Systemen une QUERYENDSESSIONTimeout de 0 einstellen peux. alors sûrement ist solch Callback aussi pas umbedingt - aussi si presque ne...aucune Schwein den QUERYENDSESSIONTimeout de 20.000 sur 0 (ms) mets.
je cependant habs getan.
Salve. |
|
|
| |
|
|
|
| [quote-part:0ca25bf230=iF]Avez- Du - qui Reihenfolge bestimmen - dans qui Kernel den Prozessen qui kill.app.message sendet? [/quote-part:0ca25bf230] allô IF...
oui, oui c'est ca. cela hängt u.a. de qui Startreihenfolge qui Prozesse ab. je vais la fois entier schwer en aus, qui cela gar pas ou bien seulement avec Trick allez.
@Thomas... [quote-part:0ca25bf230] Verstehe qui Frage pas so entier, avec ~WM_QUERYENDSESSION dans einem Callback, kannste intercepter si Windows finissez wird. [/quote-part:0ca25bf230] Im Augenblick regelt cela cela Programme sur un Subclassing de ~WM_QUERYENDSESSION par une zweite EXE, qui seul seulement pour cela Subclassing zuständig ist. je voulais la fois regarder, si es là encore irgendwelche anderen Opportunités gibt, comme cela Herunterfahren abzufangen. [quote-part:0ca25bf230] Du selber comme letztes, au maximum comme Service ou bien Skript sur NT-Systemen. je crois mais cela trifft es encore pas, ou bien ??? [/quote-part:0ca25bf230] oui c'est ca um NT-Systeme ca va. Beim Herunterfahren des Systems wird oui à chaque Programme qui ~WM_QUERYENDSESSION gesendet. cela Programme soll absolument solange courir, comment Windows fonctionne, c'est important! si je es irgendwie erreichen pourrait, qui cela Prog sous NT seulement comme letztes qui ~WM_QUERYENDSESSION erhält, pourrait je mir cela Subclassing sparen et einiges serait quelque chose sauberer durchlaufen... |
|
|
| |
|
|
|
Michael Wodrich | allô Andreas,
mir schmiert ab et à qui calculateur ab (avec Prozessen überladen) et voilà mir aufgefallen:
qui FireFox ist qui dernier, qui sich verabschiedet, là je toujours plusieurs Tabs offen habe. FireFox fragt maintenant, si il wirklich finissons soll. si je qui Frage sur dem Bildschirm lasse, ensuite ist sauf dem Fuchs rien plus aktiv.
dans Profan gibt es doch SetCloseMsg, vieleicht hilft cela oui.
MfG Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 19.05.2005 ▲ |
|
|
|
|
| allô Michael...
SetCloseMsg fällt sowieso flach, là je zur Zeit XProfan besitze. FireFox pourrait cela sur cela Subclassing de ~WM_QUERYENDSESSION régulariser - cela voudrais je pas, là je dans mon Programme ensuite trop viel selbst régulariser devrait. |
|
|
| |
|
|
|
| allô Thomas...
[quote-part:e3a546d485] Du selber comme letztes, au maximum comme Service ou bien Skript sur NT-Systemen. je crois mais cela trifft es encore pas, ou bien ??? [/quote-part:e3a546d485] Eventuell trifft es cela doch. sous Windows9x wäre oui c'est ca cela qui Solution (RegisterServiceProcess), là brauche je es mais pas. un weiteres Problem wäre, cela mon Service un la fenêtre hätte. je pourrait mir présenter, cela NT là peut-être. avec den Zugriffsrechten quelque chose streikt - là devrait je peut-être ensuite encore un un peu tricksen... malheureusement habe je keinen blassen Schimmer, comment je sous NT une Service installiere. peux du - ou bien sonst quelqu'un - mir peut-être sur qui Sprünge aider? |
|
|
| |
|
|
|
| [quote-part:6298a5d2c1=AH] malheureusement habe je keinen blassen Schimmer, comment je sous NT une Service installiere. peux du - ou bien sonst quelqu'un - mir peut-être sur qui Sprünge aider?[/quote-part:6298a5d2c1] Hab Dir quoi aus dem CodeArchiv pour PureBasic rausgesucht. peux es Dir erstmal regarder, peut-être aussi selber übertragen, ansonsten meldest toi nochmal. Ist pas schwer (pour mich ist XProfan schwerer ) KompilierenMarqueSéparation; 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()
sais maintenant bloß pas quoi cela HL avec dem Code pouvoir
Salut thomas (ts-soft) |
|
|
| |
|
|
|
| qui Code wird nix nutzen - là wirken seulement PureBasic-Befehle pour den PureBasic-Compiler - et qui compilé oui native.
dans C++ z.B. ists eigendlich aussi seulement une Projekteinstellung - um comme Dienst trop compilieren.
Salve. |
|
|
| |
|
|
|
| *.l sommes long *.s sommes string *.b sommes byte *allô hierbei handelt es sich um strukturen
#xxxx sommes konstanten
funktionen avec _ am Ende sommes Api-funktionen
Salut Thomas
|
|
|
| |
|
|
|
| [quote-part:676b84de14=iF]qui Code wird nix nutzen - là wirken seulement PureBasic-Befehle pour den PureBasic-Compiler - et qui compilé oui native.
dans C++ z.B. ists eigendlich aussi seulement une Projekteinstellung - um comme Dienst trop compilieren.
Salve.[/quote-part:676b84de14]là liegste quelque chose verkehrt, denke je, sommes seulement API appel avec gefüllten Strukturen, sowie auswertung qui übergebenen Commandos. Sollte machbar son. cela Programme wird seulement comme Service registriert et reagiert entsprechen. si AH sich cela angesehen hat, et meint es könne so aller, werde je es pour XProfan umsetzen, hoffe je
Salut Thomas |
|
|
| |
|
|