Oops ich meinte eigentlich auch 255.
Danke für die richtig Stellung Bitnugger ![]()
Oops ich meinte eigentlich auch 255.
Danke für die richtig Stellung Bitnugger ![]()
Schau mal hier:
oder
SplashTextOn - Fenster automatisch an Schriftgröße anpassen
Alternativ optimierst du den SplashText für die maximale Zeichenlänge unter Windows der Dateinamen (256 wenn ich mich jetzt nicht falsch erinnere).
BugFix Habe nur aufzeigen wollen, was er dafür "separieren" muss und wie. Da sind so einige Sachen, sie ich in seinem Skript etwas anders machen würde bzgl. Lokal und Global bzw. Const. Aber da ich mir da bei einigen Post die Finger diesbezüglich wundschreiben würde wollte ich hier den Fokus auf das wesentliche legen. aber genrell gebe ich dir recht und habe es mal eingefügt.
Edit: Und ich selber versuche so wenig wie möglich Global zu setzen, alles was man nur Lokal braucht, gehört für mich nur in einen Lokalen Kontext. Was es zudem zumindest für $hFont schwierig macht, da der Inhalt dynamisch ist. Die anderen drei könnte man jedoch durchaus als globale Konstanten setzen, da immer gleich. Jedoch müsste GDIPlus dann direkt bei Programmstart mitgestartet und erst beim beenden geschlossen werden, was für mich auch ein Grund wäre bei der lokalen Variante zu bleiben.
ungetestet:
;~ Global $sSizeTime = IniRead($sOptionsFile, "options", "size_time", 0) ;Idealerweise berechnen, sonst brauchst du für jeden Text einen Ini-Eintrag!
;~ Global $sSizeDate = IniRead($sOptionsFile, "options", "size_date", 0) ;Idealerweise berechnen, sonst brauchst du für jeden Text einen Ini-Eintrag!
;~ Global $sPosTime = IniRead($sOptionsFile, "options", "pos_time", 0) ;Idealerweise berechnen oder fest übergeben, sonst brauchst du für jeden Text einen Ini-Eintrag!
;~ Global $sPosDate = IniRead($sOptionsFile, "options", "pos_date", 0) ;Idealerweise berechnen oder fest übergeben, sonst brauchst du für jeden Text einen Ini-Eintrag!
Func GDIPlus_Add_TextToImage(Const $sText, $sPos, $sSize) ;$sSize kann weg, wenn es "berechnet" wird
Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont)
;~ Local Const $sSize = ;Du musst Size errechnen oder sie der Funktion übergeben, Siehe dazu: https://www.autoitscript.com/forum/topic/182271-solved_gdiplus-how-calculate-font-size-to-fill-a-_gdiplus_rectfcreate/
Local Const $hFont = _GDIPlus_FontCreate($hFamily, $sSize, 0)
Local Const $hFormat = _GDIPlus_StringFormatCreate(0x4000)
_GDIPlus_StringFormatSetAlign($hFormat, 1)
Local Const $hBrush = _GDIPlus_BrushCreateSolid(0xff000000)
Local Const $hPen = _GDIPlus_PenCreate(0xC4000000, 1)
Local Const $tLayout = _GDIPlus_RectFCreate(200, $sPos)
Local Const $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sText, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphic, $sText, $hFont, $aInfo[0], $hFormat, $hBrush)
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_GraphicsDispose($hGraphic)
EndFunc
Alles anzeigen
Tipp:
gert_nrw_71: Du wirst entweder ein sichtbares Inputfeld benötigen oder du musst, was BugFix schon vorgeschlagen hat, versuchen mit einem angehängten Prefix (Scanner konfiguration) UND einem versteckten Inputfeld arbeiten.
Sie können ein Präfix oder Postfix verwenden, um Tastencodes wie Sonderzeichen, Wagenrücklauf oder Tabulatorzeichen vor oder nach den Strichcodedaten hinzuzufügen.
Letzteres habe ich noch nie probiert, könnte mir auch vorstellen das es von der zeitlichen Abfolge Probleme geben könnte aber das Prinzip würde ich mir so vorstellen:
;Wenn ? als prefix konfiguriert ist.
HotKeySet("?", "Scan")
Func Scan()
Local Const $LastFocus = _WinAPI_GetFocus()
_WinAPI_SetFocus($ScanBox)
sleep(500); um sicher
$deineVariable = GUICtrlRead($ScanBox)
GUICtrlSetData($ScanBox, "")
_WinAPI_SetFocus($LastFocus)
EndFunc
Alles anzeigen
Ich würde daher mal behaupten der beste Weg wäre ein sichtbares Inputfeld.
Ansonsten schau dir das mal an: https://www.autoitscript.com/forum/topic/18…f-com-port-udf/
hipfzwirgel Was ist wenn du dir via Powershell einfach mal ausgibst was überhaupt möglich ist? Siehe dazu: https://www.configjon.com/hp-bios-settings-management/
Shau auch mal hier: http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf
Demnach solltest du kein Komma, sondern Leerzeichen nutzen, also:
Laut folgendem (https://www.autoitscript.com/forum/topic/15…-to-a-wmi-call/) müsste Oscars Variante andersherum sein:
;Oscar:
$objItem.SetBiosSetting($strReturn, "TPM Activation Policy", "No prompts", "<utf-16/>" & $sPwd2)
;Laut oben genanntem Link:
$strInParamValue = '"TPM Activation Policy","No prompts","<utf-16/>"' & $sPwd2
$objItem.SetBiosSetting($strInParamValue, $strReturn)
Andererseits wäre laut https://www.autoitscript.com/forum/topic/14…ript-to-autoit/ Oscars Variante korrekt... ich bin verwirrt.
Da war der Aufruf mit
"TPM Activation Policy", "No prompts", "<utf-16/>"Passwort erfolgreich.
Wenn das der Fall ist, ändere deinen Code:
Das wäre auch meine Idee, da ich aber mich weder besonders gut mit den Objekten noch mit deren Umgang auskenne, habe ich mich diebezüglich hier zurück gehalten.
Velted Die Variable oReturn is die Rückgabevariable, also das Gleiche wie z.B. $oReturn = objItem.SetBiosSetting '"TPM Activation Policy","No prompts","<utf-16/>"' &sPwd2
Siehe dazu auch: https://www.mcseboard.de/topic/134720-h…ttings-per-vbs/
hipfzwirgel Mein Link hier hat im letzten Parameter nicht diese utf-16, sondern <kbd/>
Das habe ich bei einigen Beispielen nun gesehen. Könnte das auch einen Unterschied machen?
hipfzwirgel Hinweis: Sofern hinter deinm utf16 string ein Passwort kommt, solltest du das auch in Beitrag #2 im ersten Beispiel Code raus nehmen, denn dort steht es in Klartext drin!
Tipp: Warum baust du dir deinen String so kompliziert zusammen?
;Dein Code
Local $strRequest = '"TPM Activation Policy"' & "," & '"No prompts"' & "," & "<utf-16/>" & $sPwd2
;Etwas besser lesbarer Code
Local $strRequest = '"TPM Activation Policy","No prompts",<utf-16/>' & $sPwd2
;Je nach Handhabung ggf. auch mal so:
Global $strRequest = '"TPM Activation Policy",' & _
'"No prompts",' & _
'<utf-16/>' & $sPwd2
An welcher Stelle wird dir denn der Fehler ausgegeben?
Generell schlage ich vor, du liest dir erst mal das hier durch: https://www.autoitscript.com/autoit3/docs/f…s/GUICreate.htm
Dort findest du alle Informationen zu Punkt 1-4.
1. Siehe exstyle
2. Siehe syle
3. Siehe style (Popup)
4. siehe width/height
Und zu 5. Hat Racer denke ich den besten Ansatz: Taskplaner mit Event Login oder einfach in Autostart hinterlegen.
@Musashi : Ich denke das meinte er ![]()
MojoeB : Ist das nicht immer mal wieder so^^ (nicht auf Casi bezogen, sondern allgemein)
Velted: Ja, man kann das hier im ersten Teil auch mit dem "nur" Fileread lösen. Wie gesagt ich bevorzuge das überall gleich zu handhaben und casi4712 kann natürlich selber entscheiden was/wie er es nutzt. Da es im Endeffekt so oder so ausgeführt wird macht es effektiv keinen Unterschied (in der aktuellen Konstellation, wo es nur 1 mal verwendet wird).
Zudem ist das Fileclose durchaus vorhanden.
Genau der Fall funktioniert jedoch nicht. Teste es aus!
Edit: Im Einzelnen:
1. Wird das filehandle ($file) mitgeschleift und erst am Ende geschlossen, sind die Daten nicht aktuell bzw. können nicht gespeichert werden, womit diese Funktion nicht mehr gegeben ist.
2. Wird nur Filewrite genutzt, wird an das Ende der Datei der Text angehängt anstatt ihn mit dem neuen Inhalt zu ersetzen.
Naja so ein "Hammerding" war es eigentlich nicht.
Man muss sich halt mal kurz damit beschäftigen und was die Funktionen eigentlich machen/erwarten.
Blöd ist halt manchmal wenn man sein 0815 Vorbau hat und den 1:1 in den meisten Fällen nehmen kann, dann macht man sich über solche Kleinigkeiten keinen Kopf mehr, weshalb das bei mir nun auch länger gedauert hat als nötig gewesen wäre^^
Warum? Das bedeutet doch nur das die Datei komplett überschrieben wird. Warum sollte Fileopen das dann nicht finden?
Er will ja nichts anfügen, sondern komplett ersetzen, sofern ich das richtig verstanden habe.
... Aber du hast teilweise Recht. Aber ansonsten würde per Standard hinten angehängt und das ist nicht das was gewünscht ist.
Meine "Lösung" hatte jedoch einen Fehler, ist oben nun korrigiert und bestätigt meine Meinung in "Lieber mit Fileopen() und FileClose() arbeiten".
BTT:
Mögliche Lösung :
;Form3 Config1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _Form3()
;local $file = FileOpen("C:\Program Files\Mozilla Firefox\confs\firefox_ext.cfg")
local Const $Filename = @ScriptDir & "\test.txt"
local $file = FileOpen($Filename)
local $Form3 = GUICreate("Subform", 450, 425, -1, -1, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME)) ;Creates the GUI window
; local $iEdit = GUICtrlCreateEdit(FileRead($file) & @CRLF & "Another Line", 0, 0, 500, 400, $ES_WANTRETURN + $WS_VSCROLL + $ES_AUTOVSCROLL + $ES_MULTILINE + $WS_TABSTOP)
global $iEdit = GUICtrlCreateEdit(FileRead($file), 0, 0, 500, 400, $ES_WANTRETURN + $WS_VSCROLL + $ES_AUTOVSCROLL + $ES_MULTILINE + $WS_TABSTOP)
local $hButton = GUICtrlCreateButton("Speichern", 160, 400, 107, 25, $WS_GROUP)
GUICtrlSetBkColor(-1, $SubBack)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
GUICtrlSetLimit(-1, 0xFFFFFF)
ControlClick($Form3, "", $iEdit)
GUISetState(@SW_SHOW) ;Shows the GUI window
FileClose($file)
While 2
local $mMsg = GUIGetMsg()
Switch $mMsg
Case $GUI_EVENT_CLOSE
GUIDelete($Form3)
GUISetState(@SW_ENABLE, $Form3)
Return
Case $hButton
$file = FileOpen($Filename, $FO_OVERWRITE)
if FileWrite($Filename, GuiCtrlRead($IEdit)) then
MsgBox(0,"Fertig!","Datei wurde gespeichert!")
Else
MsgBox(0,"Fehler!","Datei konnte nicht gespeichert werden!")
Endif
;GUICtrlSetData($iEdit, FileRead($Filename)) ;Optional zur Kontrolle
FileClose($file)
EndSwitch
WEnd
EndFunc
Alles anzeigen
Moin Moombas,
das Zitat aus Deinem lBeitrag #25 gilt meiner Meinung nach auch für FileWrite().
Das Könnte sein und würde Sinn machen. Da es dort jedoch nicht erwähnt wird, habe ich das bisher immer mit Fileopen gemacht.
Edit: Ich denke ich weiß warum ich es konsequent mal immer mit Fileopen gemacht habe. Um es immer gleich zu handhaben, denn:
Zitat von HilfeTo write in another mode the file must be opened with FileOpen() and the relevant flags.
Velted Ist Fileread das nicht das gleiche wie Fileopen und Fileclose?
Zitat von HilfeIf a filename is given rather than a file handle - the file will be opened and closed during the function call -
Bzgl.: Filewrite: Musste man dazu die Datei nicht auch vorher mit Fileopen (mit schreibrechten) offen haben? Kenne das nur so, da aus der Hilfe so übernommen.
Sorry, default ist bei Fileopen der Readmode, da hatte ich nun nicht dran gedacht.
Du musst also z.B. $FO_OVERWRITE als 2. Parameter beim Fileopen mitgeben.
Siehe dazu auch: https://www.autoitscript.com/autoit3/docs/f…ns/FileOpen.htm