Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Skripte, die wo von DerRaphael gemacht wurden :)
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Smalltalk
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 : "" )

BeitragVerfasst am: Di Jan 22, 2008 5:10 pm    Titel: Antworten mit Zitat

Frage (Ultimate n00b Very Happy): 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 Sad


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!

_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: Di Jan 22, 2008 8:37 pm    Titel: Antworten mit Zitat

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
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: Mi Jan 23, 2008 4:04 am    Titel: Antworten mit Zitat

    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
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: Do Jan 24, 2008 4:32 am    Titel: Antworten mit Zitat

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.
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: Fr Jan 25, 2008 12:34 am    Titel: Antworten mit Zitat

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)
}

_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: Fr Jan 25, 2008 10:09 pm    Titel: Antworten mit Zitat

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 Smile
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
M3CSL



Anmeldedatum: 21.01.2008
Beiträge: 36

BeitragVerfasst am: Sa Jan 26, 2008 1:57 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: Sa Feb 02, 2008 4:51 pm    Titel: Antworten mit Zitat

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.
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator


Zuletzt bearbeitet von derRaphael am So Feb 03, 2008 2:44 pm, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1963
Wohnort: Berlin

BeitragVerfasst am: Sa Feb 02, 2008 8:23 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: So Feb 03, 2008 11:08 am    Titel: Antworten mit Zitat

Hallo,

@denick, ich glaube Dir das es aus auch mir verständlichen Gründen zwischen Euch 2 Verständigungsprobleme gibt Sad .
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 Smile

Bert
Nach oben
Milchmann



Anmeldedatum: 10.12.2007
Beiträge: 85

BeitragVerfasst am: So Feb 03, 2008 11:47 am    Titel: Antworten mit Zitat

Ich hatte vergessen mich einzuloggen. Der Artikel 1 höher war ich.


Bert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: So Feb 03, 2008 12:43 pm    Titel: Antworten mit Zitat

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.
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Milchmann



Anmeldedatum: 10.12.2007
Beiträge: 85

BeitragVerfasst am: So Feb 03, 2008 12:48 pm    Titel: Antworten mit Zitat

Hallo, DerRaphael

Unter XP SP 2 läuft es bei mir.

Bert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: So Feb 03, 2008 2:49 pm    Titel: Antworten mit Zitat

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
_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1430
Wohnort: % ( RegExMatch( A_AppData, "^(?P<_Home>.*)\\", A ) ? A_Home : "" )

BeitragVerfasst am: So Feb 03, 2008 7:17 pm    Titel: Antworten mit Zitat

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

_________________
    Code:
    /* no comment */

    -------------------------
    Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Smalltalk Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
Seite 3 von 4

 
Gehe zu:  
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