Hallo hipfzwirgel hast du dir bereits das BIOS Configuration Utility Toolvon HP angesehen?
https://ftp.hp.com/pub/caps-softpaq/cmit/whitepapers/BIOS_Configuration_Utility_User_Guide.pdf
Seite 17, gibt ein Hinweis auf das Fastboot.
Gruß Marcel
Hallo hipfzwirgel hast du dir bereits das BIOS Configuration Utility Toolvon HP angesehen?
https://ftp.hp.com/pub/caps-softpaq/cmit/whitepapers/BIOS_Configuration_Utility_User_Guide.pdf
Seite 17, gibt ein Hinweis auf das Fastboot.
Gruß Marcel
Hallo Zusammen,
wir haben früher so was ähnliches benutzt, um Verrechnungsschecks zu drucken.
Das vorgehen war so:
- Word Vorlage/Template erstellt
- Daten per Autoit aus einer DB auslesen
- Daten per Autoit Word.au3 in die Word Vorlage geschrieben und entsprechend nach Schecknummer gedruckt und gespeichert.
folgend mal das alte Script.
#include <Word.au3>
#include <Date.au3>
#include <array.au3>
#include "mysql.au3"
Local $hFile, $vData, $sFileName, $sData, $hQuery, $aRow, $sMsg, $sSQliteDll
Local $number_xx,$sString
; MYSQL starten, DLL im PATH (enthält auch @ScriptDir), sont Pfad zur DLL angeben. DLL muss libmysql.dll heißen.
_MySQL_InitLibrary()
If @error Then Exit MsgBox(0, '', "")
;; MsgBox(0, "DLL Version:",_MySQL_Get_Client_Version()&@CRLF& _MySQL_Get_Client_Info())
$MysqlConn = _MySQL_Init()
$connected = _MySQL_Real_Connect($MysqlConn, "server", "user", "pass", "db_scheckdaten")
If $connected = 0 Then Exit MsgBox(16, 'Connection Error', _MySQL_Error($MysqlConn))
$errno = _MySQL_errno($MysqlConn)
;;MsgBox(0,"Error:",$errno & @LF & _MySQL_error($MysqlConn))
If $errno = $CR_UNKNOWN_HOST Then
;; MsgBox(0,"Error:","$CR_UNKNOWN_HOST" & @LF & $CR_UNKNOWN_HOST)
Endif
$query = "SELECT date,answerd FROM tab_dnis WHERE time = '14:00'"
_MySQL_Real_Query($MysqlConn, $query)
$res = _MySQL_Store_Result($MysqlConn)
;MsgBox(0, '', "Zugriff Methode 3 - alles in ein 2D Array")
;$array = _MySQL_Fetch_Result_StringArray($res)
;_ArrayDisplay($array)
$rows = _MySQL_Num_Rows($res)
$fields = _MySQL_Num_Fields($res)
;; MsgBox(0, '', "Zugriff Methode 1- Handarbeit")
Dim $array[$rows][$fields]
For $k = 1 To $rows
$mysqlrow = _MySQL_Fetch_Row($res,$fields)
$lenthsStruct = _MySQL_Fetch_Lengths($res)
For $i = 1 To $fields
$length = DllStructGetData($lenthsStruct, 1, $i)
$fieldPtr = DllStructGetData($mysqlrow, 1, $i)
$data = DllStructGetData(DllStructCreate("char[" & $length & "]", $fieldPtr), 1)
$array[$k - 1][$i - 1] = $data
Next
Next
;; _ArrayDisplay($array)
_WertzuWort($array[1][1] & $array[2][1] )
; Verbindung beenden
_MySQL_Close($MysqlConn)
; MYSQL beenden
_MySQL_EndLibrary()
$Logo = "pfad + schecklogo.JPG"
$Scheckempf = ""
$Scheckaus = "xyz GmbH Straße, plz stadt"
$Bankinstitut = "Bank Name"
$BLZ = "647477567567"
$Betragw = '***' & $sString & '**'
$Betragz = "100"
$Schecknr = "000001"
$Kto= "567567657567"
$oWordApp = ObjCreate("Word.Application")
$oWordApp.visible = 1
$odoc = _WordDocOpen($oWordApp, "pfad+ vorlage.doc")
; Tabelle 1 Scheckempfänger und Absender
$odoc.Range.Tables(1).Cell(1, 1).Range.InsertAfter($Scheckaus) ;Adresse Absender Scheckaus
$odoc.Range.Tables(1).Cell(2, 1).Range.InsertAfter("Herr") ; Anrede
$odoc.Range.Tables(1).Cell(3, 1).Range.InsertAfter("Vormane name") ; Vorname Name Scheckempfänger
$odoc.Range.Tables(1).Cell(4, 1).Range.InsertAfter("weg 5") ; Straße Scheckempfänger
$odoc.Range.Tables(1).Cell(5, 1).Range.InsertAfter("535345") ; PLZ Scheckempfänger
$odoc.Range.Tables(1).Cell(5, 2).Range.InsertAfter("Stadt") ; Ort Scheckempfänger
; Firmenlogo Absender Tabelle 2
$odoc.Range.Tables(2).Cell(1, 1).Range.InlineShapes.AddPicture($Logo) ; Logo einfügen
;; Tabelle 3 Scheckdruck
$odoc.Range.Tables(3).Cell(1, 1).Range.InsertAfter($Bankinstitut & $BLZ) ; Bezogenes Kreditinstitut
$odoc.Range.Tables(3).Cell(1, 2).Range.InsertAfter($Scheckaus) ; Adresse Absender Scheckaustelle
$odoc.Range.Tables(3).Cell(3, 1).Range.InsertAfter($Betragw) ; ScheckBetrag in Worten
$odoc.Range.Tables(3).Cell(4, 2).Range.InsertAfter($Betragz) ; Scheckbetrag in Zahl
$odoc.Range.Tables(3).Cell(2, 3).Range.InsertAfter("Vorname Name STraße PLZ Stadt") ; Adresse Kundenadresse
$odoc.Range.Tables(3).Cell(5, 2).Range.InsertAfter("Erfurt") ; Austellungsort
$odoc.Range.Tables(3).Cell(6, 2).Range.InsertAfter(_NowDate()) ; datum
$odoc.Range.Tables(3).Cell(5, 1).Range.InsertAfter("Vorname Name STraße PLZ Stadt")
;Schecknummer
$odoc.Range.Tables(3).Cell(10, 1).Range.Font.Name = "OCRAhuslik"
$odoc.Range.Tables(3).Cell(10, 1).Range.InsertAfter($Schecknr & Chr(176))
;Kontonr.
$odoc.Range.Tables(3).Cell(10, 2).Range.Font.Name = "OCRAhuslik"
$odoc.Range.Tables(3).Cell(10, 2).Range.InsertAfter($Kto & Chr(35))
;Betrag
$odoc.Range.Tables(3).Cell(10, 3).Range.Font.Name = "OCRAhuslik"
$odoc.Range.Tables(3).Cell(10, 3).Range.InsertAfter("00000" & $Betragz & Chr(33))
;Bankleitzahl
$odoc.Range.Tables(3).Cell(10, 4).Range.Font.Name = "OCRAhuslik"
$odoc.Range.Tables(3).Cell(10, 4).Range.InsertAfter($BLZ & Chr(176))
; Text
$odoc.Range.Tables(3).Cell(10, 5).Range.Font.Name = "OCRAhuslik"
$odoc.Range.Tables(3).Cell(10, 5).Range.InsertAfter("01" & Chr(176))
;; Tabelle 4 Empfänger Beleg
$odoc.Range.Tables(4).Cell(1, 1).Range.InsertAfter("Scheckausteller")
$odoc.Range.Tables(4).Cell(1, 2).Range.InsertAfter($Scheckaus)
$odoc.Range.Tables(4).Cell(3, 1).Range.InsertAfter("Scheckempfänger")
$odoc.Range.Tables(4).Cell(3, 2).Range.InsertAfter("Vorname Name STraße PLZ Stadt")
$odoc.Range.Tables(4).Cell(5, 1).Range.InsertAfter("Scheckverwendungszweck")
$odoc.Range.Tables(4).Cell(5, 2).Range.InsertAfter("Brutto EUR")
$odoc.Range.Tables(4).Cell(5, 3).Range.InsertAfter("% Sk.")
$odoc.Range.Tables(4).Cell(5, 4).Range.InsertAfter("Skonto EUR")
$odoc.Range.Tables(4).Cell(5, 5).Range.InsertAfter("Netto EUR")
$odoc.Range.Tables(4).Cell(9, 1).Range.InsertAfter("Datum: " & _NowDate() & @LF & "ScheckNR: " & $Schecknr & @LF & "BLZ " & $BLZ & @LF & "Kto " & $Kto)
$odoc.Range.Tables(4).Cell(9, 2).Range.InsertAfter($array[1][1] & $array[2][1] & ",00 EUR")
;_WertzuWort($Wert)
; Funktionen Umwandelung Zahl zu Wort
Func _WertzuWort($number)
;$number = StringSplit( $number,",")
$number_vk = StringLen( $number)
;$number_nk = StringLen( $number[2])
For $i = 1 To $number_vk
$res = StringLeft($number, $i)
;MsgBox(0, "Leftmost 3 characters are:", $result)
$var = StringRight($res, 1)
;MsgBox(0, "Rightmost 3 characters are:", $var)
_num_word($var)
$sString &= $number_xx & "*"
IF $i = $number Then ExitLoop
Next
EndFunc
Func _num_word($number)
;deklaration Nummmer /Wort
$number0 = "NULL"
$number1 = "EINS"
$number2 = "ZWEI"
$number3 = "DREI"
$number4 = "VIER"
$number5 = "FÜNF"
$number6 = "SECHS"
$number7 = "SIEBEN"
$number8 = "ACHT"
$number9 = "NEUN"
IF $number = 0 Then $number_xx = $number0
IF $number = 1 Then $number_xx = $number1
IF $number = 2 Then $number_xx = $number2
IF $number = 3 Then $number_xx = $number3
IF $number = 4 Then $number_xx = $number4
IF $number = 5 Then $number_xx = $number5
IF $number = 6 Then $number_xx = $number6
IF $number = 7 Then $number_xx = $number7
IF $number = 8 Then $number_xx = $number8
IF $number = 9 Then $number_xx = $number9
EndFunc
Alles anzeigen
Die Word Datei sah dann so in etwas vom Aufbau aus.
Gruß Marcel
Guten Morgen Sven,
danke für deine Erläuterung.
Gruß Marcel
Hallo Sven,
habe mir mal dein Boilerplate Tutorial angesehen und auch Abonniert
Was mir in der Struktur nicht gefällt, dass alle selector und page-objects in der Ebene 1 liegen. Schon bei einigen Websites wird es meiner Meinung nach unübersichtlich, wenn alles im Hauptpfad liegt.
Ich stelle mir die Aufteilung eher so vor. Hat das irgendwelche Nachteile gegenüber deiner Aufteilung? Was meinst du dazu?
Viele Grüße
Marcel
Hallo Sven,
ein kleines Beispiel zu deiner Frage.
Die Website xyz hat ca. 40 -50 Agenturnummern. Pro Agenturnummer gibt es einen User und ein Passwort. Die MA selbst sollen die Zugangsdaten nicht kennen. Wurde so vom GF festgelegt.
Diese Daten stehen nun verschlüsselt in einer internen DB. Das Script hat nun eine GUI, und die Agenturnummern werden in einem Dropdown aufgelistet.
Wählt der User nun die Agenturnummer XYZ-1123, wird per Chromedriver die Website geöffnet und der automatische Login durchgeführt, die Website bleibt offen, der Chromedriver wird beendet.
Auf der Webseite macht der User entsprechende Eintragungen oder was auch immer und schließt diese wieder. Im nächsten Moment kann es sein, dass der User die Nummer XYZ-456 benötigt.
Erneuter Login usw.
In einem anderen Fall wurden für die User Website Zugriffstoken erstellt, diese liegen auch wieder in einer DB und werden anhand des @Username per Website Link übergeben und per Chromedriver wird dann nur der Login durchgeführt. Auch hier wird der Chromedriver danach wieder beendet und die Website bleibt offen.
Viele Grüße zurück
Marcel
Guten Morgen Sven,
die Automatisierung wird von Kollegen (ca. 300) benutzt. Die Automatisierung selbst übergibt nur Login Daten und wird je nach Aufgabengebiet täglich mehrfach benutzt.
Als Ladezeit hatte ich aktuell 5 Sekunden. Ich schau mir das mit dem Cookie Consent an, vielleicht ist es wirklich besser das darüber zu lösen.
Danke
Viele Grüße
Marcel
Ja genau, die Cookie Bestätigung soll nicht jedes mal gemacht werden.
Richtig, wenn ich --user-data-dir angebe, wird wieder erst die Intranet-Seite geladen und dann erst die per _WD_Navigate gesetzte URL.
Ist das eventuell etwas, was man umsetzen kann?
Mach dir da wegen dem umsetzten keine Arbeit, außer es wird von anderen noch benötigt.
Im Aufruf chrome://policy/ unter HomepageLocation sehe ich den Website Eintrag der da gesetzt ist.
Allen ein schönes Wochenende
Gruß Marcel
Guten Morgen,
das boilerplate habe ich mir schon geladen und einen ersten Blick darauf geworfen.
Bei den Automationen ist es so, dass einige der Webseiten bei jedem Zugriff eine Cookie Auswahl speichern wollen.
Wenn ich nun in den DesiredCapabilities das --user-data-dir= angebe werden die Cookies nur beim ersten Zugriff abgefragt, beim nächsten Zugriff kommt dann keine Abfrage.
Danke für deine Mühe mit mir
Gruß Marcel
Hallo Sven,
hast du vielleicht für den Chrome ein einfachen Beispiel Script, was ich mir bearbeiten kann, also mit dem neuen Aufbau?
Mein aktuelles Script sieht ja wie folgt aus:
#include "wd_helper.au3"
#include "wd_core.au3"
If @LogonDomain <> "domain" Or @LogonDNSDomain <> "domain.INT" Then EXIT ; schließe Script, wenn außerhalb der Domain geöffnet wird
Local $file
Local $sSession = ""
$GoogleChrome64bit = "C:\Program Files\Google\Chrome\Application\chrome.exe"
$GoogleChrome32bit = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
If FileExists($GoogleChrome64bit) Then $file = $GoogleChrome64bit
If FileExists($GoogleChrome32bit) Then $file = $GoogleChrome32bit
If FileExists($file) Then
$google_chrome_version = FileGetVersion($file)
$google_chrome_version_array = StringSplit($google_chrome_version,".")
$webdriver = "chromedriver_" & $google_chrome_version_array[1] & ".exe"
If Not FileExists(@ScriptDir & '\data\'& $webdriver) Then
MsgBox(0,"Info","Google Chromedriver nicht vorhanden." & @CRLF & $webdriver)
Exit
EndIf
Else
MsgBox(0,"Info","Google Chrome in folgenden Pfad nicht vorhanden." & @CRLF & @CRLF & $file)
Exit
EndIf
$url = "https://meine-URL.de"
$user = "User"
$pass = "Passwort"
$_WD_DEBUG = $_WD_DEBUG_None ;set to $_WD_DEBUG_None before compiling.
;Global $_WD_DRIVER
Local $sDesiredCapabilities
Local $iIndex
_WD_UpdateDriver('chrome', @ScriptDir & '\data\') ; Webdriver Download
SetupChrome()
_WD_Startup()
; Hide the WebDriver Console
;_WD_ConsoleVisible(True)
_WD_ConsoleVisible(False)
$sSession = _WD_CreateSession($sDesiredCapabilities)
_WD_Window($sSession, "Maximize", "{}")
_WD_Navigate($sSession, $url)
_WD_LoadWait($sSession)
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='name']")
ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='name']")
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='pass']")
ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_pass = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='pass']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_user, 'value',$user)
_WD_ElementAction($sSession, $sElement_pass, 'value',$pass)
Sleep(500)
EndIf
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='loginButton']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement, 'click')
Sleep(500)
EndIf
_WD_Shutdown()
_WD_DeleteSession($sSession)
Exit
Func SetupChrome()
_WD_Option('Driver', 'data\'& $webdriver)
_WD_Option('Port', 9515)
_WD_Option('DriverParams')
;$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
;'"goog:chromeOptions": {"w3c": true, "excludeSwitches": ["enable-automation"], "useAutomationExtension": false, ' & _
;'"prefs": {"credentials_enable_service": false} }}}}'
$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
'"goog:chromeOptions": {"w3c": true, "excludeSwitches": ["enable-automation"], "useAutomationExtension": false, ' & _
'"prefs": {"credentials_enable_service": false},' & _
'"args": ["--user-data-dir=C:\\Users\\' & @UserName & '\\AppData\\Local\\Google\\Chrome\\User Data\\chromedriver\\mein-Tool\\"] }}}}'
EndFunc
Alles anzeigen
Wenn ich die DesiredCapabilities ohne --user-data-dir= aufrufe, werden die Cookies nicht gespeichert, deshalb ist der Aufruf hinterlegt.
Gibt es dazu eine andere Lösung? Eben nochmal mit der heise.de Seite getestet.
Gruß Marcel
Ja, aktuell mache ich das Webdriver Update immer von Hand. Die Scripte + Webdriver liegen bei uns im Netzlaufwerk und der User der das öffnet, hat nur RO Rechte.
Der Webdriver wird dann einmal heruntergeladen und per CMD auf die verschiedenen Scripte im Netzlaufwerk verteilt, ebenso, wenn es im Script mal eine Anpassung gab.
Wir müssen diesen Prozess mit dem Netzlaufwerk aber demnächst anpassen, da wir auf Azure Cloud wechseln. Da habe ich aber noch keine richtige Idee, wenn es mal ein Script Update gibt.
Die Scripte müssten dann ja lokal auf die Clients und brauchte für eventuelle Script Update einen Updater. Die WD_UpdateDriver Funktion wäre da ja schon mal ganz gut.
Danke
Gruß Marcel
Hat jemand den Webdriver für die Google Chrome Version 124.x.x.x. Die ist irgendwie nicht verfügbar für die Browserversion 124.x.x.x.
Guten Morgen Sven,
danke für deine Antwort. Ich schaue mir das an und teste nochmal.
Die Umstellung auf Webdriver musste damals erfolgen, weil die IE Automation nicht mehr funktioniert hat.
Vieles wurde da aus Beispielen übernommen.
Gruß Marcel
Hallo Sven,
beim Ausführen des Scriptes ist der der Google Chrome Browser geschlossen. Von daher sollte keine alte Session offen sein.
Wenn ich das Script mit den folgenden sDesiredCapabilities ausführe, kommt die Standard Webseite und danach die Navigation zur gewünschten Webseite.
$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
'"goog:chromeOptions": {"w3c": true, "excludeSwitches": ["enable-automation"], "useAutomationExtension": false, ' & _
'"prefs": {"credentials_enable_service": false},' & _
'"args": ["--user-data-dir=C:\\Users\\' & @UserName & '\\AppData\\Local\\Google\\Chrome\\User Data\\chromedriver\\meinTool\\", "--profile-directory=Default"] }}}}'
Wenn ich das so nutze wird für jedes der Autologin Tools ein entsprechender Ordner im AppData Pfad erstellt. Inhalt des Ordners siehe Bild unten.
Wenn ich die sDesiredCapabilities wie folgt nutze, wird scheinbar die Standard Webseite nicht vorher geöffnet oder es geht einfach schneller.
Es scheint aber dennoch eine Unterschied zu dem Parameteraufruf zu geben.
"C:\Program Files\Google\Chrome\Application\chrome.exe" http://www.google.de
$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
'"goog:chromeOptions": {"w3c": true, "excludeSwitches": ["enable-automation"], "useAutomationExtension": false, ' & _
'"prefs": {"credentials_enable_service": false},' & _
'"args": ["start-maximized"] }}}}'
Kann man das eventuell besser Lösen oder wird das nicht benötigt ?
Gruß Marcel
Hallo Zusammen,
ich nutze jetzt schon länger den Webdriver für die Google Chrome Automatisierung.
Leider wurde bei uns jetzt per GPO eine Startseite "Intranet" gesetzt und das _WD_Navigate($sSession, $url) zur eigentlichen URL dauert dadurch viel länger.
Beim Google Chrome kann ich ja per Parameter direkt eine URL übergeben. Funktioniert sowas auch bei dem Webdriver?
Beispiel: "C:\Program Files\Google\Chrome\Application\chrome.exe" http://www.google.de Hier kommt die per GPO hinterlegte Seite nicht.
Danke
Gruß gmmg
SOLVE-SMART , ich selbst würde die DB auf ein Netzlaufwerk legen, aber per UNC Server Pfad im Script öffnen.
Das Beispiel hoben habe ich mal aus meinen Scripten zusammen kopiert.
Auch muss man bei @IPAddress schauen ob man die @IPAddress1, @IPAddress2 , @IPAddress3 oder @IPAddress4 benötigt.
Ich habe das mal so auf die schnelle gelöst. geht sicherlich mit Schleife schöner.
;-----get IP -----------------------------------------------------------
IF StringLeft(@IPAddress1,3) = "10." Then $ip = @IPAddress1
IF StringLeft(@IPAddress2,3) = "10." Then $ip = @IPAddress2
IF StringLeft(@IPAddress3,3) = "10." Then $ip = @IPAddress3
IF StringLeft(@IPAddress4,3) = "10." Then $ip = @IPAddress4
Die Umsetzung auf eine MySQL DB / Maria DB /MS-SQL ist auch kein Problem oder wie von water vorgeschlagen in eine Datei schreiben.
Gruß gmmg
Schreibe dir ein kleines Tool, was dann am PC im Autostart oder Loginscript liegt und schreibe deine gewünschten Daten in eine Datenbank (MySQL /MS Access oder sonstige).
Dann hast du diese immer aktuell in der DB vorliegen.
Hier mal ein Beispiel:
#AutoIt3Wrapper_UseX64=y
#include <Array.au3>
#include <Date.au3>
#include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
;--------- MSAccess DB ------------
$dbname = @ScriptDir & "\DB.accdb"
$tblname = "Login"
Local $Connection = _Start_Connection($dbname & ";")
Local $Array_Login = _Get_Records("SELECT * FROM " & $tblname)
_ArrayDisplay($Array_Login)
Local $InsertData = _Insert_Data("INSERT INTO " & $tblname & "([Computer], [IP], [User], [Datum]) VALUES ('" & @ComputerName & "', '"& @IPAddress3 & "', '" & @UserName & "', '" & _Now() & "');")
Local $Array_Login = _Get_Records("SELECT * FROM " & $tblname)
_ArrayDisplay($Array_Login)
_Close_Connection()
Alles anzeigen
Die DB sieht dann so aus.
Die UDF gibt es hier : https://www.autoitscript.com/forum/topic/17…ent-accdb-only/
Gruß gmmg
Hi GML,
leider kann man deinem Post nicht entnehmen, was du genau mit den Daten vorhast.
Wir haben früher mal die Info benötigt, welcher User aktuell an welchem Client arbeitet. Hier wurden die entsprechenden Daten per Anmeldescript in eine Datenbank geschrieben.
Falls ihr bereits Azure/ Intune benutzt, lassen sich dort meines Wissens auch diese Daten abgreifen.
Gruß gmmg
Hallo,
ich nutze oft die Metro_CreateGUI UDF.
Hier macht man das ja einfach mit einem Label "GUICtrlCreateLabel"
Beispiel, kann ja für die einfache GUI angepasst werden.
Local $tel_GUI = _Metro_CreateGUI("", 280, 210,-1,-1,True)
;Add control buttons
Local $Control_Buttons_tel = _Metro_AddControlButtons(True,False,True)
;Set variables for control buttons
Local $GUI_CLOSE_BUTTON = $Control_Buttons_tel[0]
Local $GUI_MINIMIZE_BUTTON = $Control_Buttons_tel[3]
$label_tel = GUICtrlCreateLabel("Support",65,20,110,25)
GUICtrlSetFont($label_tel, 9, 300, 0, "Arial")
$n = GUICtrlCreatePic(@ScriptDir & "\bin\images\rotkreuz_gr.jpg", 12, 10, 38, 30)
$lb1 = GUICtrlCreateLabel("Username:", 30, 80)
$telEdit1 = _GUICtrlEdit_Create($tel_GUI, "erf", 90, 80, 100, 20, $ES_AUTOHSCROLL)
$telButton = _Metro_CreateButton("Weiter", 90, 160, 100, 20)
GUISetState()
Alles anzeigen
die GUI sieht dann so aus.
Gruß gmmg