Moin
Ich möchte gerne in einer etwas verkorksten Anwendung mehrere Datumsfelder automatisch setzen. Hier Zuhause habe ich mir ein kleines Demoprogramm geschrieben, aber es hakt noch am Feinschliff.
In einer selbst erstellten GUI kann ich ganz einfach das aktuelle Datum setzen:
#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Meine Test Anwendung", 340, 227, 379, 431)
$Button1 = GUICtrlCreateButton("Setze Datum", 120, 85, 89, 25)
$Date2 = GUICtrlCreateDate("1970/01/01 14:33:54", 87, 176, 186, 21)
$Label2 = GUICtrlCreateLabel("WRITE", 40, 178, 40, 21)
$Label3 = GUICtrlCreateLabel("Text: ", 35, 129, 31, 17)
$Input1 = GUICtrlCreateInput("Neues Datum...", 88, 128, 185, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$neuesDatum = @YEAR & "/" & @MON & "/" & @MDAY
GUICtrlSetData($Input1, $neuesDatum)
GUICtrlSetData($Date2,$neuesDatum)
EndSwitch
WEnd
Alles anzeigen
Soweit so gut.
Das Ganze habe ich als exe kompiliert und möchte nun das Feld $Date2 mit einem weiteren Skript ändern (das Tool, was die eigentliche Software später mit Daten füttern soll).
Per Window Info habe ich mir die erzeugten Klassennamen besorgt und ein paar Tests gefahren, aber bis auf das Öffnen des Kalenders läuft es noch nicht so wie geplant
Zuerst hatte ich versucht mein Wunschdatum direkt per ControlSend einzupflegen, das hatte aber keine Wirkung. Danach habe ich mir das erscheinende Kalenderfenster nochmal genauer angeschaut und festgestellt, dass es eine komplett neue Klasse ist.
Als letzte Maßnahme wollte ich wenigstens zuverlässig das aktuelle Datum per ControlClick auswählen, aber auch das hatte keinen Erfolg
Stehe jetzt etwas auf dem Schlauch. Das hier ist der letzte Stand des Datum-Änderers:
#include <MsgBoxConstants.au3>
Example()
Func Example()
Run("test gui.exe")
Local $hWnd = WinWait("[Title:Meine Test Anwendung]", "", 10)
ControlClick("Meine Test Anwendung", "", "[CLASS:SysDateTimePick32; INSTANCE:1]", "primary", 1, 175, 10)
Sleep(100)
ControlClick("Meine Test Anwendung", "", "[CLASS:SysMonthCal32; INSTANCE:1]", "primary", 1, 40, 145)
Sleep(100)
Local $sText = ControlGetText($hWnd, "", "SysDateTimePick321")
MsgBox($MB_SYSTEMMODAL, "", "The text in Edit1 is: " & $sText)
WinClose($hWnd)
EndFunc
Alles anzeigen
Bin für jeden Vorschlag Dankbar
Habe noch einen Screenshot der Zielsoftware und einem der Felder gemacht, die geändert werden sollen.