Datum deutschsprachig ausgeben

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Datum deutschsprachig ausgeben

25 Jan 2016, 05:47

Hallo,

im alten Forum hat man mir bei der Programmierung eines Tools geholfen, das mir täglich praktische Hilfe leistet. Meine Programmierkenntnisse sind begrenzt; sie reichen beispielsweise, das Tool bei Bedarf anzupassen, aber in meinem Alter lohnt es sich nicht, sie noch wesentlich zu erweitern. Ich hoffe auf erneute Unterstützung: Es wäre nützlich für mich, wenn das Tool den Wochentag ausgeben könnte. Gerne in Kombination mit dem Datum im Format TT.MM.JJJJ, aber der Wochentag ist entscheidend.

Um konkret zu werden, hier das Skript. Unter dem Titel "Starter 1.8" soll das Datum stehen. Den Platz kann ich selber schaffen.

Code: Select all

; Programmiert von "Janemba" in der AutoHotkey Community
; http://de.autohotkey.com/forum/viewtopic.php?p=78425
; Erweitert von Anselm Rapp

; Abmessungen und Positionen Buttons:
; von links (x) 10
; von oben (y) Beginn 40, weitere je plus 50
; Breite 190
; Höhe 40

; Abmessungen Fenster:
; Breite 210
; Höhe Beginn unterster Button plus 50


#NoEnv
#SingleInstance force
#NoTrayIcon
SendMode Input
SetWorkingDir %A_ScriptDir%

Prog0 := "C:\Program Files (x86)\Malwarebytes Anti-Malware\mbam.exe" ; Programm für "gerade" Tage
Prog1 := "C:\Program Files (x86)\EEK\Start Emergency Kit Scanner.exe" ; Programm für "ungerade" Tage
Text0 := "Malwarebytes' Anti-Malware"     ; Button-Beschriftung für "gerade" Tage
Text1 := "Emsisoft Emergency Kit"         ; Button-Beschriftung für "ungerade" Tage
Beginn := 20000101                        ; Startpunkt für die Tageszählung
Tage := SubStr(A_Now, 1, 8)               ; Heute
Tage -= Beginn, Days                      ; Differenz zum Startpunkt in Tagen
Index := (Tage & 1)                       ; "gerade"/"ungerade" Anzahl von Tagen

if (Index == true) ; ungerade
{
   text := Text1
   prog := Prog1
}
else ; gerade
{
   text := Text0
   prog := Prog0
}

Gui, Font, s12 bold,
Gui, Add, Text, x10 y10 w200 h30 +Center H32, Starter 1.8
Gui, Font, s10 norm,

Gui, Add, Button, x10 y40  w190 h40 gLabel1 ,Hinweise
Gui, Add, Button, x10 y90  w190 h40 gLabel2 ,X1 Search
Gui, Add, Button, x10 y140 w190 h40 gLabel3 ,Second Copy 8
Gui, Add, Button, x10 y190 w190 h40 gLabel4 ,RSSOwl
Gui, Add, Button, x10 y240 w190 h40 gLabel5 ,%text%
Gui, Add, Button, x10 y290 w190 h40 gLabel6 ,Willing Webcam
Gui, Add, Button, x10 y340 w190 h40 gLabel7 ,Stunden + Wasser
Gui, Add, Button, x10 y390 w190 h40 gLabel8 ,Beenden
Gui, Show, w210 h440, Starter
Gui, Color, FFFFFF
return

Label1:
Run, notepad.exe starter.txt
GuiControl, Disable, Button1
return

Label2:
Run, C:\Program Files\X1 Search\X1.exe
GuiControl, Disable, Button2
return

Label3:
Run, C:\Program Files (x86)\Second Copy 8\SecCopy.exe
GuiControl, Disable, Button3
return

Label4:
Run, C:\Program Files (x86)\RSSOwl\RSSOwl.exe
GuiControl, Disable, Button4
return

Label5:
Run, %prog%
GuiControl, Disable, Button5
return

Label6:
Run, C:\Program Files (x86)\Willing Webcam\wwcam.exe
GuiControl, Disable, Button6
return

Label7:
Run, C:\Program Files (x86)\Eigene\Helfer\Wasser\wasseruhr.exe
GuiControl, Disable, Button7
return

Label8:
GuiEscape:
GuiClose:
ExitApp
Hoffnungsvolle Grüße, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
garry
Posts: 2430
Joined: 22 Dec 2013, 12:50

Re: Datum deutschsprachig ausgeben

25 Jan 2016, 06:26

Beispiel , siehe command FormatTime
-- locale codes for language
http://www.science.co.il/language/locale-codes.asp

Code: Select all

;.....
Gui, Add, Text, x10 y1 w200 h30 +Center H32, Starter 1.8
Gui, Font, s10 norm,
FormatTime,TS, L1031, dddd dd.MM.yyyy          ;- L1031 deutsch (ist nur nötig falls Du deutsch willst aber der Computer auf englisch eingestellt ist )
Gui, Add, Text, x10 y22 w200 +Center,%ts%
;..... 

nur kurz , ein Beispiel , siehe language code , im Beispiel L1035 ist finnisch

Code: Select all

Gui, Add, Radio, x37 y55 w150 h30 vDateString Checked,1  Longdate
Gui, Add, Radio, x37 y85 w150 h30                    ,2  SF Language
Gui, Add, Radio, x37 y115 w150 h30                   ,3  weeekday
Gui, Add, Text, x37 y15 w210 h30 , Datumsformat wählen
Gui, Add, Button, x32 y160 w90 h30 gOK Default, &OK
Gui, Add, Button, x132 y160 w100 h30 gCancel, &Abbrechen
Gui, Show, w262 h220, Datumsformat auswählen
Return

Cancel:
GuiEscape:
GuiClose:
ExitApp

OK:
Gui, submit,nohide
If (DateString="1")
  {
  Formattime,TS,,longdate
  msgbox, %TS%
  Return
  }

If (DateString="2")
  {
  Time := A_Now
  Time += -1, Days  ; yesterday
  FormatTime, new, %time% L1035, dddd MMMM dd-MM-yyyy  ;-- SF 1035 suomi finland
  msgbox, %new%
  ;-- see locale codes for language
  ; http://www.science.co.il/language/locale-codes.asp
  Return
  }

If (DateString="3")
  {
  datestring = 1/1/2010
  SetFormat, float, 02.0
  StringSplit, d, datestring, /
  FormatTime, day_of_Week, % d3 . d1+0. . d2+0., dddd
  msgbox, % day_of_week
  Return
  }
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

25 Jan 2016, 08:51

Vielen Dank! Jetzt muss ich erst etwas experimentieren. Gruß, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

25 Jan 2016, 09:43

Hallo,

das ging ja einfacher als erwartet. Und sogar ein Komma habe ich noch eingebaut:
Starter2.0.png
Starter2.0.png (10.92 KiB) Viewed 3343 times
Noch mal vielen Dank und Gruß, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

07 Jun 2016, 02:35

Hallo,

jetzt habe ich noch eine ergänzende Bitte: Ich möchte, dass einzelne Buttons meines "Starter" nur an bestimmten Wochentagen aktiv sind und sonst inaktiv.

Hoffnungsvolle Grüße, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
just me
Posts: 7289
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Datum deutschsprachig ausgeben

07 Jun 2016, 03:35

Moin,

den aktuellen Wochentag liefern Dir die internen Variablen
  • A_WDay
    als Zahl von 1 bis 7 (1 ist Sonntag, ... 7 ist Samstag)
  • A_DDDD / A_DDD
    als vollständigen bzw. abgekürzten Namen
Du kannst die Buttons per GuiControl, Disable, ... deaktivieren.
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

07 Jun 2016, 11:13

Hallo,

danke für die Antwort, aber ich komme noch nicht zurecht, tut mir leid. (Für mildernde Umstände siehe meinen Steckbrief im OP.) Im Skript (von dem ich mir einen Großteil auch zusammengeschnorrt habe, siehe ebenfalls OP) erzeugt Gui die Buttons und gLabel verzweigt zu den Unterprogrammen Label. Dass dort nach Programmaufruf die Buttons deaktiviert werden, habe ich auch kapiert. Wie ich aber schaffe, Buttons generell zu deaktivieren und nur an bestimmten Wochentagen zu aktivieren (und nach Programmstart wieder zu deaktivieren), ist mir zu hoch.

Bitte, bitte. Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
just me
Posts: 7289
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Datum deutschsprachig ausgeben

08 Jun 2016, 02:26

Moin,
Anselm wrote:... aber in meinem Alter lohnt es sich nicht, sie noch wesentlich zu erweitern.
Eigentlich schade, es ist doch zumindest eine nette Übung für die grauen Zellen. ;)

Wenn Du Gui-Controls dynamisch, d.h. abhängig von bestimmten Bedingungen verändern willst, solltest Du Ihnen Namen (Option vName)) geben.
Ich habe hier mal etwas zusammengebastelt, das auf Deinem oben eingestellten Skript in der Version 1.8 beruht:

Code: Select all

; Programmiert von "Janemba" in der AutoHotkey Community
; http://de.autohotkey.com/forum/viewtopic.php?p=78425
; Erweitert von Anselm Rapp

; Abmessungen und Positionen Buttons:
; von links (x) 10
; von oben (y) Beginn 40, weitere je plus 50
; Breite 190
; Höhe 40

; Abmessungen Fenster:
; Breite 210
; Höhe Beginn unterster Button plus 50


#NoEnv
#SingleInstance force
#NoTrayIcon
SendMode Input
SetWorkingDir %A_ScriptDir%

Prog0 := "C:\Program Files (x86)\Malwarebytes Anti-Malware\mbam.exe" ; Programm für "gerade" Tage
Prog1 := "C:\Program Files (x86)\EEK\Start Emergency Kit Scanner.exe" ; Programm für "ungerade" Tage
Text0 := "Malwarebytes' Anti-Malware"     ; Button-Beschriftung für "gerade" Tage
Text1 := "Emsisoft Emergency Kit"         ; Button-Beschriftung für "ungerade" Tage
Beginn := 20000101                        ; Startpunkt für die Tageszählung
Tage := SubStr(A_Now, 1, 8)               ; Heute
Tage -= Beginn, Days                      ; Differenz zum Startpunkt in Tagen
Index := (Tage & 1)                       ; "gerade"/"ungerade" Anzahl von Tagen

if (Index == true) ; ungerade
{
   text := Text1
   prog := Prog1
}
else ; gerade
{
   text := Text0
   prog := Prog0
}

; Die im folgenden zweidimensionalen Array enthaltenen Buttons werden abhängig von A_WDay deaktiviert.
; Wenn an bestimmten Tagen nichts deaktiviert werden soll, einfach ein leeres Array "[]" einsetzen.
DisabledBtns := [[1, 3, 5]    ; Index 1 = Sonntag
               , [2, 4, 6]    ; Index 2 = Montag
               , [3, 5, 7]    ; Index 3 = Dienstag
               , [4, 6, 8]    ; Index 4 = Mittwocj
               , [5, 7, 1]    ; Index 5 = Donnerstag
               , [6, 8, 2]    ; Index 6 = Freitag
               , [7, 1, 3]]   ; Index 7 = Samstag

Gui, Color, FFFFFF ; <<<<< nach oben verschoben

Gui, Font, s12 bold,
Gui, Add, Text, x10 y10 w200 h30 +Center H32, Starter 1.8
Gui, Font, s10 norm,

Gui, Add, Button, x10 y40  w190 h40 vBtn1 gLabel1 ,Hinweise
Gui, Add, Button, x10 y90  w190 h40 vBtn2 gLabel2 ,X1 Search
Gui, Add, Button, x10 y140 w190 h40 vBtn3 gLabel3 ,Second Copy 8
Gui, Add, Button, x10 y190 w190 h40 vBtn4 gLabel4 ,RSSOwl
Gui, Add, Button, x10 y240 w190 h40 vBtn5 gLabel5 ,%text%
Gui, Add, Button, x10 y290 w190 h40 vBtn6 gLabel6 ,Willing Webcam
Gui, Add, Button, x10 y340 w190 h40 vBtn7 gLabel7 ,Stunden + Wasser
Gui, Add, Button, x10 y390 w190 h40 vBtn8 gLabel8 ,Beenden

For Each, Btn In DisabledBtns[A_WDay]
   GuiControl, Disable, Btn%Btn%

Gui, Show, w210 h440, Starter

return

Label1:
Run, notepad.exe starter.txt
GuiControl, Disable, Button1
return

Label2:
Run, C:\Program Files\X1 Search\X1.exe
GuiControl, Disable, Button2
return

Label3:
Run, C:\Program Files (x86)\Second Copy 8\SecCopy.exe
GuiControl, Disable, Button3
return

Label4:
Run, C:\Program Files (x86)\RSSOwl\RSSOwl.exe
GuiControl, Disable, Button4
return

Label5:
Run, %prog%
GuiControl, Disable, Button5
return

Label6:
Run, C:\Program Files (x86)\Willing Webcam\wwcam.exe
GuiControl, Disable, Button6
return

Label7:
Run, C:\Program Files (x86)\Eigene\Helfer\Wasser\wasseruhr.exe
GuiControl, Disable, Button7
return

Label8:
GuiEscape:
GuiClose:
ExitApp
Wenn Du weitere Fragen hast oder einfach nur neugierig wirst, wie das funktioniert, melde Dich.

Alternativ könntest Du im Skriptfenster abhängig vom Wochentag auch nur die jeweils gewünschten Buttons anzeigen.

Falls Du noch AHK 1.0.48.05 (Basic) benutzt, musst Du Dir eine aktuelle Version 1.1 herunterladen.


Viel Spaß!
just me
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

10 Jun 2016, 07:58

Hallo,

vielen Dank, super! Auf mich gestellt, hätte ich wohl aufgegeben.
just me wrote:Eigentlich schade, es ist doch zumindest eine nette Übung für die grauen Zellen. ;)
Ich lerne noch gerne und eine ganze Menge. Aber ich konzentriere mich inzwischen auf Dinge, die ich relativ häufig brauche. Mein "Starter" ist eine von ganz wenigen AHK-Anwendungen, und die ändere ich vielleicht jedes halbe Jahr mal, und zwar meist nur Kleinigkeiten.

Etliches an Deiner Erweiterung habe ich verstanden, anderes nehme ich als gegeben hin. Das habe ich nicht verstanden:

Gui, Color, FFFFFF ; <<<<< nach oben verschoben

Wohin?
Wenn Du weitere Fragen hast oder einfach nur neugierig wirst, wie das funktioniert, melde Dich.
Danke. Denk an den Zauberlehrling! ;) Jetzt bin ich erst mal bei der Verkleinerung der Buttons und der Erweiterung um zwei, drei Buttons.
Alternativ könntest Du im Skriptfenster abhängig vom Wochentag auch nur die jeweils gewünschten Buttons anzeigen.
Nur zu deaktivieren genügt mir. Mit der Zahl der aktiven Buttons würde sich die Höhe des Fensters ändern, und die Position der Buttons sollte immer gleich bleiben.
Falls Du noch AHK 1.0.48.05 (Basic) benutzt, musst Du Dir eine aktuelle Version 1.1 herunterladen.
Hatte ich schon.

Vielen Dank noch mal und Gruß, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
just me
Posts: 7289
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Datum deutschsprachig ausgeben

11 Jun 2016, 02:43

Moin,
Anselm wrote:... Das habe ich nicht verstanden ...
In Deinem 1.8er Skript steht die Anweisung Gui, Color, FFFFFF direkt vor Gui, Show, .... Das klappt so natürlich auch, Dabei ergibt sich aber folgende logische Reihenfolge:
  1. Du erstellst ein Fenster.
  2. Dann erstellst Du darauf die Controls.
  3. Zuletzt färbst Du den Fensterhintergrund.
Ich bevorzuge folgende Reihenfolge:
  1. Ich erstelle ein Fenster.
  2. Ich färbe den Fensterhintergrund.
  3. Dann lege ich die Controls darauf.
Für mich ist das übersichtlicher und 'logischer'. Deshalb habe ich die Anweisung 'nach oben' verschoben. Es ist allerdings eine Sache der persönlichen Vorlieben. Funktional macht es keinen Unterschied.

Noch ein Hinweis:
Ich hatte übersehen, dass Du in den Buttonroutinen die Standard-ClassNNs der Controls (z.B. Button1) verwendest. Nachdem Deine Buttons jetzt zugeordnete Namen (bzw. Variablen) haben, solltest Du die dort auch verwenden.

Grüße,
just me
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

11 Jun 2016, 03:33

Hallo,
just me wrote:Ich bevorzuge folgende Reihenfolge:
  1. Ich erstelle ein Fenster.
  2. Ich färbe den Fensterhintergrund.
  3. Dann lege ich die Controls darauf.
Für mich ist das übersichtlicher und 'logischer'. Deshalb habe ich die Anweisung 'nach oben' verschoben. Es ist allerdings eine Sache der persönlichen Vorlieben. Funktional macht es keinen Unterschied.
Das sehe ich auch so, auf die Gefahr hin, dass mein früherer Helfer mir Undankbarkeit vorwirft. Mein Fehler war, dass ich irrtümlich die ganze Zeile als auskommentiert angesehen, und deshalb nach dem Ziel gesucht habe. Ich hab's jetzt mit der alten Version verglichen: Alles klar.
Noch ein Hinweis:
Ich hatte übersehen, dass Du in den Buttonroutinen die Standard-ClassNNs der Controls (z.B. Button1) verwendest. Nachdem Deine Buttons jetzt zugeordnete Namen (bzw. Variablen) haben, solltest Du die dort auch verwenden.
Das verstehe ich ohne nähere Erklärung leider auch nicht. Ich füge mal - proudly presenting - meine Version 3.0 an:

Code: Select all

; Programmiert von "Janemba" in der AutoHotkey Community
; http://de.autohotkey.com/forum/viewtopic.php?p=78425
; Erweitert von Anselm Rapp
; Ergänzt von "just me" im AutoHotKey-Forum ab 07 Jun 2016, 09:35
; https://autohotkey.com/boards/viewtopic.php?f=9&t=13338&p=91398

; Abmessungen und Positionen Buttons:
; von links (x) 10
; von oben (y) Beginn 60 (war 40), weitere je plus 35 (war 50)
; Breite 190
; Höhe 30 (war 40)

; Abmessungen Fenster:
; Breite 210
; Höhe Beginn unterster Button plus 50


#NoEnv
#SingleInstance force
#NoTrayIcon
SendMode Input
SetWorkingDir %A_ScriptDir%

Prog0 := "C:\Program Files (x86)\Malwarebytes Anti-Malware\mbam.exe" ; Programm für "gerade" Tage
Prog1 := "C:\Program Files (x86)\EEK\Start Emergency Kit Scanner.exe" ; Programm für "ungerade" Tage
Text0 := "Malwarebytes' Anti-Malware"     ; Button-Beschriftung für "gerade" Tage
Text1 := "Emsisoft Emergency Kit"         ; Button-Beschriftung für "ungerade" Tage
Beginn := 20000101                        ; Startpunkt für die Tageszählung
Tage := SubStr(A_Now, 1, 8)               ; Heute
Tage -= Beginn, Days                      ; Differenz zum Startpunkt in Tagen
Index := (Tage & 1)                       ; "gerade"/"ungerade" Anzahl von Tagen

if (Index == true) ; ungerade
{
   text := Text1
   prog := Prog1
}
else ; gerade
{
   text := Text0
   prog := Prog0
}

; Die im folgenden zweidimensionalen Array enthaltenen Buttons werden abhängig von A_WDay deaktiviert.
; Wenn an bestimmten Tagen nichts deaktiviert werden soll, einfach ein leeres Array "[]" einsetzen.
DisabledBtns := [[2, 9   ]    ; Index 1 = Sonntag
               , [2, 9   ]    ; Index 2 = Montag
               , [   9   ]    ; Index 3 = Dienstag
               , [2, 9   ]    ; Index 4 = Mittwoch
               , [2, 9   ]    ; Index 5 = Donnerstag
               , [2      ]    ; Index 6 = Freitag
               , [2, 9   ]]   ; Index 7 = Samstag

; Beispiel:    , [4, 6, 8]    ; Index 4 = Mittwoch (am Anfang und Ende 2 x [[ ]])
; Deaktiviert am Mittwoch Buttons 4, 6 und 8

Gui, Color, FFFFFF ; <<<<< nach oben verschoben

Gui, Font, s12 bold,
Gui, Add, Text, x10 y10 w200 h30 +Center H32, Starter 3.0
Gui, Font, s10 norm,
FormatTime,TS, L1031, dddd',' dd.MM.yyyy      ;- L1031 deutsch (ist nur nötig falls Du deutsch willst aber der Computer auf englisch eingestellt ist )
Gui, Add, Text, x10 y35 w190 +Center,%ts%

Gui, Add, Button, x10 y60  w190 h30 vBtn1 gLabel1 ,Hinweise
Gui, Add, Button, x10 y95  w190 h30 vBtn2 gLabel2 ,MOBackup Batch
Gui, Add, Button, x10 y130 w190 h30 vBtn3 gLabel3 ,X1 Search
Gui, Add, Button, x10 y165 w190 h30 vBtn4 gLabel4 ,Second Copy 8
Gui, Add, Button, x10 y200 w190 h30 vBtn5 gLabel5 ,RSSOwl
Gui, Add, Button, x10 y235 w190 h30 vBtn6 gLabel6 ,%text%
Gui, Add, Button, x10 y270 w190 h30 vBtn7 gLabel7 ,Willing Webcam
Gui, Add, Button, x10 y305 w190 h30 vBtn8 gLabel8 ,Stunden + Wasser
Gui, Add, Button, x10 y340 w190 h30 vBtn9 gLabel9 ,Secunia PSI
Gui, Add, Button, x10 y375 w190 h30 vBtn0 gLabel0 ,Beenden

Gui, Font, s8 c808080,
Gui, Add, Text,   x10 y410 w190 +Center,Anselm Rapp

For Each, Btn In DisabledBtns[A_WDay]
   GuiControl, Disable, Btn%Btn%

Gui, Show, w210 h430, Starter

return

Label1:
Run, notepad.exe starter.txt
GuiControl, Disable, Button1
return

Label2:
Run, "C:\Program Files (x86)\MOBackup\mobackup.exe" "C:\Users\Anselm\AppData\Roaming\MOBackup\parameter\MOBackup automatisch (Ausführen).mot"
GuiControl, Disable, Button2
return

Label3:
Run, C:\Program Files\X1 Search\X1.exe
GuiControl, Disable, Button3
return

Label4:
Run, C:\Program Files (x86)\Second Copy 8\SecCopy.exe
GuiControl, Disable, Button4
return

Label5:
Run, C:\Program Files (x86)\RSSOwl\RSSOwl.exe
GuiControl, Disable, Button5
return

Label6:
Run, %prog%
GuiControl, Disable, Button6
return

Label7:
Run, C:\Program Files (x86)\Willing Webcam\wwcam.exe
GuiControl, Disable, Button7
return

Label8:
Run, C:\Program Files (x86)\Eigene\Helfer\Wasser\wasseruhr.exe
GuiControl, Disable, Button9
return

Label9:
Run, C:\Program Files (x86)\Secunia\PSI\psi.exe
GuiControl, Disable, Button8
return

Label0:
GuiEscape:
GuiClose:
ExitApp
Dank und Gruß, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
just me
Posts: 7289
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Datum deutschsprachig ausgeben

11 Jun 2016, 04:39

Code: Select all

Label1:
Run, notepad.exe starter.txt
GuiControl, Disable, Button1
return
Button1 ist hier eine ClassNN (siehe GuiControl -> SteuerelementID). Weil Deine Buttons jetzt Namen haben, solltest Du stattdessen den Namen (hier: Btn1) verwenden.

Schönes Wochenende!
just me
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

11 Jun 2016, 06:25

Also so?

Code: Select all

Label1:
Run, notepad.exe starter.txt
GuiControl, Disable, Btn1
Das funktioniert genauso, hat im Moment keine Auswirkungen, ist jetzt "richtig" programmiert und könnte im Hinblick auf künftige Erweiterungen von Bedeutung sein?

Danke gleichfalls, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
just me
Posts: 7289
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Datum deutschsprachig ausgeben

11 Jun 2016, 07:41

Genau! Wenn man die Buttonnamen einfach durchnummeriert, ist der Unterschied nicht so leicht erkennbar.

Ein Buttonname ist immer unabhängig von der Reihenfolge, in der die Buttons dem Fenster hinzugefügt werden. Bei späteren Änderungen bleibt er also für diesen Button weiterhin gültig. Du könntest deshalb zwischen den Buttons Btn1 und Btn2 einen neuen Button Btn12 erstellen, ohne dass für die vorhandenen Buttons Änderungen erforderlich sind.

Bei der ClassNN wird die NN (Nummer) in der Reihenfolge der Erstellung vergeben. Wenn man später irgendwo einen Button einfügt, muss man deshalb alle Anweisungen ändern, die eine ClassNN eines der folgenden Buttons nutzen.
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

11 Jun 2016, 12:48

Mhm. Ich könnte also in meinem Fall die Buttons auch "Hinweise", "MOBackup", "X1" usw. nennen, und nachträglich einen Button "TeslaCrypt" einfügen. :)

Gehe ich aber recht in der Annahme, dass ich Dein zweidimensionales Array trotzdem anpassen müsste? Das arbeitet die Buttons doch in ihrer Reihenfolge ab?

Du siehst, etwas neugierig bin ich tatsächlich geworden. Ich habe früher eine ganze Menge in der Datenbank-Programmiersprache dBASE entwickelt, und die war recht universell verwendbar, ist aber leider veraltet. (Wogegen die dBASE-Fans von heute natürlich protestieren würden. Ich habe unter DOS begonnen, da war dBASE sehr populär.) Die Programmierlogik ist halt bei allen Sprachen etwa gleich.
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)
just me
Posts: 7289
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Datum deutschsprachig ausgeben

12 Jun 2016, 02:39

Moin Anselm,

siehe da, die alten grauen Programmiererzellen ticken ja doch noch! ;)

Und ja, Du kannst den Buttons auch 'sprechende' Namen geben. Das könnte dann z.B. entweder vHinweise oder vBtnHinweise sein. Die zweite Alternative benutzt das Prefix Btn, um den Typ des Controls auch im Namen zu kennzeichnen. Im Array sollte dann der komplette Name als String abgelegt werden:

Code: Select all

; Die im folgenden zweidimensionalen Array enthaltenen Buttons werden abhängig von A_WDay deaktiviert.
; Wenn an bestimmten Tagen nichts deaktiviert werden soll, einfach ein leeres Array "[]" einsetzen.
DisabledBtns := [["Hinweise", "MOBackup"   ]    ; Index 1 = Sonntag
; ...
; bzw.
DisabledBtns := [["BtnHinweise", "BtnMOBackup"   ]    ; Index 1 = Sonntag
; ...
Die Schleife für das Disablen sähe dann so aus:

Code: Select all

For Each, Btn In DisabledBtns[A_WDay]
   GuiControl, Disable, %Btn%   ; die Variable Btn enthält den vollständigen Namen des Controls
Viel Spaß!
just me

Edit:
Und Du kannst das natürlich auch für die Namen der Subroutinen machen: gLabelHinweise oder gLabelBtnHinweise. Meiner Meinung nach macht das den Code übersichtlicher/verständlicher.
Anselm
Posts: 15
Joined: 25 Jan 2016, 04:28

Re: Datum deutschsprachig ausgeben

14 Jun 2016, 05:15

Hallo,

vielen Dank für die weiteren Tipps. Erstaunlich, was AHK alles kann. Grundsätzlich dürfte ich es kapiert haben; zum Probieren komme ich im Moment nicht, denn je älter, desto weniger Zeit. Aber es interessiert mich. Beim nächsten Problem bin ich ohnehin wieder auf der Matte. :)

Gruß, Anselm
Intel Core i5-8250U CPU 1,6 GHz 20 GB RAM, 1 TB SSD, 1 TB HDD
Windows 10 Pro 64 Bit / AutoHotKey (stets aktuelle Version)

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 2 guests