 |
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: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Di Jan 22, 2008 5:10 pm Titel: |
|
|
Frage (Ultimate n00b ): Wenn ich ein 'T' drücke, kann Autohotkey für mich dann ganz vieeele 'E' tippen?
http://de.autohotkey.com/forum/viewtopic.php?t=2381
| Code: | #SingleInstance force
SetBatchLines, -1
Menu, Tray, Add, Tool beenden, ExitSub
Menu, Tray, NoStandard
t::
if (runE) {
runE := 0
SetTimer, SendE, OFF
} else {
runE := 1
SetTimer, SendE, 1
}
return
SendE:
SendPlay, E
return
ExitSub:
ExitApp
return |
Und weils eine n00b frage war noch folgendes Zitat:
http://de.autohotkey.com/forum/viewtopic.php?p=19270#19270
| napster hat Folgendes geschrieben: | Danke DerRaphael für deine Antwort nur wie benutze ich dieses Script? Muss ich erstmal eine .ahk datei erstellen mit dem Inhalt? Und wie benutze ich das dann mit AutoHotkey immer wenn ich AutoHotkey.exe starte kommt nix nur eine Frage ob ich ein 'Sample' erstellen will  |
Es folgte die Schritt-für-Schritt Anleitung!
http://de.autohotkey.com/forum/viewtopic.php?p=19271#19271
| DerRaphael hat Folgendes geschrieben: | Autohotkey installieren.
Anschließend das Skript (das Ding im Kasten) erst markieren, dann kopieren. Auf Desktop Rechtsklicken und neues AutohotkeyScript wählen. Rechtsklick auf neues Skript und bearbeiten wählen.
Im Editor alles markieren und löschen, dann Menü bearbeiten und einfügen
Jetzt müsste das Skript hier von der Internetseite zu sehen sein.
Datei -> Speichern
Fertig!
Jetzt doppelklick darauf machen, über kleines Grünes Kästchen freuen (unten neben der Uhr) und mit T soviele E tippen, bis du nimmer kannst
rechtsklick auf das grüne kästchen lässt es dich beenden - aus der spuk!
|
_________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Di Jan 22, 2008 8:37 pm Titel: |
|
|
Frage: Ich habe eine Liste, die pro Zeile mit einem YYYYMMDDHH24MISS Datum endet. Wie kann ich nur Zeilen übrig lassen, die vor einem bestimmten Zieldatum existieren? Geht das mit RegEx?
http://www.autohotkey.com/forum/viewtopic.php?t=27834
Resultat:
This is how I'd solve this:
| Code: | Messages=
(
01. Russia cuts natural gas to Ukraine over a price dispute - 20060101000000
02. South Africa becomes the fifth nation to legalize gay marriage - 20061001000000
03. Dick Cheney accidentally shoots his friend and lawyer, Harry Whittington,
in the face with a shotgun on a south Texas ranch - 20060211000500
04. The WHO issues a global alert on SARS - 20030312110500
05. Sweden rejects adopting the Euro in a referendum - 20030914171900
06. A heat wave in Paris causes temperatures up to 44°C - 20030811123000
07. Scientists in South Korea announce the cloning of 30 human embryos - 20040213151547
08. Colin Powell submits his resignation - 20041114140000
09. Russia is once again recognized as a full-fledged superpower by the United States - 20070526133000
10. Bob Marley plays his final live performance - 19800923183000
11. Korean Air Flight 007 is shot down by a Soviet Union jet
fighter - 19830901182607
12. Stock markets around the world plunge amid growing fears of a U.S. recession - 20080121000000
)
LeftMessages := ""
Loop, Parse, Messages, `n, `r
{
targetDate := DateParse("February 13, 2004") ; returns a YYYYMMDDHH24MISS style date
LoopDate := RegExReplace(A_LoopField,"(\b.+\b\s-\s)") ; get last Word current Line
Message .= A_LoopField
If !(RegExMatch(LoopDate,"[a-zA-Z]")) { ; pass only if Numeric
EnvSub, targetDate, LoopDate, Days ; Substract LoopDate from TargetDate
If (targetDate>=0) { ; If greater or euqal 0 must be in past
LeftMessages .= Message "`r`n" ; Add Message to Stack
}
Message := ""
}
}
MsgBox % LeftMessages
return
; Title: Date Parser
; Version 1.04 by Titan <http://www.autohotkey.net/~Titan/#dateparse>.
; Licenced under GNU GPL <http://creativecommons.org/licenses/GPL/2.0/>.
; Found on http://www.autohotkey.com/forum/topic20405.html - Thx Titan
DateParse(str) {
static e2 = "i)(?:(\d{1,2}+)[\s\.\-\/,]+)?(\d{1,2}|"
. "(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\w*)"
. "[\s\.\-\/,]+(\d{2,4})"
str := RegExReplace(str, "((?:" . SubStr(e2, 42, 47) . ")\w*)(\s*)(\d{1,2})\b", "$3$2$1", "", 1)
If RegExMatch(str, "i)^\s*(?:(\d{4})([\s\-:\/])(\d{1,2})\2(\d{1,2}))?"
. "(?:\s*[T\s](\d{1,2})([\s\-:\/])(\d{1,2})(?:\6(\d{1,2})\s*(?:(Z)|(\+|\-)?"
. "(\d{1,2})\6(\d{1,2})(?:\6(\d{1,2}))?)?)?)?\s*$", i)
d3 := i1, d2 := i3, d1 := i4, t1 := i5, t2 := i7, t3 := i8
Else If !RegExMatch(str, "^\W*(\d{1,2}+)(\d{2})\W*$", t)
RegExMatch(str, "i)(\d{1,2})\s*:\s*(\d{1,2})(?:\s*(\d{1,2}))?(?:\s*([ap]m))?", t)
, RegExMatch(str, e2, d)
f = %A_FormatFloat%
SetFormat, Float, 02.0
d := (d3 ? (StrLen(d3) = 2 ? 20 : "") . d3 : A_YYYY)
. ((d2 := d2 + 0 ? d2 : (InStr(e2, SubStr(d2, 1, 3)) - 40) // 4 + 1.0) > 0
? d2 + 0.0 : A_MM). ((d1 += 0.0) ? d1 : A_DD) . t1
+ (t1 = 12 ? t4 = "am" ? -12.0 : 0.0 : t4 = "am" ? 0.0 : 12.0) . t2 + 0.0 . t3 + 0.0
SetFormat, Float, %f%
Return, d
} |
In this code i also put Titan's ParseDate Function since it returns a valid YYYYMMDDHH24MISS date string from a given human readable input
The Code Loops thru the given Messages, regex'in the last word and checking if its numeric only.
if true, it substracts the looped date from given date and evaluates the result for being greater or equal to zero. again, if that is true, our looped date must be smaller than the given date, and there for in the past.
our message is being put on stack and msgBox'd after the loop is done.
Possible Bugs: in case the message has a linebreak in it, it'll be put in a temporary variable which gets only emptied when a datestring found.
so, when NO date will be given to a message and next message will make a hit, the previous message 'll show up, too _________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Mi Jan 23, 2008 4:04 am Titel: |
|
|
Ihr kennt alle das 'old-School' Mastermind Spiel? Wo Euer Gegner vier von sechs möglichen Farben auswählt und Ihr nur zwölf Versuche habt, diese zu erraten?
Hier sind wir wieder:
AHK MasterMind
Das Spiel selbst ist eigentlich schon im Lemma (der Zeile oben) perfekt erklärt. Es benutzt CheckBoxen, um Stati anzuzeigen (aktiviert - richtige Farbe falscher Platz / abgehakt - richtige Farbe, richtiger Platz). Ein sehr einfaches Spiel, nichts spezielles darin. Viel Spaß!
Download
| Code: | ; AHK Mastermind
; (c) 2008 derRaphael / Zlib License Style Released
#NoTrayIcon
SetTitleMatchMode, 2
BLOCK := Chr(0xDB) Chr(0xDB), CNTbl := "RYOGBN"
CTable := "ff0000|ffff00|ff8000|00ff00|0000ff|804000"
Menu, Game, Add, New Game`tCTRL+N, ReStart
Menu, Game, Add, Exit Game`tALT+F4, GuiClose
Menu, GameMenu, Add, &Game, :Game
GoSub, initGame
GoSub, initRound
return
initGame:
Round := 12
Guess := "----"
Loop, 12
{
L := A_Index
Loop, 4
Gui, Add, CheckBox, % "hwndR" L "_" A_Index " vlR" L "_" A_index
. " Disabled x" ((A_Index>1) ? "p+15" : "10")
. " h10 w10"
Gui, Font, s36 cd0d0d0, Terminal
Loop, 4
Gui, Add, Text, % "+Border hwndG" L "_" a_index " vlG" L "_" A_index
. " y" ((A_Index>1)? "p":"p-5") " xp+21", % BLOCK
}
Gui, Font,s13, Lucida Console
Loop, 4
Gui, Add, Button, % "gBC w35 h35 +Center x"
. ((A_Index>1)? "p+38":10) ((A_Index>1)? "yp":"")
, &%A_Index%
Gui, Font
Gui, Add, Button, h20 x10 +Center w150 gCheck, &Check my guess
Gui, Menu, GameMenu
Gui, Show,, MasterMind
return
initRound:
youWontKnow := ""
Random,,WinActive("A")
Loop, 4
{
Random, rndm, 1, StrLen(CNTbl)
youWontKnow .= s(CNTbl,rndm,1)
}
; SetTimer, TT, 100
return
TT:
ToolTip, % youWontKnow
return
Check:
If InStr(Guess,"-")
MsgBox,64,Hint,You are missing one or more colors!
else
{
CCP := CCC := 0, YWK := youWontKnow
Loop, Parse, Guess
If InStr(YWK,A_LoopField)
{
StringReplace, YWK, YWK, A_LoopField
CCC += 1
}
Loop, 4
If (s(youWontKnow,A_Index,1)=s(Guess,A_Index,1))
CCP += 1
Loop, %CCC%
{
id := "R" Round "_" A_Index, id := %id%
Control,Enable,,,ahk_id %id%
}
Loop, %CCP%
{
id := "R" Round "_" A_Index, id := %id%
Control,Check,,,ahk_id %id%
; GuiControl,, %id%, 1
}
Guess := "----", Round -= 1
}
if !(Round) AND (CCP!=4)
{
MsgBox,64,Oh nooooo!,You've lost The Game! Try harder next time!
Gosub, ReStart
}
if (CCP=4)
{
MsgBox,64,Congratulations!,You've won the Game!
Gosub, ReStart
}
return
#IfWinActive, MasterMind
^n::
ReStart:
Gui, 1:Destroy
GoSub, InitGame
GoSub, InitRound
return
BC:
StringRight, ButtonNumber, A_GuiControl, 1
Gui, Font, s36 ce0e0e0, Terminal
GuiControl, Font, % "lG" Round "_" ButtonNumber
SetFormat, Integer, hex
Gui, 1:+Disabled
Gui, 2:+ToolWindow +Owner +AlwaysOnTop
Loop, Parse, CTable, |
{
a := A_Index, x := (a>1) ? "p+15" : 1
t := s(CNTbl,a,1), alf := A_LoopField
Hotkey, %t%, CC, ON
Gui, 2:Font
Gui, 2:Font, s36 c%alf%, Terminal
Gui, 2:Add, Text, vB%t% gCC +Border x%x% y1, % BLOCK
x := (a>1) ? "p+6" : 7
N := ("0x" s(alf,1,2)), N := N//2, c := (s(N,3)="0") ? "00" : s(N,3)
N := ("0x" s(alf,3,2)), N := N//2, c .= (s(N,3)="0") ? "00" : s(N,3)
N := ("0x" s(alf,5,2)), N := N//2, c .= (s(N,3)="0") ? "00" : s(N,3)
Gui, 2:Font, s10 bold c%c%, Lucida Console
Gui, 2:Add, Text, gCC x%x% y3 +BackgroundTrans vT%t%, &%t%
}
Gui, 2:Show, h21 w127, Pick the Color!
return
CC:
if A_ThisHotkey
Pos := InStr(CNTbl,A_ThisHotkey)
if A_GuiControl
Pos := InStr(CNTbl,s(A_GuiControl,2,1))
Counter := 0
Loop, Parse, CTable, |
If Counter = %Pos%
break
else
Color := A_LoopField, Counter+=1
Gosub, 2GuiEscape
Gui, 1:Default
Gui, Font, s36 c%Color%, Terminal
GuiControl, Font, % "lG" Round "_" ButtonNumber
Guess := s(Guess,1,ButtonNumber-1) s(CNTbl,Pos,1) s(Guess,ButtonNumber+1)
return
2GuiClose:
2GuiEscape:
Gui, Font, s36 cd0d0d0, Terminal
GuiControl, Font, % "lG" Round "_" ButtonNumber
Loop, Parse, CNTbl
Hotkey, %A_LoopField%, CC, OFF
Gui, 1:-Disabled
Gui, 2:Destroy
return
GuiClose:
ExitApp
s(a,b,c=1024)
{
return, % SubStr(a,b,c)
} |
grüße
derRaphael _________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Do Jan 24, 2008 4:32 am Titel: |
|
|
Frage: Was kann ich mit den Befehlen RunWait und Process alles machen?
http://de.autohotkey.com/forum/viewtopic.php?p=19629#19629
Resultat:
*g* so nebenbei: Das wolltest du eigentlich wissen...
Der Befehl Process ist recht komplex, da man damit andere Windows Prozesse nicht nur verschnellern oder verlangsamen, sondern auch beispielsweise schließen kann. Letzteres ist jedoch nicht empfehlenswert, da es hierfür in Autohotkey bessere Methoden gibt (z.B. WinClose).
Hier ist ein Beispiel, dass Notepad öffnet (sollte vorher nicht offen sein - sonst gibt es merkwürdige Resultate) und darin die vom Process-Befehl in der AHK-Variable ErrorLevel (normalerweise ein Fehlerrückgabewert) gespeicherte Prozess Information (Prozess ID) ausgibt.
| Code: | ; process.ahk / zLib Release (c) 2008 derRaphael(at)oleco.net
StartMich := "Notepad.exe" ; Unser programm zum Spielen
Run, %StartMich% ; Starte unser Programm
Process, wait, %StartMich%, 5.5 ; Warte 5,5 Sekunden auf den Process Notepad.exe
PID := ErrorLevel ; Die Variable ErrorLevel enthält die Process ID
if !PID ; check nach NewPID=0 (wurde nicht gefunden bei 0)
{
MsgBox Der genannte Prozess %StartMich% konnte nicht gefunden werden
return
}
WinActivate, ahk_pid %PID%
WinWaitActive, ahk_pid %PID%
SendInput, % " Demo{Enter}======{Enter}"
. " Ich bin das Programm '" StartMich "'{! 2}{Enter}"
. " In Windows bin ich bekannt als Nummer " PID "{Enter}"
. " Diese Nummer ist meine Prozess ID.{Enter 2}"
. " Ich beende selbst mich in 10 Sekunden.{left 10}"
Sleep, 2500
Loop, 10
{
Send, % A_Index>1 ? "{BS}" : "{BS 2}"
Send, % 10-A_Index
Sleep, 1000
}
SendInput, {End}+{Home}{Delete}Danke. Ich beende mich jetzt!
Sleep, 1000
SendInput, ^a{delete}!{f4}
return |
Der RunWait Befehl ist da schon einfacher, der funktioniert genauso, wie der Run Befehl, jedoch wartet RunWait mit dem Forfahren des Skriptes auf das Beenden des gestarteten Programms.
| Code: | ; RunWait.ahk / zLib Release (c) 2008 derRaphael(at)oleco.net
SetTitleMatchMode, 2
SetTimer, DOSINPUT, 500
runwait %comspec%
MsgBox DOSBOX ist fertig
return
DOSINPUT:
ToolTip, DOSINPUT Cheking
If (WinActive("cmd.exe")) {
ToolTip
SetTimer, DOSINPUT, OFF
Send, PROMPT $D$T$_$S$Q$G$S{Enter}
Send, CLS{ENTER}
Send, REM <-- Kommentarzeichen{Enter 2}
Send, REM Ich bin eine kleine Demo{Enter}
Send, REM und beende mich nach 10 Sekunden{Enter}
Sleep, 2500
Send, PROMPT $S{Enter}
Send, CLS{ENTER}
Loop, 10
{
Send, CLS{ENTER}
Send, % "REM Noch " (10-A_Index) " Sekunden.{Enter}"
Sleep, 1000
}
Send, Exit{Enter}
}
ToolTip
return |
Das Beispielskript ruft die Windows Konsole auf und tippt darin ein bissi herum bis sie schließlich beendet wird. _________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Fr Jan 25, 2008 12:34 am Titel: |
|
|
Frage: Wie kann ich ein Programm abhängig davon starten, ob eine Internetverbindung da ist?
http://de.autohotkey.com/forum/viewtopic.php?t=2429
Resultat:
das hier probiert 2 minuten lang (jeweils alle zehn sekunden) google.de zu erreichen, klappts nicht, macht das skript meldung, klappts startet es notepad
| Code: | #Persistent
SetTimer, checkInternet, 10000 ; alle 10 Sekunden ausführen
CheckInternet:
Tooltip, Suche Verbindung zum Netz...
SetTimer, tt, 1500 ; mch den netten hinweis bei der maus wieder aus
a += 1 ; erhöhe zähler
If InternetCheckConnection("http://www.google.de") ; sind wir schon da?
{
SetTimer, CheckInternet, OFF
Programm := "notepad.exe"
Run, %Programm%
ExitApp ; Diese Zeile fehlte!!
}
If a=12 ; 12*10 Sekunden = 2 Minuten
{
SetTimer, CheckInternet, OFF
MsgBox Habe nach 2 Minuten immernoch keine Verbindung bekommen :(
ExitApp
}
return
tt:
ToolTip
SetTimer, tt, off
return
;SKAN: http://www.autohotkey.com/forum/viewtopic.php?p=60892#60892
InternetCheckConnection(Url="",FIFC=1) {
Return DllCall("Wininet.dll\InternetCheckConnectionA", Str,Url, Int,FIFC, Int,0)
} |
_________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Fr Jan 25, 2008 10:09 pm Titel: |
|
|
Forum Diskussion zu finden unter:
http://de.autohotkey.com/forum/viewtopic.php?p=19758#19758
Dieses kleine Programm zeigt alle Laufenden Autohotkey Skripte mit Ihrem jeweiligen Namen, so dass man auf einen Blick die jeweils abschießen und/oder editieren und/oder neustarten kann
| Code: | ; getAllAHKscripts.ahk / zLib Style Release (c) 2008 derRaphael(at)oleco.net
; Published: $2008-01-25_22-47$
; Dieses Skript zeigt alle laufenden _nichtkompilierten_ Skripte an
; und bietet die Möglichkeit diese neuzustarten, zu editieren oder zu beenden
DetectHiddenWindows, ON
SetTitleMatchMode, 2
Menu, cMenu, Add, Editieren, AHKEDIT
Menu, cMenu, Add
Menu, cMenu, Add, Neu Starten, AHKRESTART
Menu, cMenu, Add, Beenden, AHKCLOSE
Menu, cMenu, Add
Menu, cMenu, Add, Eigenschaften, AHKPROPS
Menu, Tray, NoStandard
Menu, Tray, Add, Liste Anzeigen, AHKSkripts
Menu, Tray, Add, Beenden, AppExit
Menu, Tray, Default, Liste Anzeigen
AHKSkripts:
Gui, Add, ListView, r15 w200 vListView gAHKListe AltSubmit, Name|PID
Gui, +ToolWindow +AlwaysOnTop
Gui, Show,, Script Control
SetTimer, Update, 500
return
Update:
oListe := Liste
Liste := PIDs := ShortNames := ""
WinGet, hwnd, List, ahk_class AutoHotkey
Loop, %hwnd%
{
ID := hwnd%A_Index%
WinGetTitle, Titel, ahk_id %ID%
SkriptPath := RegExReplace(Titel, " - AutoHotkey v" A_AhkVersion )
SplitPath,SkriptPath,KurzName
WinGet, PID, PID, %SkriptPath% ahk_class AutoHotkey
Liste .= SkriptPath "`n"
PIDs .= PID "`n"
ShortNames .= KurzName "`n"
}
if (oListe!=Liste) {
LV_Delete()
StringSplit,PID,PIDs,`n
StringSplit,FullPath,Liste,`n
Loop, Parse, ShortNames, `n
LV_Add("",A_LoopField, PID%A_Index%)
LV_ModifyCol()
}
return
AHKCLOSE:
GoSub, GetSkript
WinClose, %Skript% ahk_class AutoHotkey
return
AHKRESTART:
GoSub, GetSkript
Interpreter := A_AhkPath
Kommando := """" Interpreter """ /restart """ Skript """"
Run, %Kommando%
return
AHKPROPS:
GoSub, GetSkript
Interpreter := A_AhkPath
Kommando := """" Skript """"
Run, properties %Kommando%
return
AHKEDIT:
GoSub, GetSkript
Interpreter := A_AhkPath
Kommando := """" Skript """"
Run, edit %Kommando%
return
GetSkript:
Zeile := LV_GetNext(0, "F")
Skript := FullPath%Zeile%
return
AHKListe:
If (A_GuiEvent="Normal") {
Zeile := LV_GetNext(0, "F")
ToolTip, % FullPath%Zeile%
SetTimer, TT, 1500
}
return
TT:
SetTimer, TT, OFF
ToolTip
return
GuiContextMenu:
If (A_GuiControl="ListView") {
Menu, cMenu, Show, %A_GuiX%, %A_GuiY%
}
return
GuiClose:
GuiEscape:
Liste := ""
Gui, Destroy
SetTimer, Update, OFF
return
AppExit:
ExitApp |
ein weiteres für alle, die es nützlich finden skript  _________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
M3CSL
Anmeldedatum: 21.01.2008 Beiträge: 36
|
Verfasst am: Sa Jan 26, 2008 1:57 pm Titel: |
|
|
| DerRaphael hat Folgendes geschrieben: | 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
|
|
Das hab ich mir irgendwann mal dazu ausgedacht. Vorteil: Es kann auch bei englischem Windows ohne Änderung verwendet werden:
| Code: | #IfWinActive ahk_class ConsoleWindowClass ; cmd.exe
^v::SendInput {Raw}%ClipBoard% |
Noch schicker wäre es, wenn man die Zeilenumbrüche vor dem Einfügen rausfiltern würde, das macht Windows selbst zwar auch nicht, würde es aber ermöglichen den eingefügten Inhalt vor dem Ausführen noch anzupassen. Hat jemand vielleicht nen Code dazu? |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: Sa Feb 02, 2008 4:51 pm Titel: |
|
|
Alte Frage: Wie können ahk_classes verwendet werden?
ursprünglich gepostet unter:
http://de.autohotkey.com/forum/viewtopic.php?p=20100#20100
Da diese Antwort ein wenig darüber hinaus geht, weil demonstriert wird,. wie man zB Notepad mit neuen Shortcuts erweitern kann, wäre das die Frage, die mein Skript beantwortet:
Neue Frage: Wie kann ich am elegantesten Notepad mit einem eigenen Hotkey für das "Speichern unter Menü" versehen?
Resultat
| Code: | #IfWinActive ahk_class Notepad
+^s::
FileGetVersion, NotePadVersion , %A_WinDir%\SYSTEM32\NOTEPAD.EXE
wParam := (NotePadVersion = "5.0.2140.1") ? 2 : 4
PostMessage, 0x111,%wParam%,,,ahk_class Notepad
WinWaitActive, Datei speichern unter ahk_class #32770
Control, ChooseString, All, ComboBox3
ControlFocus, Edit1
ControlSend, Edit1, % "{Home}{Shift down}{end}"
. "{control down}{left}{control up}"
. "{left}{shift up}"
return |
Dieser Code funktioniert mit Notepad, und ermöglicht via STRG+SHIFT+S das "Speichern unter" Menü aufzurufen ohne Tastendrücke oder Mausklicks, sondern mit POSTMESSAGE. Anschließend wird der Dateityp auf "Alle Dateien" gesetzt und im Namensfeld der Name ohne Endung markiert. Einfach neuen Namen tippen und fertig!
Für alle Interessierten, wie das gemacht wurde, empfehle ich Rajats exzellentes Tutorial ( ), um PostMessages in Programmen herauszufinden.
EDIT: Aufgrund verschiedenen wParam Möglichkeiten Version handling für Notepad eingesetzt. _________________
-------------------------
Moderator
Zuletzt bearbeitet von derRaphael am So Feb 03, 2008 2:44 pm, insgesamt 2-mal bearbeitet |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1963 Wohnort: Berlin
|
Verfasst am: Sa Feb 02, 2008 8:23 pm Titel: |
|
|
Moin,
| Zitat: | | Neue Frage: Wie kann ich am elegantesten Notepad mit einem eigenen Hotkey für das "Speichern unter Menü" versehen? |
Interessante Frage. Wer hat die wohl gestellt? Und wer wird jemals nach: | Zitat: | | Wie kann ich am elegantesten Notepad mit einem eigenen Hotkey für das "Speichern unter Menü" versehen? | suchen? Welche Suchbegriffe würdest Du eingeben, und wie viele Antworten würdest Du darauf erwarten?
Edit:
Doppelpost! _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
Gast
|
Verfasst am: So Feb 03, 2008 11:08 am Titel: |
|
|
Hallo,
@denick, ich glaube Dir das es aus auch mir verständlichen Gründen zwischen Euch 2 Verständigungsprobleme gibt .
Aber:
Und das ist für mich entscheidend, Ihr 2 und natürlich noch die anderen ahk Füchse helft uns Anfängern extrem diese Sprache anzuwenden.
Und deswegen hilft es mir auch sehr, das DerRaphael mal seine Skriptsammlungen zusammenfasst und ich diese nachspielen kann.
DerRaphael@
Dein Skript vom 8.2.08 funktioniert nicht so, wie es soll. Ich habe es mal ein wenig angepasst:
| Code: | #IfWinActive ahk_class Notepad
+^s::
PostMessage, 0x111,4,,,ahk_class Notepad
WinWaitActive, Speichern unter ahk_class #32770
Control, ChooseString, Alle, ComboBox3
ControlFocus, Edit1
ControlSend, Edit1, % "{Home}{Shift down}{end}"
. "{control down}{left}{control up}"
. "{left}{shift up}"
return
|
Danke und ich hoffe das ich hier in diesem Forum weiterhin gute Antworten bekomme
Bert |
|
| Nach oben |
|
 |
Milchmann
Anmeldedatum: 10.12.2007 Beiträge: 85
|
Verfasst am: So Feb 03, 2008 11:47 am Titel: |
|
|
Ich hatte vergessen mich einzuloggen. Der Artikel 1 höher war ich.
Bert |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: So Feb 03, 2008 12:43 pm Titel: |
|
|
danke, bert. jetzt habe ich eine frage: mit was für einem system hattest du das probiert? ich habe das script unter win2k entwickelt und getestet.
ich habe eben deine version getestet und da diese unter w2k nicht funktioniert, komme zum schluss, dass es wohl systemversions abhängig ist. daher werde ich wohl den wParam vom OS abhängig gestalten müssen. _________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
Milchmann
Anmeldedatum: 10.12.2007 Beiträge: 85
|
Verfasst am: So Feb 03, 2008 12:48 pm Titel: |
|
|
Hallo, DerRaphael
Unter XP SP 2 läuft es bei mir.
Bert |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: So Feb 03, 2008 2:49 pm Titel: |
|
|
Hi denick!
| denick hat Folgendes geschrieben: | Moin,
| Zitat: | | Neue Frage: Wie kann ich am elegantesten Notepad mit einem eigenen Hotkey für das "Speichern unter Menü" versehen? |
Interessante Frage. Wer hat die wohl gestellt? |
Rhetorische Frage, denic. Antwort steht nicht in deinem Zitat, sondern in meinem Post
| denick hat Folgendes geschrieben: | Und wer wird jemals nach: | Zitat: | | Wie kann ich am elegantesten Notepad mit einem eigenen Hotkey für das "Speichern unter Menü" versehen? | suchen? Welche Suchbegriffe würdest Du eingeben, und wie viele Antworten würdest Du darauf erwarten? |
Wer nach sowas wohl suchen wird? Hmmm .... Bin kein Wahrsager. Schließlich kann ich auch nicht vorhersagen, wer die nächste MwSt erhöhung bewirkt und / oder vorschlägt.
Jedenfalls wenn folgende Suchbegriffe verwendet werden:
Notepad Hotkey Speichern Unter
Bringt der Link zur Ergebnisseite einer solchen Anfrage derzeit übrigens 6 Ergebnisse.
| denick hat Folgendes geschrieben: | Edit:
Doppelpost! |
Das mit dem Doppelpost verstehe ich nicht ...
grüße
derRaphael _________________
-------------------------
Moderator |
|
| Nach oben |
|
 |
derRaphael
Anmeldedatum: 09.01.2008 Beiträge: 1430 Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )
|
Verfasst am: So Feb 03, 2008 7:17 pm Titel: |
|
|
Frage: Wie finde ich heraus, wie das Fenster hieß, das den Öffnen/Speichern Dialog aufmachte?
Beantwortet unter: http://de.autohotkey.com/forum/viewtopic.php?p=20175#20175
Resultat:
so findest du heraus, wem der Dialog gehört (wenn diese info vorhanden ist) - wenn sich das nicht feststellen lässt, bekommt OwnerHWND den Wert 0
| Code: | SetTimer, testFenster, 100
testFenster:
ActiveHWND := WinActive("A")
ZielFenster := "Editor"
WinGetClass, ZielClass, ahk_id %ActiveHWND%
If (ZielClass="#32770")
{
WinGetTitle, Titel, ahk_id %ActiveHWND%
OwnerHWND := DllCall("GetWindow","UInt",ActiveHWND,"UInt",4)
WinGetTitle, ElternTitel, ahk_id %OwnerHWND%
If (InStr(ElternTitel,ZielFenster))
{
ToolTip, "Notepad - DialogFenster erkannt"
}
}
else
{
ToolTip
}
return |
_________________
-------------------------
Moderator |
|
| 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
|