Send {Sleep}

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Send {Sleep}

18 Dec 2016, 15:40

Hm ... wie ist das eigentlich? Send, > beispielsweise funktioniert doch unabhängig davon, ob auf der Tastatur die Taste > vorhanden ist. Warum funktioniert dann Send, {Sleep} nicht?
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Send {Sleep}

18 Dec 2016, 16:15

... weil Send nur Zeichen senden kann, die es auch gibt, und Sleep ist nun mal kein Zeichen.

Edit: ...Zeichen bzw. Tastencodes ...
Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Re: Send {Sleep}

19 Dec 2016, 01:39

Ja, aber was meint dieses "es gibt"? Send > funktioniert eben unabhängig davon, ob es die Taste > auf der Tastatur gibt oder nicht gibt; warum gilt das dann nicht für die Taste Sleep, die eben auch nur an manchen Tastaturen vorhanden ist?
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Send {Sleep}

19 Dec 2016, 03:52

Das Einzige, was mir im Zusammenhang mit 'Sleep Tasten' einfällt, ist die Möglichkeit, den Rechner per Tastendruck in den Ruhezustand zu bringen. Das ist dann aber entweder 'hart verdrahtet' oder es benötigt einen speziellen Tastaturtreiber. Ein allgemeingültiger Tastaturcode ist dafür meines Wissens nicht definiert.
Rohwedder
Posts: 7644
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Send {Sleep}

19 Dec 2016, 06:01

Hallo,
Sie ist definiert! In der Tastenliste https://ahkde.github.io/docs/KeyList.htm bei den Sondertasten.
Jedoch mit dem Hinweis: Beachte, dass die Sleep-Taste bei einigen Tastaturen dadurch nicht ausgelöst wird.
(Bei mir funktioniert sie nicht mit Send).
Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Re: Send {Sleep}

19 Dec 2016, 07:08

@just me, Rohwedder: Danke!

Unabhängig davon: Es lassen sich SC-Listen von MS finden, z.B.
http://www.quadibloc.com/comp/scan.htm
https://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html
die auch Scancodes für die Sleep-Taste enthalten. Allerdings tauchen dort 'Präfixe' auf, so dass ein möglicher SC z.B. e0-5f wäre.
Wisst ihr vielleicht, wie dass mit einem Send-Befehl umzusetzen wäre?
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Send {Sleep}

19 Dec 2016, 07:22

OK, man sollte sich nie so 'sicher' sein, dass man auf Suchen und/oder Lesen verzichtet. Der VK-Code ist 0x5F (Virtual-Key Codes).

Der Hinweis in der Doku spricht allerdings dafür, dass die konkrete Hardware und/oder der Tastaturtreiber doch ein Wörtchen mitreden.
Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Re: Send {Sleep}

19 Dec 2016, 07:36

Einen Hinweis, dass Hardware & Treiber nicht unbedingt im Spiel sind, hätte ich schon: Ich habe da eine USB-Tastatur mit der Sleep-Taste, und die funktioniert perfekt ohne speziellen Treiber. Und über USB wird die Tastatur vermutlich nur per SC mit dem Rechner kommunizieren.
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Send {Sleep}

19 Dec 2016, 08:54

Wenn dem so ist, wird es wohl einen anderen Grund geben. Das Wort 'speziell' im Zusammenhang mit dem Taststurtreiber beruht aber auf meiner irrigen Annahme, dass die Sleep Taste nicht zu den Standard-Windows-Tasten gehört.

Wie ist es mit diesem DllCall-Beispiel?
Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Re: Send {Sleep}

19 Dec 2016, 09:45

Dieses DllCall-Beispiel ist tatsächlich der Hintergrund all meiner Fragerei. Der Befehl (wie auch jede Abwandlung der im Web zu findenden auf SetSuspendState beruhenden Befehle) funktioniert zumindest an manchen Rechnern (evtl. erst ab Win10), die ansonsten tadellos in Sleep ('Energie sparen') gehen können, nicht! Wenn überhaupt wird ein anderer Zustand eingeleitet (wohl Hibernate). Deswegen bin ich auf die Idee gekommen, es über SC zu versuchen. Da anzunehmen ist, dass jede Tastatur mit der Sleep-Taste in der Regel an jedem Rechner funktionieren muss, und da diese, die ich jetzt getestet habe, es bei mir ohne Treiber perfekt tut, gehe ich davon aus, dass die Sleep-Taste ihren Dienst generell per SC tut ...

Keine Idee zu der Frage, wie ein SC mit 'Präfix' (z.B. e0-5f) gesendet werden kann? :|
Power Saving, https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Send {Sleep}

20 Dec 2016, 11:34

Wahrscheinlich würdest du damit kein anderes Resultat erreichen.
Recommends AHK Studio
Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Re: Send {Sleep}

23 Dec 2016, 09:26

nnnik wrote:Wahrscheinlich würdest du damit kein anderes Resultat erreichen.
Befürchte ich natürlich auch.

Aber ... trotzdem noch ein Versuch:

Könnte mir hier evtl. jemand ohne großen Aufwand andeuten, wie man zu diesem Zweck mit einem Ansatz wie
dllcall("SendInput", ...)
experimentieren könnte?
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Send {Sleep}

24 Dec 2016, 04:10

Moin Zvonko,

ich habe das mal mit dem DllCall("SendInput", ...) auf einem Notebook versucht, dass eine Sleep-Funktion über eine Kombination von FN und F Taste realisiert. Alle von Dir ermittelten Scancodes werden zwar gemäß Returncode gesendet, bewirken aber nichts. Man kann sie allerdings auch nicht 'originalgetreu' als Keyboardinput senden. Dagegen funktioniert hier der DllCall("SetSuspendState", ...). Ich habe hier aber noch ein Win10 in einer 2015'ner Version, weil die späteren Versionen nicht laufen wollen.

Frohe Weihnachten!
just me
Zvonko
Posts: 210
Joined: 19 Jun 2015, 11:52

Re: Send {Sleep}

01 Jan 2017, 07:48

Hallo, just me!

... Und ein fabelhaft friedlich-fröhliches neues Jahr!

PS:
Es ist manchmal schon enttäuschend, wie man manchmal auch mit einem bescheiden klingenden Vorhaben kläglich scheitert!
Ursprünglich wollte ich nur das: Das AHK-Tool, ein Mirror-Backup-Programmchen, soll auf Wunsch des Anwenders nach Abschluss des u.U. länger dauernden Backup-Vorgangs (z.B. vor dem Schlafengehen gestartet) virtuell auf den Power-Button (oder Sleep-Button) drücken ... was ich selber getan hätte, wenn ich das Tool nicht gestartet hätte. Nicht zu machen! Im Hintergrund ein ziemliches Chaos, was MS da im Bereich der Energieoptionen angerichtet hat. Schon terminologisch: Die Option heißt "Sleep", dt. aber "Energie sparen", ist aber de facto dann auf manchen Rechnern gar kein Standby-Modus, sondern eigentlich ein S0-Zustand (z.B. auf meinem Surface 3), der dann je nach Laune evtl. "Modern Standby", "S0 Low Power Idle", "Connected Network Standby" heißt, wobei dann in Windows neben der korrekten dt. Übersetzung "Energiesparmodus im Leerlauf" ganz offiziell auch noch die völlig falsche Übersetzung "Niedriger Energiestand – Leerlauf" auftaucht (bei Befehl powercfg /a) ...
For me as a newbie it is frustrating to fail due to "little" problems in projects in which the entire concept and even complex functions are working perfectly...
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Send {Sleep}

01 Jan 2017, 11:23

Hallo zvonko,

auch Dir ein gutes neues Jahr!

Und ja, auch mit Win 10 hat sich Microsoft in diesem Zusammenhang wieder einmal Neues ausgedacht und ist dabei natürlich wieder nur den Wünschen der Benutzer gefolgt.

Nach meinen Recherchen im MSDN war ich auch nicht klüger. Nach den dokumentierten Voraussetzungen dürfte SetSuspendState von einem AHK-Skript aus bei mir eigentlich eher nicht funktionieren, tut es aber. Vielleicht liegt es daran, dass meine Benutzerkennung der Gruppe der Administratoren angehört (mit vollständig aktivierter UAC ist das ja nicht mehr so riskant). Außerdem habe ich irgendwo gelesen, dass jeder Treiber und jede Anwendung die Aufforderung, den Rechner einschlafen zu lassen, ablehnen kann. Nicht nur AHK hat "nahezu unbegrenzte Möglichkeiten". ;)

Gruß,
just me
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Send {Sleep}

02 Jan 2017, 03:22

Kannst ja mal shutdown /h probieren
https://technet.microsoft.com/en-us/lib ... 32503.aspx
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 53 guests