 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Di Mai 06, 2008 10:37 pm Titel: |
|
|
hmmm so habe das schoen eingebracht, du hast ja schon ne kleine ausnahme reingebaut ö und z, aber wie kann ich das fuer die "sondertasten" machen die ich jezz umbelegt habe? sprich z.b. SC119 _________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Di Mai 06, 2008 11:31 pm Titel: |
|
|
Sollte funktionieren wie angedeutet mit {vkA4}.
| Zitat: | An explicit virtual key code such as {vkFF} may also be specified. This is useful in the rare case where a key has no name and produces no visible character when pressed. Its virtual key code can be determined by following the steps at the bottom fo the key list page.
|
Tahlon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Mi Mai 07, 2008 6:15 am Titel: |
|
|
also das mit den sondertasten habe ich hinbekommen, aber wie kann ich jezz mehrer keys nehmen? ich habe z.b. den hier noch {vkb0sc119}
und das mit dem endkey habe ich auch verstanden, dass ist dann die taste die angezeigt wird bsp an vkffsc112
FF 112 d 0.13 E
| Code: | #noenv
beg:
Loop
{
Input, OutputVar, C*, {vkffsc112}, pwd
if InStr(Errorlevel, "Endkey")
{
StringTrimLeft, EndKey, Errorlevel, 7
if Endkey = e
{
msgbox, Möööp, Blubö, 1
gosub, beg
return
}
}
else if InStr(Errorlevel, "Match") ;PWD erkannt
gosub, done1
return
}
done1:
msgbox, entsperrt
return |
_________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Mi Mai 07, 2008 8:06 am Titel: |
|
|
Mehrere Keys werden einfach aneinander geschrieben.
Da ein Endkey immer nur eine Taste ist erzeugen sie immer unterschiedliche Events.
Etwas befremdlich wirkt, dass du auf Endkey = e abfragst, allerdings "e" niemals diese Routine ausführt!
Nur dein {vkffsc112} ist im Moment als Endkey definiert.
Das GoSub auf "beg:" kannst dir auch sparen. Der Befehl "Continue" verursacht auch, dass die Schleife neu durchlaufen wird (bricht den aktuellen Durchgang ab und beginnt mit einem neuen).
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Mi Mai 07, 2008 10:00 am Titel: |
|
|
Ja das klappt, aber er will irgendwie die mediatasten an der tastatur nicht nehmen, obwohl die endkey richtig ist, ich habe es mal mit dem buchstaben H versucht aber als vk, dies ging
hier nochmal das script
| Code: |
#noenv
; {vkffsc112} MediaDirect taste (FF 112 d 0.13 E)
; {vkb2sc124} media STOP (B2 124 d 0.36 J)
; {vk48sc023} buchstabe "h" (48 023 d 7.16 H )
Loop
{
Input, OutputVar, C*, {vkffsc112}{vkb2sc124}{vk48sc023} , pwd
if InStr(Errorlevel, "Endkey")
{
StringTrimLeft, EndKey, Errorlevel, 7
if Endkey = e
{
msgbox, Möööp, Blubö, EEEEEEEEEEEEEEEEEEEEEEE
Continue
}
if Endkey = h
{
msgbox, Möööp, Blubö, hhhhhhhhhhhhhhhhhhhhhhh
Continue
}
if Endkey = j
{
msgbox, Möööp, Blubö, jjjjjjjjjjjjj
Continue
}
Continue
}
else if InStr(Errorlevel, "Match") ;PWD erkannt
gosub, done1
return
}
done1:
msgbox, entsperrt
return |
_________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Mi Mai 07, 2008 10:38 am Titel: |
|
|
Was bekommst du bei den Mediatasten für einen Vergleichsstring? (habe eine zusätzliche Messagebox eingebaut und als vierte Taste Printscreen getestet)
| Code: | #noenv
; {vkffsc112} MediaDirect taste (FF 112 d 0.13 E)
; {vkb2sc124} media STOP (B2 124 d 0.36 J)
; {vk48sc023} buchstabe "h" (48 023 d 7.16 H )
Loop
{
Input, OutputVar, C*, {vkffsc112}{vkb2sc124}{vk48sc023}{vk2Csc137} , pwd
if InStr(Errorlevel, "Endkey")
{
StringTrimLeft, EndKey, Errorlevel, 7
msgbox "%Endkey%"
if Endkey = e
{
msgbox, Möööp, Blubö, EEEEEEEEEEEEEEEEEEEEEEE
Continue
}
else if Endkey = h
{
msgbox, Möööp, Blubö, hhhhhhhhhhhhhhhhhhhhhhh
Continue
}
else if Endkey = j
{
msgbox, Möööp, Blubö, jjjjjjjjjjjjj
Continue
}
}
else if InStr(Errorlevel, "Match") ;PWD erkannt
{
gosub, done1
break
}
}
return
done1:
msgbox, entsperrt
return |
_________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Mi Mai 07, 2008 11:33 am Titel: |
|
|
ahh jezz weiß ich warum, bei dieser taste kommt nicht wie oben beschrieben das "J" sondern "MEDIA_STOP" _________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Mi Mai 07, 2008 11:49 am Titel: |
|
|
so das habe ich jezz gelöst, jezz kommt das nächste problem, wenn ich jezz im endkey alle tasten freigebe die ich nur noch brauche, habe ich folgendes problem
das ich vorher tasten umbelegt habe, aber als hotkey sprich immer mehr als 2 tasten, wie kann ich das jezz mit dem endkey lösen, da ja im endkey immer endkey = e steht
hier mal das komplette script
im endkey stehen noch nicht alle buchstaben und sondertasten!
| Code: | ;#notrayicon
;;; HOTKEY MANAGMENT
;;; HOTKEY MANAGMENT
;;; HOTKEY MANAGMENT
sc112::
run, C:\Programme\Winamp\winamp.exe
return
SC110::
;; CH +
WinGetTitle, Title, A
if Title = ArcSoft TotalMedia
{
send {vk6dsc001}
return
}
else
send {vkb1sc110}
return
SC119::
;; CH -
WinGetTitle, Title, A
if Title = ArcSoft TotalMedia
{
send {vk6bsc001}
return
}
else
send {vkb0sc119}
return
;;; ab hier handytasten
#a::
;; CH +
WinGetTitle, Title, A
if Title = ArcSoft TotalMedia
send {vk6bsc001}
return
#b::
;; CH -
WinGetTitle, Title, A
if Title = ArcSoft TotalMedia
{
send {vk6dsc001}
return
}
#c::
;; vol +
send {vkafsc130}
return
#d::
;; vol -
send {vkaesc12e}
return
#e::
;; mute
send {vkadsc120}
return
#esc::
msgbox, 1, Tastatur sperren, Wollen sie die Tastatur sperren?
IfMsgBox, ok
gosub, startkey1
return
startkey1:
Loop
{
Input, OutputVar, C*, {vkffsc112}{vkb2sc124}{vk48sc023}{win}abcde , pwd
if InStr(Errorlevel, "Endkey")
{
StringTrimLeft, EndKey, Errorlevel, 7
msgbox "%Endkey%"
if Endkey = e
{
msgbox, Möööp, Blubö, EEEEEEEEEEEEEEEEEEEEEEE
Continue
}
else if Endkey = h
{
msgbox, Möööp, Blubö, hhhhhhhhhhhhhhhhhhhhhhh
Continue
}
else if Endkey = j
{
msgbox, Möööp, Blubö, jjjjjjjjjjjjj
Continue
}
}
else if InStr(Errorlevel, "Match") ;PWD erkannt
{
gosub, done1
break
}
}
return
done1:
msgbox, entsperrt
return
|
_________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Mi Mai 07, 2008 12:20 pm Titel: |
|
|
Also bei meinem Testprogramm funktionieren die Hotkeys weiter, wenn ich sie zusammen mit Input verwende, von daher besteht für mich kein Bedarf diese mittels Input nachzusimulieren.
Aber hier mal ein kleines Sample wo ichs dennoch gemacht habe
#a gibt den aktiven Fenstertitel aus.
Wenn die Tastensperre mit #c aktiviert wird funktioniert der Hotkey eigentlich nicht mehr, allerdings wurde er über den Input-Befehl nachgebildet. Wenn du "Gosub #a" auskommentierst wird der Hotkey nicht mehr aufgerufen solange die Tastensperre aktiv ist.
#b funktioniert immer, deaktiviert aber nur die Hotkey-Sperre (andere Tasten bleiben gesperrt).
| Code: | #noenv
return
#c:: ;Aktiviert die Sperre
Suspend, On ;Deaktiviert Hotkeys allgemein
Loop
{
Input, OutputVar, C*, ha , pwd
if InStr(Errorlevel, "Endkey")
{
StringTrimLeft, EndKey, Errorlevel, 7
if Endkey = h
{
msgbox, Möööp, Blubö, hhhhhhhhhhhhhhhhhhhhhhh
Continue
}
else if Endkey = a
{
if (GetKeyState("LWin") || GetKeyState("RWin"))
{
msgbox #a wurde gedrückt
GoSub #a ;Ruft die Hotkey-Routine von "#a" auf.
}
}
}
else if InStr(Errorlevel, "Match") ;PWD erkannt
{
gosub, done1
break
}
}
return
done1:
msgbox, entsperrt
return
#a:: ;Wird direkt angesprochen, wenn Hotkeys aktiviert sind und indirekt (durch den Input-Befehl), wenn sie deaktiviert sind!
;; CH +
WinGetTitle, Title, A
msgbox %Title%
return
#b:: ;Funktioniert immer, deaktiviert die Hotkey-Sperre
Suspend, Permit
msgbox Hotkeys werden wieder aktiviert!
Suspend, Off
return
|
Ich hoffe dir ist damit geholfen.
Solche Sachen muss ich mir aber auch immer selbst ausdenken, ein wenig anstrengen kannst dich schon auch
Thalon
Edit:
Du liebst Leerzeilen im Skript oder? _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Mi Mai 07, 2008 12:31 pm Titel: |
|
|
ahhh ich verstehe, ist mir auch schon aufgefallen das die windows taste noch geht, habe ich ganz vergessen das man die da wunderbar einbringen kann  _________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Do Mai 08, 2008 2:33 pm Titel: |
|
|
ja schon, ich will ein wenig uebersicht haben, komme sonst ein wenig durcheinander mit den "{" und "}"
bei dem matchlist, was ja das pw ist, kann ich ja nicht die buchstaben nutzen die ich im endkey habe, kann man das irgendwie aendern?
so habe folgendes problem, das mit dem sperren läuft wunderbar, doch wenn ich im sperr modus bin, gehen die mediatasten im aktiven fenster was dann das tv programm ist nicht gehen, aber wenn ich dann auf den desktop klicke gehen diese tasten, ich habe schon nachgeguckt ob es an den wingettitel liegt, aber dies ist es nicht _________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Do Mai 08, 2008 2:45 pm Titel: |
|
|
| Zitat: | | bei dem matchlist, was ja das pw ist, kann ich ja nicht die buchstaben nutzen die ich im endkey habe, kann man das irgendwie aendern? | Müsste man schauen, ob sich da ein Workaround basteln lässt (gibts sicherlich), allerdings fällt mir auf die schnelle kein ein, außer dass man in der Matchlist diese Buchstaben mitprotokolliert und sich quasi selbst nen FIFO-Puffer bastelt aus dem man die Auswertung macht und es nicht mehr über die Matchlist abhandelt.
Läuft zwar etwas am System des Ganzen vorbei, aber wäre noch eine Möglichkeit...
| Zitat: | | doch wenn ich im sperr modus bin, gehen die mediatasten im aktiven fenster was dann das tv programm ist nicht gehen, aber wenn ich dann auf den desktop klicke gehen diese tasten, ich habe schon nachgeguckt ob es an den wingettitel liegt, aber dies ist es nicht | Schon einmal mit einfachen Testskripts probiert wie lange sie noch funktionieren? bzw was erfüllt sein muss damit es nicht mehr geht in diesem Fenster?
Du kannst auch in der Historie (Tray-menü "Open") schauen ob der Code einfach gar nicht erst aufgerufen wird (dann müsste man schauen ob die Keyhistorie die Tasten noch enthält), ob er falsch durchlaufen wird (weswegen auch immer) oder ob etwas anderes nicht zutrifft.
Alternativ funktioniert debuggen per Messagebox im Code recht gut bei diesen Sachen (so arbeite ich meistens bei Quick-and-Dirty-Programmen).
Ferndiagnose ist hierbei schwierig, wenn es nicht ein reproduzierbares Ereignis ist..
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Do Mai 08, 2008 5:36 pm Titel: |
|
|
also, wenn ich auf dem desktop bin geht das script, doch wenn ich das tv fenster hervorhole egal ob maximiert oder std. gehen die tasten einfach nicht, ich teste gleich mal ob er die tasten im fenster vllt. anders erkennt als auf dem desktop
edit:
so also das was ich vermutet habe traff zu, im tv programm fenster erkennt der die tasten anders als wie aufm desktop, liegt bestimmt daran das fuer das tv programm fenster normale ne fernbedienung da ist, die aber der totale mist ist ^^ _________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Outlaw
Anmeldedatum: 14.10.2006 Beiträge: 462
|
Verfasst am: Fr Mai 09, 2008 11:43 am Titel: |
|
|
sooo ich bin fast fertig, dass mit der maus habe ich auch gut gelöst, nur noch ein problem!
und zwar, habe ich am laptop eine an-/ausknopf(powertaste), den habe ich auch schon versucht über ahk zu suchen lassen, aber wird nicht gefunden :\ _________________ MfG,
Outlaw |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Fr Mai 09, 2008 12:49 pm Titel: |
|
|
Ich hätte dir jetzt gerne eine elegante Methode angeboten, allerdings habe ich offenbar irgendwo einen Hund gedreht.
Und zwar würde ich das System vom Herunterfahren abhalten mittels der ShutdownBlockReason-API], allerdings scheint das nur unter Vista zu laufen.
Siehe:
http://msdn.microsoft.com/en-us/library/aa376883(VS.85).aspx
Also kann ich dir nur die OnMessage-Variante anbieten, die haichen im englischen Forum verwendet hat:
http://www.autohotkey.com/forum/post-163896.html&highlight=shutdown+windows#163896
Dabei wird der Ausschaltknopf nicht vollständig deaktivert, sondern der Shutdown bricht ab sobald das Skript geschlossen werden soll (andere Programme schließen sich eventuell vorher).
Ist jetzt nur ein kleiner Behelf, aber vll erfüllts ja auch ihren Zweck...
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|