 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:30 am Titel: Skripte, die wo von DerRaphael gemacht wurden :) |
|
|
Hallo Zusammen!
An dieser Stelle trage ich mal alle meinen Skripte zusammen, die entweder in der Hilfe (auch aus dem Mutterforum) und oder Skripte Sektion (auch da vom Mutterforum) selbst vorgestellt wurden. Dieser Thread soll eine Gedankenstütze für mich (und alle, die das hier verfolgen) sein, so dass ich alles auf einen Blick zusammen habe.
Wer irgendetwas kommentieren möchte, darf sich gerne aufgerufen fühlen so zu tun, schließlich ist das kein demRaphaelSeinThread hier. Fehlermeldungen, Kritik, Kommentare, Anregungen und/oder Wünsche sind immer willkommen.
Als neugieriger Mensch, frage ich mich natürlich immer, wer sich so in diesem Thread tummelt, ob das hier überhaupt sinnig ist und was darüber so gedacht wird. Wie bereits geschrieben, Kommentare interessieren mich!
grüße
derRaphael
Inhalt nach Kategorien: ( Stand 05.02.08 )
Der besseren Übericht wegen habe ich jeweils ein kleines Fähnchen vor den Link gepflanzt, um so zu verdeutlichen in welcher Sprache das Skript ursprünglich veröffentlicht wurde.
Die jeweilige Skript Seite ist verlinkt und enthält einen Auszug des Orginal Postings. Viele der Skripte hier verdeutlichen entweder die Funktionsweise bestimmter AHK Kommandos und Funktionen oder zeigen auf, wie ein bestimmtes Ziel (siehe Fragestellung) erreicht werden kann.
Eigenständige Programme & Skriptlets:
Wie funktioniert eigentlich...
Zuletzt bearbeitet von DerRaphael am Di Feb 05, 2008 2:25 pm, insgesamt 16-mal bearbeitet |
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:33 am Titel: |
|
|
Frage nach ICQ artigen Dock Fenstern
http://de.autohotkey.com/forum/viewtopic.php?t=2413
Resultat:
| Zitat: | | Eine Q'n'D (Quick and Dirty) Lösung wäre es, einen Timer laufen zu haben, der prüft, welche Fenster welche Zustand haben (Max, Min & Position) diese Variablen mit der Eigenen Position Vergleicht und dann ggf die Fenster in neue Positionen Zwingt - Als QnD ist diese Lösung deswegen zu bezeichnen, da das nicht verzögerunsfrei passiert, sondern nur zu Timern Intervallen. Erzeugt so auch mehr Last (CPU). |
DOCK DEMO + AUTO RESIZE
Hallo, wie angedroht habe ich mal eine kleine Demo geschrieben, die das o.a. Prinzip verdeutlicht. Auf meinem Screen sieht das dann so aus:
hier der dazu gehörende quelltext (ein bissi komplex, um fredchf zu zitieren)
| Code: |
; DEMO DOCK
; (c) 2008 derRaphael / zLib Lizenz Stil
;
Title := "WINDOWTESTER"
FileRead, myScript, %A_ScriptFullPath%
menu, Tray, NoStandard
menu, Tray, Add, Zeige Gui, makeGui
menu, Tray, Add, Beenden , AppExit
Menu, Tray, Default, Zeige Gui
GoSub, makeGui
return
~LButton::
SetTimer, GuiPos, OFF
If (Dock)
SetTimer, AndereFenster, OFF
return
~LButton UP::
SetTimer, GuiPos, 50
If (Dock)
SetTimer, AndereFenster, 50
return
makeGui:
Gui, +ToolWindow +Resize -SysMenu
Gui, Margin, 10, 10
Gui, Add, Button, x10 y10 gAppExit w170 h30, DEMO BEENDEN
Gui, Add, Button, xp y50 gT0 wp hp, BLUP BUTTON
Gui, Add, Button, xp y90 gT0 wp hp, BLAH BUTTON
Gui, Add, Edit, xp wp y130 h200 +0x100000 +ReadOnly -Wrap vE0, %myScript%
Gui, Show, w190 h340, %Title%
WinGetPos , wX, wY, mW, mH, %Title%
SetTimer, GuiPos, 50
return
GuiPos:
; Anstelle von A_ScreenWidth und A_ScreenHeight kann auch SysGet verwendet
; werden anstelle folgende Methode verwendet, um so in einer MultiMonitor
; Umgebung zu funktionieren (jedoch muss dann die Routine umgeschrieben werden)
WinGetPos,,,, tH, ahk_class Shell_TrayWnd
vW := A_ScreenWidth, vH := A_ScreenHeight
WinGetPos , wX, wY, gW, gH, %Title% ; Fenster Dimensionen ermitteln
if (wX >= vW-gW) { ; rechts gedockt?
wX := vW-gW, vH := vH-tH
WinMove, %Title%,, %wX%, 0,%gW%,%vH%
If !(Dock) {
SetTimer, AndereFenster, 50
GuiControl, Move, Edit1 , % "x10 y130 h" vH-140-20
}
Dock := 1
} else If (wX < gW) { ; links gedockt?
vH := vH-tH
WinMove, %Title%,, 0, 0,%gW%,%vH%
If !(Dock) {
SetTimer, AndereFenster, 50
GuiControl, Move, Edit1 , % "x10 y130 h" vH-140-20
}
Dock := 1
} else if (dock) { ; ursprungshöhe wiederherstellen
dock = 0
GoSub, GuiClose
GoSub, makeGui
SetTimer, AndereFenster, OFF
}
return
GuiSize:
gW := A_GuiWidth
gH := A_GuiHeight
Gosub, GuiAnchor
return
GuiAnchor: ; QnD_Anchor - Kann noch vieeeeel verbessert werden
WinGet, ClassList, ControlList, %Title%
If (mH<gH) AND (mW<gW) AND !Dock {
Loop, Parse, ClassList,`n,`r
{
ControlGetPos, cX, cY, cW, cH, %A_LoopField%, %Title%
rW := gW-20
If InStr(A_LoopField,"Button")
GuiControl, Move, %A_LoopField%, % "w" rW "h" cH
else
GuiControl, Move, %A_LoopField%, % "w" rW "h" gH-140
}
} else If (mH>=gH) OR (mW>=gW) AND !Dock { ; 'Stumpfes' Reset der GuiSize
bW := bH := eH := tmH := tmW := ""
If (mW>=gW)
bW := " w" 170, tmW := mW
if (mH>=gH)
bH := " h" 30, eH := " h" 200, tmH := mH
GuiControl, Move, Button1, % "x10 y10" bW bH
GuiControl, Move, Button2, % "x10 y50" bW bH
GuiControl, Move, Button3, % "x10 y90" bW bH
GuiControl, Move, Edit1 , % "x10 y130" bW eH
WinMove, %Title%,, %wX%, %wY%, %tmW%, %tmH%
}
return
GuiEscape:
GuiClose:
Gui, 1:Destroy
SetTimer, GuiPos, OFF
return
AppExit:
ExitApp
AndereFenster:
; Prüft alle Dimensionen aller Fenster und passt sie ggf an
WinGetPos,wX,wY,gW,gH, %Title% ; eigene Dimensionen ermitteln
WinGetPos,,,, tH, ahk_class Shell_TrayWnd ; Höhe Startzeile
WinGet, eigeneID, ID, %Title% ; eigeneID ermitteln
vW := A_ScreenWidth, vH := A_ScreenHeight
WinGet, Fenster, List ; alle Fenster auflisten
Loop, %Fenster%
{
WinID := Fenster%A_Index%
if (WinID != eigeneID) {
WinGet, Zustand, MinMax, ahk_id %WinID%
pX := pY := pW := pH := ""
If (Zustand!=-1) AND (Zustand) {
WinRestore, ahk_id %WinID%
pX := ((wX<=gW)? gW:0), pY := 0, pH := vH-tH, pW := vW-gW
} else If !Zustand {
WinGetPos,fX,fY,fW,fH, ahk_id %WinID%
pX := ((fX<gW) && (wX<gW)) ? gW : ""
pW := (((fX+fW) > (vW-gW)) && (wX>vW-gW)) ? fW - (fX+fW-vW+gW) : ""
}
WinMove, ahk_id %WinID%,, pX, pY, pW, pH
}
}
return
T0:
MsgBox %A_GuiControl% wurde gedrückt!
return |
Was passiert hier?
Ein kleines Mini-GUI, das eine Art primitive Anchor Funktion nutzt und links oder rechts in einem Ein-Monitor-Computer-System angedockt werden kann. Beim Andocken werden alle Fenster überprüft und ggf in Ihrer Größe neu angepasst. _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:35 am Titel: |
|
|
Frage nach Reload des Skripts mit Parametern
http://de.autohotkey.com/forum/viewtopic.php?t=2409
Resultat
| Code: | #SingleInstance FORCE ; Wichtigste Zeile, weil hier gesagt wird,
; dass das Skript exakt nur einmal zu jeder Zeit
; ausgeführt werden darf. Als keine Zwei Instanzen
; des gleichen Skripts
SetTimer, INFO, 50
param1 = %1%
return
INFO:
ToolTip, % "Programm ID(" DllCall("GetCurrentProcessId") ") - Param1:" param1
return
^r::
Kommando := (!(A_IsCompiled)? A_AhkPath " " : "") A_ScriptName " " param1
Run, %Kommando%
return |
das script nutzt nicht den reload befehl, sondern SingleInstance, Force und erzeugt ein Kommando, welche prüft, ob es kompiliert ist (A_IsCompiled) trifft das nicht zu, wird der Interpreter (A_AhkPath) und ein Leerzeichen zugefügt, sonst der Skriptname und der Parameter _________________
Zuletzt bearbeitet von DerRaphael am Di Jan 22, 2008 11:39 am, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:39 am Titel: |
|
|
Frage: Über ein AHK Script ein anderes Script reloaden
http://de.autohotkey.com/forum/viewtopic.php?t=2396
Resultat
ok - die einfachste aller lösungen (so denke ich mir zumindest) haben alle wieder mal vergessen:
[skript1.ahk]
| Code: | #Persistent
#SingleInstance, FORCE
; zur Kontrolle wird jetzt ein Timer gestartet, der den Zweck hat
; die eigene PID und die Maus-Koordinaten auszugeben
SetTimer, INFO, 50
return
INFO:
MouseGetPos, mX, mY
PID := DllCall("GetCurrentProcessId")
ToolTip, % "PID(" PID ") - MausX:" mx " MausY:" mY
return
|
die direktive #persistent sorgt dafür dass das skript so lange läuft, bis es beendet wird, die direktive #singleinstance, force sorgt dafür, dass dieses skript exakt einmal zu jeder zeit läuft (also nie zweimal das gleiche skript)
die letzte der beiden direktiven ist im zielskript die entscheidende stelle. sobald das skript neu gestartet wird, überspringt sie die abfrage, beendet die alte instanz und startet sich neu. #persistent wird nur benötigt, da nur ein timer, jedoch kein GUI, hotstring oder hotkey definiert wurde.
[skript2.ahk]
| Code: | SetTitleMatchMode, 2
Interpreter := A_AhkPath ; wird benötigt, um das skript neustarten
; zu können
Gui, Add, Button, w120 gAction, skript1.ahk neustarten
Gui, Add, Button, wp gAction, skript1.ahk beenden
Gui, Add, Button, wp gAction, skript2.ahk neustarten
Gui, Add, Button, wp gAction, Alles beenden
Gui, +ToolWindow
Gui, Show,, Kommando Los!
return
Action:
Knopf := A_GuiControl
If (InStr(Knopf, "skript1")) { ; Ist Text "skript1" im Auslösebutton?
If (InStr(Knopf, "neustarten")) { ; Ist Text "neustarten" im Auslösebutton?
Kommando := """" Interpreter """ """ A_ScriptDir "\skript1.ahk"
Run, %Kommando% ; Kommando (mit Interpreter) ausführen
} else { ; sonst muss es schließen sein
DetectHiddenWindows, On
Skript1 := A_ScriptDir "\skript1.ahk"
WinClose, %Skript1% ahk_class AutoHotkey
}
} else { ; Muss wohl ein anderer Knopf sein
If (InStr(Knopf, "neustarten")) { ; Ist Text "neustarten" im Auslösebutton?
reload ; JA: Starte dieses Skript neu
} else {
DetectHiddenWindows, On ; NEIN: erkenne versteckte Fenster
Skript1 := A_ScriptDir "\skript1.ahk"
WinClose, %Skript1% ahk_class AutoHotkey
; AHK_Class Autohotkey ist die
; Class vom Fenster, das man sieht,
; wenn das TrayIcon doppelt angeklickt
; wurde - deswegen funktionierts!
exitApp ; Beende mich selbst
}
}
return |
das skript2 ist weniger aufregend. es enthält nur ein minigui und ein label, das feststellt, welcher knopf gedrückt wurde (genaugenommen, prüft es den text des knopfes auf bestimmte merkmale)
Hervorzuheben wäre eventuell die methode, die das zielskript schließt.
aber das steht ja eigentlich auch alles schon im quelltext drin
EDIT - So einfach ist es wirklich (alles unwesentliche ist weg)
[Skript1.ahk]
| Code: | #Persistent
#SingleInstance, FORCE
SetTimer, INFO, 50
return
INFO:
ToolTip, % "Skript1: Programm ID(" DllCall("GetCurrentProcessId") ")
return |
[skript2.ahk]
| Code: |
^r:: ; STRG+R startet Skript 1 (das Tooltip Dingens) neu
MsgBox Ich starte skript1.ahk neu
Run, % A_ScriptDir "\skript1.ahk"
return
|
Also für mich sieht das nicht nur einfacher, sondern extreeeem viel kürzer aus! _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:43 am Titel: |
|
|
Frage: Nur Dateinamen markieren
http://de.autohotkey.com/forum/viewtopic.php?t=2399
| Code: | $f2::
WinGet, _window_id, ID, A
WinGetClass, _class, ahk_id %_window_id%
if _class in ExploreWClass,CabinetWClass,Progman,#32770
{
oCB := ClipboardAll
SendPlay, {f2}^c
fileName := ClipBoard
SplitPath, fileName,,,, fnne
l := StrLen(fnne)
SendInput, {Control Down}{Home}{Control Up}
SendInput, {Shift Down}{Right %l%}{Shift Up}
ClipBoard := oCB, oCB := ""
}
else
SendInput {F2}
return |
diese variante prüft erst ob es sich um den desktop, ein explorer fenster oder einen dialog handelt. trifft das zu, kopiert es sich den dateinamen, nutzt die splitpath, um nur den namen ohne ext zu bekommen (funktioniert auch mit verzeichnissen), geht dann mittels str + pos1 an den zeilenanfang und schickt bei gedrückter shifttasten anzahl des namens nach rechts
wenn es kein passendes fenster erkennt, gibt es einfach f2 aus
getestet unter win2k - funktioniert soweit erwartungsgemäß
Angepasst, damit es im TC funktioniert ...
| Code: | Hotkey, $f2 , FileReName, ON
Hotkey, $+f6, FileReName, ON
return
FileReName:
If (A_ThisHotKey="$f2") {
HK := "{F2}"
} else If (A_ThisHotKey="$+f6") {
HK := "{Shift Down}{F6}{Shift up}"
}
WinGet, _window_id, ID, A
WinGetClass, _class, ahk_id %_window_id%
if _class in ExploreWClass,CabinetWClass,Progman,#32770,TTOTAL_CMD
{
oCB := ClipboardAll
SendInput, %HK%
SendInput, ^c
fileName := ClipBoard
SplitPath, fileName,,,, fnne
l := StrLen(fnne)
SendInput, {Control Down}{Home}{Control Up}
SendInput, {Shift Down}{Right %l%}{Shift Up}
ClipBoard := oCB, oCB := ""
}
else
SendInput, %HK%
return
|
Änderungen gegenüber meinem vorherigen Script: die Hotkeys werden jetzt mittels des Hotkey Befehls aktiviert.
Das Skript prüft welcher Hotkey getriggert hat und formt das in den passenden Send-Syntax um. Die CheckListe wurde um eine ClassNN erweitert. _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:45 am Titel: |
|
|
Frage: Zufallsname auswählen
http://de.autohotkey.com/forum/viewtopic.php?t=2400
Resultat
| Code: | meinZiel := "pfad\zum\zielordner"
Loop, %A_ScriptDir%\*.*, 2
{
if (A_LoopFileExt = "dir") AND (InStr(A_LoopFileAttrib,"D")) {
; FileCopyDir, %A_LoopFileLongPath%, %meinZiel%
MsgBox % A_loopFileName
}
} |
in dieser umgebung getestet, und funktioniert wie erwartet
 _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:47 am Titel: |
|
|
STRG+WIN+A
| Code: | #^a::
oCB := ClipboardAll
Send, ^c
ClipWait
URL := "http://www.autohotkey.com/search/"
. "search.php?site=4&refine=1&result_page=search.php&"
. "query_string=" RegExReplace(ClipBoard,"(^\s|\s$)")
. "&path=docs/"
run, % URL
ClipBoard := oCB
return |
das kleine skript sucht das markierte wort im autohotkey forum _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:50 am Titel: |
|
|
Frage: Andere Fenster im Vordergrund Halten
http://de.autohotkey.com/forum/viewtopic.php?p=19239#19239
Resultat:
| Code: | ^f1::
Titel := "Rechner"
ClassNN := "SciCalc"
WinSet, AlwaysOnTop, Toggle, %Titel% ahk_class %ClassNN%
return |
strg+f1 setzt das Fenster "Rechner" (wissenschaftliche Ansicht) auf immer im Vordergrund (gemeint ist der windows-taschenrechner Run, Calc.exe). nochmals strg+f1 hebt das wieder auf _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:51 am Titel: |
|
|
Pöhser MULTI Fenster Killer Public Beta
Kleines Programm, um mehrere selbst zu wählende Fenster, die immer wieder auftauchen genauso schnell wieder zu schließen.
Diese Version ist als eine Beta (Vorab) Version zu sehen. Ich habe zwar selbst recht intensiv alle Optionen und das Handling ausprobiert, kann aber nicht ausschließen, dass nicht doch noch ein Fehler sich eingeschlichen hat, der mir entgangen ist. Ich würde mich sehr über eine rege Diskussion an dieser Stelle freuen, so dass etwaige Fehler schnell ausgemezt werden können.
Und so schauts jetzt aus, was als kleines Script begann...
Da der Quelltext im Gegensatz zu der Single Fenster Version ein wenig gewachsen ist,, habe ich mich das Ganze auch zum Download anzubieten.
Neue Multi Window Version (Beta)
AlteVersion (Ein Fenster)
Für alle hartgesottenen gibt es hier den Quelltext dazu:
| Code: | ; pöhserFensterKiller.ahk / (c) 2008 derRaphael / zLib Lizenz Stil
; Schließ das pöhse Fenster!
#WinActivateForce ; Krieg das Fenster - egal wie
SetBatchLines, -1 ; Mach das Skript schneller
SetTitleMatchMode, Fast ; Mir langen nur ein paar Daten ...
SetTitleMatchMode, RegEx
DetectHiddenWindows, On ; Ich kriege Euch ALLE!!!
IniFile = poehseFenster.ini
IniRead, HilfeAnzeigen, %IniFile%, standard, HilfeAnzeigen, ja
Menu, Tray, Icon, Shell32.dll, 77 ; zeig n lustiges bild
Menu, Tray, Add, Verwaltung anzeigen, PöhseFensterListe
Menu, Tray, Add, Hilfe anzeigen, help
Menu, Tray, Add, Killer an/aus , machDenModus
Menu, Tray, Add
Menu, Tray, Add, PöhseFensterKiller beenden, Beenden
Menu, Tray, NoStandard
Menu, Tray, Default, Verwaltung anzeigen
Menu, ContextMenu, Add, Eintrag löschen, LöschDas
Menu, ContextMenu, Add, Eintrag bearbeiten, BearbeiteDas
Menu, ContextMenu, Add
Menu, ContextMenu, Add, Verwaltung schließen, BeendeDas
Gosub, machInternePöhseListe
If (HilfeAnzeigen="ja") {
Gosub, help
}
return
+^F1::
help:
MsgBox,68,Information, % "Zur Benutzung:`n`n"
. "SHIFT+STRG+Q: Neues Pöhses Fenster wählen`n"
. "SHIFT+STRG+A: Pöhse Fenster verwalten`n"
. "SHIFT+STRG+W: Auf Pöhses Fenster achten an/aus`n`n"
. "SHIFT+STRG+F1: Diese Hilfe anzeigen`n"
. "SHIFT+STRG+F10: Programm editieren`n"
. "SHIFT+STRG+F11: Programm beenden`n"
. "SHIFT+STRG+F12: Programm neu laden`n`n"
. "Soll die Hilfe beim Nächsten Start angezeigt werden?`n"
IfMsgBox, Yes
HilfeAnzeigen := "ja"
else
HilfeAnzeigen := "nein"
IniWrite, %HilfeAnzeigen%, %IniFile%, standard, HilfeAnzeigen
return
+^q::
MsgBox,64,Hinweis, % "Such das Dich nervende pöhse Fenster`,`n"
. "halte die STRG-Taste und klick es mit der Maus an`n"
. "`n"
. "Es wird dich nie wieder ärgern!"
KlickDasPöhseFenster:
Hotkey, ^LButton, NeuesPöhsesFenster, ON
SetTimer, hinweisAN, 50
return
+^w::
machDenModus:
if !(mEWZ)
{
Menu, Tray, Icon, Shell32.dll, 66 ; zeig n anderes bild
SetTimer, machEsWiederZu, 10 ; starte entdecker function
mEWZ=1 ; merke, was du getan hast
}
else
{
Menu, Tray, Icon, Shell32.dll, 77
SetTimer, machEsWiederZu, OFF
mEWZ=0
}
return
+^a::
PöhseFensterListe:
If !(WinExist("Verwaltung der pöhsen Fenster")) {
Gui, Add, ListView, r20 w600 +Grid -Multi gBearbeiteDas vPöhseListe, ClassNN|Pöhser Filter|Pöhser Ursprung
Gui, Add, Button, Hidden Default w1 h1 x0 y0 gBearbeiteDas
Hotkey, IfWinActive, Verwaltung der pöhsen Fenster
Hotkey, Escape, BeendeDas, ON
Hotkey, Delete, LöschDas, ON
Hotkey, IfWinActive
IniRead, AnzahlPöhserFenster, %IniFile%, standard, AnzahlPöhserFenster
GoSub, machPöhseListe
Gui, Show,, Verwaltung der pöhsen Fenster
LV_ModifyCol() ; automatische Breite anpassen
} else {
WinActivate, Verwaltung der pöhsen Fenster
}
return
machInternePöhseListe:
InternePöhseListe := ""
IniRead, AnzahlPöhserFenster, %IniFile%, standard, AnzahlPöhserFenster, 0
Loop, %AnzahlPöhserFenster%
{
Position := A_Index
pöhserFilterSchlüssel = pöhserFensterFilter%Position%
pöhseClassNNSchlüssel = pöhseFensterClassNN%Position%
IniRead, gelesenerFilter, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
IniRead, geleseneClassNN, %IniFile%, pöhseFenster, %pöhseClassNNSchlüssel%
If (geleseneClassNN) AND (geleseneClassNN!="error")
{
InternePöhseListe .= gelesenerFilter "`n" geleseneClassNN "`n"
}
}
return
machEsWiederZu:
Loop, Parse, InternePöhseListe, `n
{
If (Mod(A_Index,2)) {
pöhserFilter := A_LoopField
pöhseClassNN := ""
} else {
pöhseClassNN := A_LoopField
IfWinExist, %pöhserFilter% ahk_class %pöhseClassNN%
{ ; existiert das pöhse Fenster?
; Zeig her das Ding
WinActivate, %pöhserFilter% ahk_class %pöhseClassNN%
WinWaitActive ; Warte du nur ....
WinClose ; und weg is!
}
}
}
return
NeuesPöhsesFenster:
Hotkey, ^LButton, NeuesPöhsesFenster, OFF
MouseGetPos,,, HWND ; Zeig mir das pöhse Fenster!
WinGetClass, NeuePöhseClassNN, ahk_id %HWND% ; Merke Dir die ClassNN
WinGetTitle, NeuerPöhserTitel, ahk_id %HWND% ; Merke Dir den Titel
Gosub, hinweisAUS
Resultat := erkennePöhsesFenster( neuerPöhserTitel, neuePöhseClassNN )
If (Resultat = "unbekannt" ) {
MsgBox,65,Hab keine Furcht!, % "Ich habe das neue pöhse Fenster erkannt!`n`n"
. "Es hat folgende ClassNN:`n"
. """" NeuePöhseClassNN """`n"
. "und trägt folgenden Titel:`n"
. """" NeuerPöhserTitel """`n`n"
. "So merke ich mir das! "
IfMsgBox, OK
{
MerkePöhsesFenster( NeuerPöhserTitel, NeuePöhseClassNN )
Gosub, machPöhseListe
Gosub, machInternePöhseListe
Gosub, machEsWiederZu
If !(mEWZ) {
Gosub, machDenModus
}
}
} else If ( Resultat = "alterHut" ) {
Titel := "Ich hab da mal so 'ne Frage..."
SetTimer, andereKnöpfe, 1
MsgBox,34,%Titel%, % "Das pöhse Fenster mit den Eigenschaften`n`n"
. "Titel: "
. """" NeuerPöhserTitel """`n"
. "ClassNN: "
. """" NeuePöhseClassNN """`n`n"
. "kenne ich schon. Ist das gar nicht so pöhse und`n"
. "soll ich das wieder vergessen?"
IfMsgBox, Ignore
Merkbefreiung(neuerPöhserTitel, neuePöhseClassNN )
else IfMsgBox, Abort
GoSub, PöhseFensterListe
else IfMsgBox, Retry
Gosub, KlickDasPöhseFenster
} else If ( Resultat = "hutMitFeder" ) {
pöhserFilterSchlüssel = pöhserFensterFilter%ErrorLevel%
IniRead, bekannterPöhserFilter, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
SetTimer, andereKnöpfe, 1
Titel := "Ich hab da mal so 'ne Frage..."
MsgBox,34,%Titel%, % "Das pöhse Fenster kenne ich schon.`n"
. "Es hat schon einen eigenen Filter. So schaut's a mal aus:`n"
. "Ursprung: "
. """" NeuerPöhserTitel """`n"
. "Filter: "
. """" bekannterPöhserFilter """`n"
. "ClassNN: "
. """" NeuePöhseClassNN """`n`n"
. "Was mache ich denn da am besten?"
IfMsgBox, Ignore
Merkbefreiung(neuerPöhserTitel, neuePöhseClassNN, bekannterPöhserFilter )
else IfMsgBox, Abort
GoSub, PöhseFensterListe
else IfMsgBox, Retry
Gosub, KlickDasPöhseFenster
} else if (Resultat = "nichtDieMama") {
MsgBox, 16, NEIN DAS MACHE ICH NICHT, % "Wie möchtest du denn dann die ganzen"
. "pöhsen Fenster verwalten können? Hmmmm?`n`n"
. "Das lassen wir also schön bleiben!"
}
Gosub, machInternePöhseListe
return
andereKnöpfe:
IfWinExist, Ich hab da mal so 'ne Frage...
{
SetTimer, andereKnöpfe, OFF
ControlSetText, Button1, &Verwalten
ControlSetText, Button2, V&erklickt
ControlSetText, Button3, Ve&rgiss es
}
return
hinweisAN:
ToolTip, STRG + MausKlick auf das PÖHSE Fenster.
return
hinweisAUS:
SetTimer, hinweisAN, OFF
ToolTip
return
machPöhseListe:
Gui, 1:Default
LV_Delete()
Loop, %AnzahlPöhserFenster%
{
Position := A_Index
pöhserTitelSchlüssel = pöhserFensterTitel%Position%
pöhserFilterSchlüssel = pöhserFensterFilter%Position%
pöhseClassNNSchlüssel = pöhseFensterClassNN%Position%
IniRead, gelesenerTitel , %IniFile%, pöhseFenster, %pöhserTitelSchlüssel%
IniRead, gelesenerFilter, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
IniRead, geleseneClassNN, %IniFile%, pöhseFenster, %pöhseClassNNSchlüssel%
If (geleseneClassNN) AND (geleseneClassNN!="error")
{
LV_Add("",geleseneClassNN,gelesenerFilter,gelesenerTitel)
}
}
return
GuiContextMenu:
If (A_GuiControl="PöhseListe") {
Menu, ContextMenu, Show
}
return
GuiClose:
BeendeDas:
Hotkey, Delete, LöschDas, OFF
Hotkey, Escape, BeendeDas, OFF
Gui, Destroy
return
BearbeiteDas:
Hotkey, Delete, LöschDas, OFF
If (A_GuiEvent="doubleclick") AND (A_GuiControl="PöhseListe") {
Zeile := A_EventInfo
} else {
Zeile := gibDieZeile()
}
if (Zeile) {
LV_GetText(pöhseClassNN, Zeile, 1)
LV_GetText(pöhserFilter, Zeile, 2)
LV_GetText(pöhserTitel , Zeile, 3)
Hotkey, Escape, BeendeDas, OFF
Gui, 2:+Owner -Caption +Border
Gui, 2:Font, s12 bold
Gui, 2:Add, Text, w400, Der Pöhser Fenster Filter arbeitet mit regulären Ausdrücken (RegEx)
Gui, 2:Font
Gui, 2:Add, Text, x90 w310, % "Um alle Titel zu erfassen, die mit BLAH beginnen, "
. "langt es entweder ^BLAH oder BLAH* einzugeben.`n"
. "Um alle Fenster zu kriegen, die mit BLAH aufhören, "
. "langt es entweder BLAH$ oder *BLAH einzugeben.`n"
. "Um alle Fenster zu kriegen, die irgendwo BLAH "
. "im Titel haben, langt es *BLAH* einzugeben.`n"
Gui, 2:Add, Picture, x30 yp+10 w32 h32 Icon3, USER32.DLL
Gui, 2:Add, Text, x10, Pöhses Fenster Filter:
Gui, 2:Add, Edit, w400 vFilter, %pöhserFilter%
Gui, 2:Add, Text,, Pöhses Fenster Urpsrung:
Gui, 2:Add, Edit, w400 vUrsprung +Readonly, %pöhserTitel%
Gui, 2:Add, Text,, Pöhses Fenster ClassNN:
Gui, 2:Add, Edit, w400 vClassNN +Readonly, %pöhseClassNN%
Gui, 2:Add, Button, wp g2Speichern +Default, &Speichern
Gui, 2:Add, Button, wp g2Beenden, &Verwerfen
Gui, 2:Show, w420, Pöhses Fenster bearbeiten
}
return
2Speichern:
Gui, 2:Submit
Merkbefreiung(pöhserTitel, pöhseClassNN, pöhserFilter)
MerkePöhsesFenster( Ursprung, ClassNN, Filter)
Gosub, machInternePöhseListe
Gui, 1:Default
LV_Modify(Zeile,"",ClassNN, Filter, Ursprung)
LV_ModifyCol() ; automatische Breite anpassen
2GuiEscape:
2GuiClose:
2Beenden:
Gui, 2:Destroy
Hotkey, Escape, BeendeDas, ON
return
LöschDas:
Titel := "Ohne Rücksicht auf Verluste..."
MsgBox,36,%Titel%,% "Diese Aktion kann nicht rückgängig gemacht"
. " werden`nSoll ich das wirklich löschen?"
IfMsgBox, Yes
{
Zeile := gibDieZeile()
LV_GetText(pöhseClassNN, Zeile, 1)
LV_GetText(pöhserFilter, Zeile, 2)
LV_GetText(pöhserTitel , Zeile, 3)
If Zeile
Merkbefreiung(pöhserTitel, pöhseClassNN, pöhserFilter)
Gosub, machInternePöhseListe
Gosub, machPöhseListe
}
return
+^f12::
ReloadScript:
reload
return
+^f11::
Beenden:
exitApp
return
+^f10::
EditScript:
edit
return
gibDieZeile()
{
Zeile = 0
Loop
{
lZeile := LV_GetNext(lZeile)
if not lZeile
break
Zeile := lZeile
}
return, % Zeile
}
erkennePöhsesFenster( pöhserTitel, pöhseClassNN )
{
If (pöhserTitel="Verwaltung der pöhsen Fenster") AND (pöhseClassNN="AutohotkeyGUI")
{
Resultat := "nichtDieMama"
} else {
Global IniFile
IniRead, AnzahlPöhserFenster, %IniFile%, standard, AnzahlPöhserFenster
If (AnzahlPöhserFenster="error") {
IniWrite, 1, %IniFile%, standard, AnzahlPöhserFenster
AnzahlPöhserFenster=1
}
Resultat := "unbekannt" ; standardergebnis
Loop, % AnzahlPöhserFenster
{
Position := A_Index
pöhserTitelSchlüssel = pöhserFensterTitel%Position%
pöhserFilterSchlüssel = pöhserFensterFilter%Position%
pöhseClassNNSchlüssel = pöhseFensterClassNN%Position%
IniRead, gelesenerTitel , %IniFile%, pöhseFenster, %pöhserTitelSchlüssel%
IniRead, gelesenerFilter, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
IniRead, geleseneClassNN, %IniFile%, pöhseFenster, %pöhseClassNNSchlüssel%
If (gelesenerTitel=pöhserTitel)
AND (geleseneClassNN=pöhseClassNN) {
Resultat := "alterHut" ; kenne ich schon => Alter Hut
If (gelesenerFilter!=pöhserTitel) {
Resultat := "hutMitFeder" ; gibt es spezialFilter?
ErrorLevel := A_Index
}
break ; Schleifenende
}
}
}
Return, % Resultat
}
MerkePöhsesFenster( PöhserTitel, PöhseClassNN, PöhserFilter="")
{
Global IniFile ; Wo ist das IniFile?
IniRead, AnzahlPöhserFenster, %IniFile%, standard, AnzahlPöhserFenster, 1
neuesPöhsesDing = 1 ; Standard: Neues pöhses Ding!
Loop, % AnzahlPöhserFenster
{
Position := A_Index
IniRead, geleseneClassNN, %IniFile%, pöhseFenster, pöhseFensterClassNN%Position%, %leer%
If (geleseneClassNN="error") OR !(geleseneClassNN) { ; Stelle leer?
neuesPöhsesDing = 0 ; kein neues pöhses Ding
break ; Schleifenende, weil Stelle leer
}
}
If !(PöhserFilter) { ; wenn ich keinen Filter habe,
PöhserFilter:=PöhserTitel ; mache ich mir einen!
}
If (neuesPöhsesDing) { ; Neues Pöhses Dingens?
Position++ ; Neue Position
AnzahlPöhserFenster++ ; Sind jetzt mehr pöhse Fenster, als vorher
IniWrite, %AnzahlPöhserFenster%, %IniFile%, standard, AnzahlPöhserFenster
}
pöhserTitelSchlüssel = pöhserFensterTitel%Position%
pöhserFilterSchlüssel = pöhserFensterFilter%Position%
pöhseClassNNSchlüssel = pöhseFensterClassNN%Position%
IniWrite, %PöhserTitel% , %IniFile%, pöhseFenster, %pöhserTitelSchlüssel%
IniWrite, %PöhserFilter%, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
IniWrite, %PöhseClassNN%, %IniFile%, pöhseFenster, %pöhseClassNNSchlüssel%
}
Merkbefreiung(pöhserTitel, pöhseClassNN, pöhserFilter="" )
{
Global IniFile
IniRead, AnzahlPöhserFenster, %IniFile%, standard, AnzahlPöhserFenster, 1
If !(PöhserFilter) { ; wenn ich keinen Filter habe,
PöhserFilter:=PöhserTitel ; mache ich mir einen!
}
Loop, % AnzahlPöhserFenster
{
Position := A_Index
pöhserTitelSchlüssel = pöhserFensterTitel%Position%
pöhserFilterSchlüssel = pöhserFensterFilter%Position%
pöhseClassNNSchlüssel = pöhseFensterClassNN%Position%
IniRead, gelesenerTitel , %IniFile%, pöhseFenster, %pöhserTitelSchlüssel%
IniRead, gelesenerFilter, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
IniRead, geleseneClassNN, %IniFile%, pöhseFenster, %pöhseClassNNSchlüssel%
If (gelesenerTitel=pöhserTitel)
AND (gelesenerFilter=pöhserFilter)
AND (geleseneClassNN=pöhseClassNN) {
IniWrite, %leer%, %IniFile%, pöhseFenster, %pöhserTitelSchlüssel%
IniWrite, %leer%, %IniFile%, pöhseFenster, %pöhserFilterSchlüssel%
IniWrite, %leer%, %IniFile%, pöhseFenster, %pöhseClassNNSchlüssel%
break
}
}
}
|
Eine kleine Hilfe zur Benutzung:
STRG+SHIFT+F1 zeigt Hilfe
STRG+SHIFT+F10 startet Editor
STRG+SHIFT+F11 beendet das Skript
STRG+SHIFT+F12 lädt Skript neu
SHIFT+STRG+Q Zielfensterwahl: Auf das nimmer mehr zu erscheinende Fenster klicken, und wech is...
SHIFT+STRG+A Pöhse Fenster Verwaltung
SHIFT+STRG+W AutoClose AN/AUS
Die Filterfunktion unterstützt reguläre ausdrücke, so dass man recht komfortabel nach klassischer DOS Manier entweder mit Asterisk (*) arbeiten kann, oder mit komplexe RegEx Ausdrücken (Einfache Beispiele, siehe Screenshot - sind im Programm enthalten).
Es ist NICHT empfehlenswert das Fenster selbst, oder eines seiner Subfenster in die Liste der Pöhsen Fenster aufzunehmen - als ich das probierte, funktionierte zwar noch mein Programm, jedoch fraß der Interpreter > 50% meiner CPU Leistung auf. Wers nicht lassen kann sei hiermit gewarnt worden.
gruß
derRaphael
Release Historie:
13.01.08 - Alpha Release - Vorstellung der Idee
14.01.08 - Public Release RC 1 - Erweiterte Einstellungsmöglichkeiten
EDIT: Bugfixed, danke an denick
EDIT (14.01.2008): Neue Version upped _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:54 am Titel: |
|
|
Frage: Per STRG+V nach CMD.EXE (Console) Kopieren
http://de.autohotkey.com/forum/viewtopic.php?p=18974#18974
Resultat
| Code: |
; Für ConsolenFenster jedwelcher Art :)
#IfWinActive ahk_class ConsoleWindowClass
^v:: ; Dein Hotkey hier
SendMode, Input ; weil besser ist das - zuverlässiger
Send, {Alt Down} {Alt up}be{Enter} ; macht das menü auf
; -> bearbeiten -> einfügen
return ; zurückkehren zum status quo
#IfWinActive ; andere hotkeys werden nicht mehr gestört
|
_________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 11:58 am Titel: |
|
|
Frage: Alle möglichen Groß/Klein Kombinationen aus einem Wort
Mutterforum: Ask for Help
Resultat
| Code: | ; CapsCombo.ahk
; ===============
; This Scrippet lets You input any String and
; outputs every possible Upper/LowerCase Combination
;
; toBin function copyrights to Titan
; found in http://www.autohotkey.com/forum/viewtopic.php?t=13522
;
; release under zlib license
; (c) 12/2007 derRaphael
Gui, Add, Edit, x5 vstr w300 r1, EnterYourText
Gui, Add, Button, yp x310 w80 h20 gStartMagic, Go!
Gui, Add, Edit, +ReadOnly x5 w390 r25 vCapsResult
Gui, Show,, Show me every single capitalized Combination
return
GuiClose:
ExitApp
StartMagic:
empty=
GuiControlGet, str,, str ; Get our String
Loop, % strLen(str) ; make up a zeroFilled str length equals length
zeroFilled .= "0" ; of our input str
; this loops every possible UpperLowerCase Combo
; due to its nature, we have two possibilities
; (upper/lower) therefor we only need to compute
Loop, % 2**strLen(str) ; possibilities power length to get total number
{
variation := SubStr(zeroFilled,1,strLen(str)-StrLen(toBin(A_Index-1)))
variation .= toBin(A_Index-1)
Loop, Parse, variation ; variation is the Binary version of every
{ ; possible Upper/Lower Case combination
if (A_LoopField) { ; if our value in variation is 1 make it uppercase
list .= strUpper(SubStr(str,A_Index,1))
} else { ; else make it lowercase
list .= strLower(SubStr(str,A_Index,1))
}
}
list .= "`r`n" ; add linefeed
}
GuiControl,,CapsResult,%list%
return
; Function Calls **************************************************************
strUpper(str){ ; wrapper function for StringUpper
StringUpper, str, str
Return, str
}
strLower(str){ ; wrapper for StringLower
StringLower, str, str
Return, str
}
; toBin origin from Titan. Thanks!
; http://www.autohotkey.com/forum/viewtopic.php?t=13522
; regExModded to remove leading zeros
toBin(i, s = 0, c = 0) {
l := StrLen(i := Abs(i + u := i < 0))
Loop, % Abs(s) + !s * l << 2
b := u ^ 1 & i // (1 << c++) . b
Return, RegExReplace(b,"^0+")
} |
_________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 12:01 pm Titel: |
|
|
Frage: Hotkeys für BBcode und markierte Wörter
Mutterforum: Ask for Help
| Code: | keyAction := "^b:b|^u:u|^i:i|^!c:code|^!u:url|^!i:img|^!l:list"
browser := "Firefox"
SetTitleMatchMode, 2
Loop, Parse, keyAction, |
{
F := A_LoopField, K := SubStr(F,1,InStr(F,":")-1)
Hotkey, %K%, ActionTag, ON
}
return
ActionTag:
Loop, Parse, keyAction, |
{
F := A_LoopField, A := SubStr(F,InStr(F,":")+1)
If (InStr(F,A_ThisHotkey)) && (WinActive(browser)) {
CB := ClipboardAll
Send ^c
ClipBoard = [%A%]%ClipBoard%[/%A%]
Send ^v
ClipBoard := CB, CB := ""
}
}
return |
i dont think its simple. in autoexecute section it loop parses the given keyAction variable for piping symbol and splits at colon. 1st part will be taken as hotkey assignment (also in loop).
in label ActionTag it loopparses the keyaction again, but this time the code takes 2nd part of loopfield and uses it as bbcode fragment. after checking if the triggering hotkey is in loopfield and target window active it backups, pastes modified content back and restores previous clipboard before emptying its backup variable
it can be shortened by replacing explaining variable names through shorter ones (eg keyAction becomes kA) this will save another 21 bytes.
but again this is no who has the shortest contest. it just shows a different approach of accomplishing the same task. _________________
Zuletzt bearbeitet von DerRaphael am Di Jan 22, 2008 12:09 pm, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 12:06 pm Titel: |
|
|
Frage: Mehrere Checkbox markieren
Mutterforum: Ask for Help
Resultat
my posted code pressed the red marked button, and uppon the new popped dialog window it pressed the green marked checkboxes
but talking about a systreeview32 it looks like this one?
anyways, this should work. i assigned the hotkey SHIFT+CTRL+O to either enable or disable (toggle) the 1st three checkboxes in accessibility window
| Code: |
+^o::
SetTitleMatchMode, 2
run, %A_WinDir%\System32\inetcpl.cpl
; wait for Internet Options Window
WinWaitActive, Internet ahk_class #32770
; CLICKBUTTON -> Accessibility
ControlClick, Button14
; Wait for Accessibility Window
WinWaitActive, ahk_class #32770
ControlClick, Button2 ; colors
ControlClick, Button3 ; fonts
ControlClick, Button4 ; more fonts
ControlClick, Button8 ; OK
; wait for Internet Options Window
WinWaitActive, Internet ahk_class #32770
ControlClick, Button15 ; OK
return
|
tested on german win2k with msie 6 (thats why i used the classNN instead of their content - its more international this way)
probably this clarifies questions:
| Code: |
; tst.ahk
Gui, Add, Edit, +ReadOnly vMySource w300 r20
Gui, Add, CheckBox, yp x320 checked, Test1
Gui, Add, CheckBox, disabled, Test2
Gui, Add, CheckBox, , Test3
Gui, Add, Button, w80 gCheck, Check All
Gui, Add, Button, wp gUnCheck, UnCheck All
Gui, Add, Button, wp gToggle, Toggle All
Gui, Show,, CheckBox Test
FileRead, MyScript, %A_ScriptFullPath%
GuiControl,,MySource,%MyScript%
return
GuiClose:
ExitApp
return
Check:
Control, Check,, Button1
Control, Check,, Button2
Control, Check,, Button3
return
UnCheck:
Control, UnCheck,, Button1
Control, UnCheck,, Button2
Control, UnCheck,, Button3
return
Toggle:
Loop,3
{
ControlGet, Status, Checked,, Button%A_Index%
If Status = 0
Control, Check,, Button%A_Index%
else
Control, UnCheck,, Button%A_Index%
}
return |
Button1 to Button3 are the CheckBoxes, NOT the Click-Buttons
So these can be Addressed as the Source states either thru ControlClick as in earlier example or thru Control, Check as done here _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 12:09 pm Titel: |
|
|
Frage: Möglichkeit, um eine Zeile aus einem Wust behalten
Mutterforum: Ask for Help
Resulta
| Code: |
a=
(Join`r`n
>>> Modified by Bret
>>> Work started; assigned to Bret
1/15/2008 3:10:08 PM Demo
>>> Modified by Bret
>>> Cleared by Bret Cleared: 3 - Found OK Cause: 24 - Found Okay Fault: 18 - No Fault Equipment: 400 - Unknown Component: -
>>> Line after Work started; assigned to Bret
1/15/2008 3:10:08 PM Demo
)
msgBox % RegExReplace(a,"m)^(?!>>>\sCleared)[^\r\n]*(\r?\n|\Z)")
|
the msgbox shows desired output. to work with clipboard you'll need to replace the variable a in the regex to clipboard so it look like | Code: | | myResult := RegExReplace(Clipboard,"m)^(?!>>>\sCleared)[^\r\n]*(\r?\n|\Z)") |
origin regex found on PhiLhos RegEx Tutorial _________________
|
|
| Nach oben |
|
 |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1372 Wohnort: 127.0.0.1
|
Verfasst am: Di Jan 22, 2008 12:12 pm Titel: |
|
|
Frage: Dynamische Hotkey Vergabe und Änderung
Resultat
| Code: | ; these keys will be used whenever
N0:="^F1" ; default hotkey for menu
N1:="^a" ; default hotkey for test
Hotkey, %N0%, HotkeyGui, ON
Hotkey, %N1%, test, ON
return
HotkeyGui:
d0 := N0
d1 := N1
Hotkey, %N0%, HotKeyGui, OFF
Hotkey, %N1%, test, OFF
Gui, Add, Text,, Current Hotkey for this MENU:
Gui, Add, Hotkey, wp vN0, %N0%
Gui, Add, Text, wp, Current Hotkey for Test:
Gui, Add, Hotkey, wp vN1, %N1%
Gui, Add, Button, wp gMakeTheKeys Default, OK
Gui, Show,, Hotkeys
return
MakeTheKeys:
Gui, Submit, Nohide
Gui, 1:Destroy
if N0!=""
Hotkey, %N0%, HotkeyGui, ON
else
Hotkey, %d0%, HotkeyGui, ON
if N1!=""
Hotkey, %N1%, test, ON
else
Hotkey, %d1%, test, ON
Return
GuiClose:
Gui, 1:Destroy
Gosub, MakeTheKeys
return
test:
msgbox, you click the %N1%!
return |
_________________
|
|
| 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
|