1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Moombas

Beiträge von Moombas

  • Splash Font automatisch anpassbar

    • Moombas
    • 2. August 2022 um 07:51

    Oops ich meinte eigentlich auch 255.

    Danke für die richtig Stellung Bitnugger ^^

  • Splash Font automatisch anpassbar

    • Moombas
    • 1. August 2022 um 14:20

    Schau mal hier:

    Pixel-accurate string width and height
    Here are two functions to provide pixel-accurate height and width dimensions for a given string. The more commonly-used _GDIPlus_GraphicsMeasureString built-in…
    www.autoitscript.com

    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).

  • GDIPlus code als Funktion - Bitte um Hilfe.

    • Moombas
    • 29. Juli 2022 um 09:25

    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.

  • GDIPlus code als Funktion - Bitte um Hilfe.

    • Moombas
    • 29. Juli 2022 um 08:30

    ungetestet:

    AutoIt
    ;~ 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:

    AutoIt
    Func _openOptions()
    ;    Run("notepad.exe " & $sOptionsFile);notepad.exe ist unnötig, wenn es das Standardprogramm zum öffnen für ini Dateien ist, dann reicht auch:
        Shellexecute($sOptionsFile)
    EndFunc
  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • Moombas
    • 27. Juli 2022 um 14:57

    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.

    Zitat von Zebra

    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:

    Code
    ;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/

  • HP Bioseinstellung mit WMI ändern

    • Moombas
    • 1. Juli 2022 um 11:37

    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:

    AutoIt
    $objItem.SetBiosSetting($strReturn, '"TPM Activation Policy" "No prompts" "<utf-16/>' & $sPwd2 & '"')
  • HP Bioseinstellung mit WMI ändern

    • Moombas
    • 1. Juli 2022 um 09:10

    Laut folgendem (https://www.autoitscript.com/forum/topic/15…-to-a-wmi-call/) müsste Oscars Variante andersherum sein:

    AutoIt
    ;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.

  • HP Bioseinstellung mit WMI ändern

    • Moombas
    • 30. Juni 2022 um 15:43
    Zitat von hipfzwirgel

    Da war der Aufruf mit

    "TPM Activation Policy", "No prompts", "<utf-16/>"Passwort erfolgreich.

    Wenn das der Fall ist, ändere deinen Code:

    Code
    ;Deins:
    Local $strRequest = '"TPM Activation Policy"' & "," & '"No prompts"' & "," & "<utf-16/>" & $sPwd2
    
    ;Versuch mal:
    Local $strRequest = '"TPM Activation Policy","No prompts","<utf-16/>"' & $sPwd2
  • HP Bioseinstellung mit WMI ändern

    • Moombas
    • 29. Juni 2022 um 15:58

    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.

  • HP Bioseinstellung mit WMI ändern

    • Moombas
    • 29. Juni 2022 um 15:33

    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?

  • HP Bioseinstellung mit WMI ändern

    • Moombas
    • 29. Juni 2022 um 11:23

    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?

    AutoIt
    ;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?

  • Programmfenster immer im Vordergrund und nicht bedienbar

    • Moombas
    • 29. Juni 2022 um 10:05

    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.

  • Editfeld updaten

    • Moombas
    • 28. Juni 2022 um 07:58

    @Musashi : Ich denke das meinte er ;)

    MojoeB : Ist das nicht immer mal wieder so^^ (nicht auf Casi bezogen, sondern allgemein)

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 15:22

    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.

    Zitat von Velted
    AutoIt
    Case $hButton
        $file = FileOpen($Filename, $FO_OVERWRITE)
        If FileWrite($Filename, GuiCtrlRead($IEdit)) Then
            ...
        Endif
    FileClose($file)

    sollte in der Funktion FileWrite() $file benutzen oder (wie oben) die Funktionen FileOpen() und FileClose() weglassen.

    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.

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 14:38

    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^^

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 14:08

    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".

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 13:46

    BTT:

    Mögliche Lösung :

    AutoIt
    ;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
  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 13:23
    Zitat von Velted

    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 Hilfe

    To write in another mode the file must be opened with FileOpen() and the relevant flags.

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 13:07

    Velted Ist Fileread das nicht das gleiche wie Fileopen und Fileclose?

    Zitat von Hilfe

    If 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.

  • Editfeld updaten

    • Moombas
    • 27. Juni 2022 um 12:05

    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™