Zur bestimmten Zeit ein Ereigniss ausführen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

ts-soft hat geschrieben:Mein EnableShutdown erfordert wohl einen angemeldeten User, sind also
Änderungen nötig. Sollte in der MSDN zu finden sein, bzw. man kann auch
im Taskplaner das Programm mit höheren Rechten starten, könnte auch
helfen. (mit höchsten Priviligien ausführen checken, ist für einfache Aufgaben nicht verfügbar)

Gruß
Thomas
Genau. Der Taskplaner ermöglicht einem Benutzerkonto als auch das Kennwort für dieses Programm zu tätigen. Theoretisch müsste es auch funktionieren. Schließlich funktioniert auch das Schreiben einer Timer.log in der entsprechende If-Abfrage, wo das Shutdown ausgeführt wird.

Ob dazu noch höhere Rechte erforderlich sind habe ich in MSDN bzw. Google nicht gefunden :freak:

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Zumindest unter Vista ist dafür nur eine Checkbox abzuhaken. Damit wird
auch UAC umgangen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

ts-soft hat geschrieben:Zumindest unter Vista ist dafür nur eine Checkbox abzuhaken. Damit wird
auch UAC umgangen :mrgreen:
Stimmt auch :mrgreen: .
Aber leider ist es Windows 2000. Das war wohl das erste und letzte OS wo MS damals versucht hatte, ein automatisches Shutdown zu verhindern. :mrgreen:

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Little John

Beitrag von Little John »

Hallo Falko,

ich habe Dich jetzt so verstanden, dass sich der Taskmanager automatisch auf einem Benutzerkomnto einloggt, und danach wird Dein Shutdown-Programm gestartet, richtig? Komisch, dass das Herunterfahren dann nicht funktioniert ...

Aber vielleicht kannst Du ja einfach mal probieren, Dein Shutdown-Programm vor dem Einloggen zu starten, indem es in
HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ RunServices
aufgerufen wird.

Gruß, Little John
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

find ich nun aber recht "komisch" dass das nicht funktionieren soll.



ff aus http://www.wer-weiss-was.de/theme119/ar ... 97882.html
Da kann ich Dir einen Tip geben: Beim Anlegen des Tasks schreibst Du erst mal einen User mit Passwort rein. Danach änderst Du den Account in den Eigenschaften des geplanten Tasks in "SYSTEM" (ohne Anführungszeichen). Das auspoppende Fenster zur Passworteingabe einfach mit OK schliessen. Wenn Du danach nochmal die Eigenschaften dieses Tasks aufrufst, siehst Du dass jetzt der User SYSTEM drin steht.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Little John hat geschrieben:
NicTheQuick hat geschrieben:Dann braucht man den Taskplaner aber auch nicht mehr.
Wenn man den Taskplaner benutzt, dann ist es nicht nötig dass während der Woche den ganzen Tag über das selbstgeschriebene Programm im Hintergrund läuft. Ich dachte mir, das sei ressourcenschonender, aber das ist nur geraten. :-)
Falsch geraten. <)

In Wirklichkeit steht bei diesem Programm sogar nach mehreren Tagen
Laufzeit am Stück immer noch bei CPU-Zeit im Taskmanager 0 Sekunden.
Deswegen das großzügige Delay. Hier hätte sogar ein Delay(59000) gereicht.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

bobobo hat geschrieben:find ich nun aber recht "komisch" dass das nicht funktionieren soll.



ff aus http://www.wer-weiss-was.de/theme119/ar ... 97882.html
Da kann ich Dir einen Tip geben: Beim Anlegen des Tasks schreibst Du erst mal einen User mit Passwort rein. Danach änderst Du den Account in den Eigenschaften des geplanten Tasks in "SYSTEM" (ohne Anführungszeichen). Das auspoppende Fenster zur Passworteingabe einfach mit OK schliessen. Wenn Du danach nochmal die Eigenschaften dieses Tasks aufrufst, siehst Du dass jetzt der User SYSTEM drin steht.
Erst dachte ich, es funktioniert auch nicht mit SYSTEM, weil auch da nur
die Timer.log korrekt mit dem im IF-Zweig ausgeführten WriteStringN...
ausgeführt wurde, aber wiedermal das Shutdown irgendwie nicht so,
wie ich wollte :twisted: .

Danach war ich mal so dreist und habe einfach das Else dazwischen entfernt auskommentiert, weil mir irgendwie der Gedanke kam, es könnte
ja die eigene Exe sein, die das normale Shutdown verhindert und man
evtl. beide Funktionen ausführen müßte .

Und siehe da, nun kann man ohne Kennwort unter dem Benutzer
'SYSTEM' endlich den Rechner in den vorbestimmten Ruhestand schicken. Ich danke allen hier Beteiligten, die mich in die richtige Richtung geleitet
haben.

Nochmals vielen Dank an alle.


Hier, die Änderung damit es beim Willkommensbildschirm incl. bobobos Tip funktioniert. Danke bobobo :allright:

Code: Alles auswählen

...
Procedure WndProc(hWnd, uMsg, wParam, lParam)
  FileSeek(0, Lof(0))  
  If uMsg = #WM_TIMER
    If time_New$ => StopTime$ And time_New$ <= StopTime1$ And (Tag=#Samstag Or Tag=#Dienstag)
       EnableShutDown()
    ;Else
       ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_FORCE | #EWX_FORCEIFHUNG , 0)
    EndIf
  EndIf
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
...
Im Taskplaner einen neuen Task mit Benutzer mit Kennwort angelegt, welcher nur beim Systemstart ausgeführt wird, und hinterher nach
erstellter Projektdatei dort den Benutzer auf 'SYSTEM' geändert, ohne ein Passwort zu vergeben. Das hat den Vorteil, das man ohne Kennwort dem System ein Shutdown überlassen kann.

Gruß, Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

hätt mich auch ein wenig gewundert wenn's garnich geklappt hätte
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Little John

Beitrag von Little John »

Falko hat geschrieben:man evtl. beide Funktionen ausführen müßte
Na ja, EnableShutDown() ermöglicht den Shutdown (bereitet ihn quasi vor), und ExitWindowsEx_() führt ihn dann durch ... so wie Thomas das in seinem ersten Beitrag in diesem Thread gemacht hat. Ist mir aber auch nicht aufgefallen, dass es in Deinem Code anders war.

Gruß, Little John
Antworten