Post by just me » 03 Jun 2022, 11:40
Du könntest noch versuchen, die Controls über Ihre Position und Größe zu bestimmen. Dazu benutzt Du erst einmal das folgende Skript, gehst mit der Maus über die Controls und drückst
Strg+p:
Code: Select all
#NoEnv
^p::
MouseGetPos, X, Y, W, H, HWND, ClassNN
MsgBox, 0, Control unter der Maus, ClassNN: %ClassNN%`nX: %X% - Y: %Y% - W: %W% - H: %H%
Return
Esc::
ExitApp
Diese Werte merkst Du Dir und trägst die X, Y, W und H Werte in Dein Fensterscript ein. Dort suchst Du dann nach den passenden Controls:
Code: Select all
#NoEnv
#persistent
EditX := ?
EditY := ?
EditW := ?
EditH := ?
StaticX := ?
StaticY := ?
StaticW := ?
StaticH := ?
Menu, Tray, Icon, tray.ico ; spezielles icon benutzen (muss im gleichen Ordner liegen)
SetTimer, Statusauslesen, 30000 ; Ausführen des Bereiches "Statusauslesen", Intervall in ms, 60sec=60000
return
Statusauslesen:
WinTitle := "Druckeinstellungen für DP-DS620"
If !WinExist(WinTitle) ; Solange das Fenster nicht existiert, wird eine Fehlermeldung in die Druckerstatus-Datei geschrieben
{
FileDelete,D:\statustool\Druckerstatus.txt
FileAppend,---`nRX1-Tool nicht aktiv,D:\statustool\Druckerstatus.txt
psScript := "D:\statustool\fa-status.ps1"
Run, powershell.exe "%psScript%",, hide
Return
}
; Wenn das Fenster existiert, werden die Werte ausgelesen und in die Druckerstatus-Datei geschrieben
Rest := ""
Status := ""
WinGet, CtrlList, ControlList
For Each, ClassNN In StrSplit(CtrlList, "`n") {
If (SubStr(ClassNN , 1, 4) = "Edit") {
ControlGetPos, X, Y, W, H, %ClassNN%
If (X = EditX) && (Y = EditY) && (W = EditW) && (H = EditH)
ControlGetText, Status, %ClassNN %
}
Else If (SubStr(ClassNN , 1, 6) = "Static") {
ControlGetPos, X, Y, W, H, %ClassNN%
If (X = StaticX) && (Y = StaticY) && (W = StaticW) && (H = StaticH)
ControlGetText, Rest, %ClassNN %
}
}
If (Rest <> "") && (Status <> "") {
FileDelete,D:\statustool\Druckerstatus.txt
FileAppend,%Rest%`n%Status%,D:\statustool\Druckerstatus.txt
psScript := "D:\statustool\fa-status.ps1"
Run, powershell.exe "%psScript%" ,, hide
} ; hier könnte noch ein Else-Zweig für eine Fehlermeldung gstehen
Return
Ich habe das nicht getestet, kann also sein, dass Du noch ein paar Fehler beseitigen musst.
Du könntest noch versuchen, die Controls über Ihre Position und Größe zu bestimmen. Dazu benutzt Du erst einmal das folgende Skript, gehst mit der Maus über die Controls und drückst [kbd]Strg+p[/kbd]:
[code]#NoEnv
^p::
MouseGetPos, X, Y, W, H, HWND, ClassNN
MsgBox, 0, Control unter der Maus, ClassNN: %ClassNN%`nX: %X% - Y: %Y% - W: %W% - H: %H%
Return
Esc::
ExitApp[/code]
Diese Werte merkst Du Dir und trägst die X, Y, W und H Werte in Dein Fensterscript ein. Dort suchst Du dann nach den passenden Controls:
[code]#NoEnv
#persistent
EditX := ?
EditY := ?
EditW := ?
EditH := ?
StaticX := ?
StaticY := ?
StaticW := ?
StaticH := ?
Menu, Tray, Icon, tray.ico ; spezielles icon benutzen (muss im gleichen Ordner liegen)
SetTimer, Statusauslesen, 30000 ; Ausführen des Bereiches "Statusauslesen", Intervall in ms, 60sec=60000
return
Statusauslesen:
WinTitle := "Druckeinstellungen für DP-DS620"
If !WinExist(WinTitle) ; Solange das Fenster nicht existiert, wird eine Fehlermeldung in die Druckerstatus-Datei geschrieben
{
FileDelete,D:\statustool\Druckerstatus.txt
FileAppend,---`nRX1-Tool nicht aktiv,D:\statustool\Druckerstatus.txt
psScript := "D:\statustool\fa-status.ps1"
Run, powershell.exe "%psScript%",, hide
Return
}
; Wenn das Fenster existiert, werden die Werte ausgelesen und in die Druckerstatus-Datei geschrieben
Rest := ""
Status := ""
WinGet, CtrlList, ControlList
For Each, ClassNN In StrSplit(CtrlList, "`n") {
If (SubStr(ClassNN , 1, 4) = "Edit") {
ControlGetPos, X, Y, W, H, %ClassNN%
If (X = EditX) && (Y = EditY) && (W = EditW) && (H = EditH)
ControlGetText, Status, %ClassNN %
}
Else If (SubStr(ClassNN , 1, 6) = "Static") {
ControlGetPos, X, Y, W, H, %ClassNN%
If (X = StaticX) && (Y = StaticY) && (W = StaticW) && (H = StaticH)
ControlGetText, Rest, %ClassNN %
}
}
If (Rest <> "") && (Status <> "") {
FileDelete,D:\statustool\Druckerstatus.txt
FileAppend,%Rest%`n%Status%,D:\statustool\Druckerstatus.txt
psScript := "D:\statustool\fa-status.ps1"
Run, powershell.exe "%psScript%" ,, hide
} ; hier könnte noch ein Else-Zweig für eine Fehlermeldung gstehen
Return[/code]
Ich habe das nicht getestet, kann also sein, dass Du noch ein paar Fehler beseitigen musst.