Schnuffel, danke, das war der richtige Hinweis
Habe den folgenden Wert in der Datei "C:\Users\%username%\AppData\Local\AutoIt v3\SciTE\SciTEUser.properties" hinzugefügt.
buffers=35
Gruß Marcel
Schnuffel, danke, das war der richtige Hinweis
Habe den folgenden Wert in der Datei "C:\Users\%username%\AppData\Local\AutoIt v3\SciTE\SciTEUser.properties" hinzugefügt.
buffers=35
Gruß Marcel
Hallo Zusammen,
ich musste mein System neu installieren und bekomme es aktuell nicht hin im Scite die Anzahl der geöffnet Tabs zu erhöhen.
Ich bin der Meinung das ging in der Datei "SciTEGlobal.properties" in der Zeile buffers=20.
Hier habe ich auf dem alten PC auch die Einstellung buffers=55 gefudnen, welche korrekt wäre, nur greift das nicht in de rneuen Installation.
Hat jemand eine Idee?
Gruß gmmg
Über die Word UDF kannst du das sicherlich auch umsetzen.
Wir haben da früher mal per AutoIT automatisch Verrechnungsschecks erstellt und diese für den postalischen Versand ausgedruckt.
Im Word Dokument wurde mit Tabellen gearbeitet, die dann beschrieben wurden.
Auch kann man ja im Word als PDF speichern.
folgend ein Code Schnipsel, muss aber noch angepasst werden.
#include <Word.au3>
$Logo = "D:\Scripte\Icons\flug.jpg"
Local $oWord = _Word_Create()
Local $oDoc = _Word_DocOpen($oWord, @ScriptDir & "\Schecktemplate.doc")
Local $aData = _Word_DocTableRead($oDoc, 1)
; Tabelle 1 Scheckempfänger und Absender
$oDoc.Tables(1).Cell(1, 1).Range.Text = "Test" ;Adresse Absender Scheckaus
$oDoc.Tables(1).Cell(2, 1).Range.Text = "Herr" ; Anrede
$oDoc.Tables(1).Cell(3, 1).Range.Text = "Max Muster" ; Vorname Name Scheckempfänger
$oDoc.Tables(1).Cell(4, 1).Range.Text = "musterweg 1" ; Straße Scheckempfänger
$oDoc.Tables(1).Cell(5, 1).Range.Text = "0000000" ; PLZ Scheckempfänger
$oDoc.Tables(1).Cell(5, 2).Range.Text = "Musterstadt" ; Ort Scheckempfänger
; Firmenlogo Absender Tabelle 2
$oDoc.Tables(2).Cell(1, 1).Range.InlineShapes.AddPicture($Logo) ; Logo einfügen
Alles anzeigen
Gruß gmmg
Schnuffel laut Dokumenteneigenschaften wurde das Template mit OpenOffice erstellt ![]()
Ich nutze auch nur die bekannte dll Version.
Montag könnte ich auf Arbeit schauen, welche ich da einsetze.
hier gibt es die von 2021. ohne Gewähr.
prüfe doch auch mal die Version der libmysql.dll
Hallo Sven,
hoffe es geht dir gut und danke für deine Antwort ![]()
Zum Post Befehl, das mache ich über die folgende FUNC.
Das Problem ist für meine Nutzung gelöst, ich teste die Tage aber auch nochmal deinen Ansatz.
_POST_DATA($URL, $JSON)
FUNC _POST_DATA($URL, $JSON) ; Post with URL & JSON DATA
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("POST", $URL, False)
$oHTTP.SetRequestHeader("Content-Type", "application/json")
$oHTTP.SetRequestHeader("Cache-Control", "no-cache")
$oHTTP.Send($JSON)
$oReceived = $oHTTP.ResponseText
$oStatusCode = $oHTTP.Status
If $oStatusCode <> 200 Then
MsgBox(4096, "Error", $oStatusCode,2)
EndIf
;ConsoleWrite($oReceived)
EndFunc
Alles anzeigen
Gruß Marcel
Schnuffel ja, da bin ich mir auch nicht 100% sicher. Gestern als ich mit einem Base64 Converter getestet habe, war der Base64 String des Bildes in einer Zeile. Wollte ich diesen per Autoit Post absetzen, kam der Fehler zurück, der auf die Zeichenbegrenzung von 4096 Zeilen hindeutet. Mit dem Tool Postman hingegen ging der Post Befehl mit diesem langen String durch.
Nun habe ich bissl im engl Forum gestöbert und habe den Codeschnipsel zum base64 Convert gefunden. Diesen im ersten Step getestet und die gleiche Fehlermeldung bekommen.
Jetzt nachdem ich dem Script im Base64 Code noch das StringReplace für @LF eingefügt habe läuft dieses.
$FN = "D:\testbild.jpg"
$dat=FileRead(FileOpen($FN,0))
$objXML=ObjCreate("MSXML2.DOMDocument")
$objNode=$objXML.createElement("b64")
$objNode.dataType="bin.base64"
$objNode.nodeTypedValue=$dat
$objNode.Text = StringReplace($objNode.Text, @LF, '') ; entferne Zeilenumbruch
sozusagen ist das Problem für diesen Fall gelöst.
Gruß Marcel
das ist dann das JSON welches ich absende
$JSON = '{' & _
'"UserLogin":"user",' & _
'"Password":"pass",' & _
'"Ticket":{ ' & _
'"Title":"' & $JsonTitleSubject & '",' & _
'"QueueID":"5",' & _
'"LockID":"1",' & _
'"TypeID":"4",' & _
'"ServiceID":"",' & _
'"SLAID":"",' & _
'"StateID":"4",' & _
'"PriorityID":"3",' & _
'"CustomerUser":"' & $AbsenderMail & '"' & _
'},' & _
'"Article":{' & _
'"ArticleTypeID":"8",' & _
'"SenderTypeID":"1",' & _
'"From":"' & $AbsenderMail & '",' & _
'"Subject":"' & $JsonTitleSubject & '",' & _
'"Body":"' & $JsonBody & '",' & _
'"ContentType":"",' & _
'"MimeType":"text/html",' & _
'"Charset":"UTF8"' & _
'},' & _
'"Attachment":{' & _
'"ContentType":"image/jpg",' & _
'"Filename":"Testbild.jpg",' & _
'"Content":"' & $Attachment & '"' & _
'}' & _
'}'
Alles anzeigen
mit diesem Stück Quellcode wandle ich das Bild in Base64
;Xroot 2011
ClipPut("")
;$FN=FileOpenDialog("Pick The Image You Want...","C:My DocumentsImages","Images(*.*)",3)
;If @error Then
; MsgBox(4096,"","No File Selected.....",2)
; Exit
;EndIf
$FN = "D:\testbild.jpg"
$dat=FileRead(FileOpen($FN,16))
$objXML=ObjCreate("MSXML2.DOMDocument")
$objNode=$objXML.createElement("b64")
$objNode.dataType="bin.base64"
$objNode.nodeTypedValue=$dat
$objNode.Text = StringReplace($objNode.Text, @LF, '') ;um den Zeilenumbruch zu entfernen
ClipPut($objNode.Text)
Alles anzeigen
Hallo Zusammen,
ich habe ein beliebiges jpg, z.B aus einem Screenshot Tool)
Dieses möchte ich an einem Webservice per Post Befehl übergeben, dazu muss diese Base64 Convertiert sein.
Leider ist hier der Base64 String von diesem Bild dann länger wie die von Autoit erlaubten 4095 Zeichen. (but keep in mind that no line in an AutoIt script can exceed 4095 characters.))
Mit der Anwendung Postman kann ich diesen String verarbeiten. Wie kann man das Problem für Autoit lösen?
Gruß Marcel
Hallo Chris,
ich mache es immer so.
Zuerst das _WD_Shutdown() , dann _WDeleteSession($sSession) .
Gruß Marcel
Racer, schau ich mir an.
Schnuffel, die Exe Tools laufen nur intern.
Mit einem Zertifikat bzw. dem Signieren soll ja erreicht werden, dass diese nicht vom Antivierenprogramm geblockt werden. Deshalb war ja mein Gedanke, dass ich ein gekauftes Zertifikat nutze. Gekaufte Zertifikate sind aber max. nur 1 Jahr gültig. dann müsste man diese erneuern.
Nach erstem Test so wie oben im Quelltext angegeben, funktioniert es ja. Das in Autoit erstellte Tool wird nicht mehr geblockt.
Ich teste das einfach die nächsten Wochen/ Monate so und berichte die Erfahrungen daraus.
Gruß gmmg
die Antivieren Software blockiert die Anwendung, obwohl diese vorher gescannt wurde und es hier keine Probleme beim scannen gab.
Nach mehrmaligem neu kompilieren funktioniert das Ausführen dann auch irgendwann. Wenn ich hingegen beim kompilieren direkt Signiere, tritt das Problem überhaupt nicht auf.
Deshalb die Aussage das es "Nervt".
Die Seite aus dem engl. Forum ist mir bekannt.
Danke
Gruß Marcel
Hallo Zusammen,
es gab im Forum schon einige Ansätze zum Signieren einer in Autoit geschriebenen Exe.
Da mich unser Antiviren Tool immer mal nervt, habe ich folgenden Lösungsansatz gefunden. Dieser funktioniert für unseren Einsatzzweck bisher problemlos.
Ich habe mir das signtool installiert und füge folgende Zeile an den Anfang des Scriptes:
#AutoIt3Wrapper_Run_After=""%ProgramFiles(x86)%\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe" sign /tr http://timestamp.digicert.com/scripts/timestamp.dll /td SHA256 /fd SHA256 /a "%out%""
Die entsprechende Exe ist dann digital Signiert.
Wie binde ich aber hier ein Zertifikat ein oder ist das nicht nötig, da dies ja auch nur 1 Jahr gültig ist?
Gruß gmmg
Das ist ohne dein Script zu kennen schwierig zu beantworten, da es verschiedene Ansätze gibt.
Schau dir einmal das "Getting started example" Script im Abschnitt "create capabilites for session" auf der folgenden Webseite an, da sollte das klar werden.
Ansonsten poste doch mal dein Script (ohne URL und Passwörter)
Hier mal ein Beispiel zum Login für Autoit, so wie ich das mache. Achtung hier wird noch die Chrome Version anhand der GoogleChrome.exe ausgelesen. Das müsstest du an deine Gegebenheiten anpassen.
#include "wd_helper.au3"
#include "wd_core.au3"
Local $file
$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
$user = ""
$pass = ""
$_WD_DEBUG = $_WD_DEBUG_None ;set to $_WD_DEBUG_None before compiling.
;Global $_WD_DRIVER
Local $sDesiredCapabilities
Local $iIndex
$url = "https://autoit.de/wcf/login/?url=https%3A%2F%2Fautoit.de%2F"
SetupChrome()
_WD_Startup()
$sSession = _WD_CreateSession($sDesiredCapabilities)
_WD_Window($sSession, "Maximize", "{}")
_WD_Navigate($sSession, $url)
_WD_LoadWait($sSession, 1500)
;WinSetState ("","",@SW_MAXIMIZE)
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='username']")
;ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='username']")
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='password']")
;ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_pass = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='password']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_user, 'value',$user)
EndIf
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_pass, 'value',$pass)
EndIf
Sleep(1000)
;Send("{ENTER}")
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "/html/body/div[1]/section/div/div/div[1]/form/section[1]/div/input[1]")
;_WD_HighlightElement($sSession, $sElement, 3)
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', 'chromedriver.exe')
_WD_Option('Driver', 'data\'& $webdriver)
_WD_Option('Port', 9515)
_WD_Option('DriverParams', '--log-path="' & @UserProfileDir & '\chrome.log"')
_WD_Option('DriverParams')
$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
'"goog:chromeOptions": {"w3c": true, "excludeSwitches": ["enable-automation"], "useAutomationExtension": false, ' & _
'"prefs": {"credentials_enable_service": false},' & _
'"args": ["--disable-search-engine-choice-screen"] }}}}'
EndFunc
Alles anzeigen
Gruß gmmg