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 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: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:30 am    Titel: Skripte, die wo von DerRaphael gemacht wurden :) Antworten mit Zitat

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 Cool

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.

Exclamation Eigenständige Programme & Skriptlets:

Question Wie funktioniert eigentlich...


Zuletzt bearbeitet von DerRaphael am Di Feb 05, 2008 2:25 pm, insgesamt 16-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:33 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:35 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:39 am    Titel: Antworten mit Zitat

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 Smile

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:43 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:45 am    Titel: Antworten mit Zitat

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 Smile


_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:47 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:50 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:51 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:54 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 11:58 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 12:01 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 12:06 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

BeitragVerfasst am: Di Jan 22, 2008 12:09 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 1372
Wohnort: 127.0.0.1

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

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
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 1, 2, 3, 4  Weiter
Seite 1 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