typetester

  • huhu,

    falls noch jmd. einmal installierte schriften mit denen, die im web gängig sind, vergleichen möchte, könnte dieses skript hilfreich sein.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <Misc.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("TrayMenuMode",1)
    $oIE1 = _IECreateEmbedded()
    $oIE2 = _IECreateEmbedded()
    $Gui = GUICreate("TypeTester", 370, 219, 323, 285)
    $Group1 = GUICtrlCreateGroup("Costum", 0, 0, 185, 137)
    $Combo1 = GUICtrlCreateCombo("", 0, 16, 185, 25)
    $Fonts1 = GUICtrlCreateObj($oIE1, 0, 40, 175, 97)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Web", 184, 0, 185, 137)
    $Combo2 = GUICtrlCreateCombo("", 184, 16, 185, 25)
    $Fonts2 = GUICtrlCreateObj($oIE2, 184, 40, 175, 97)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("Text Costum", 0, 136, 369, 41)
    $Input1 = GUICtrlCreateInput("", 0, 152, 369, 23)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group4 = GUICtrlCreateGroup("Text Web", 0, 176, 369, 41)
    $Input2 = GUICtrlCreateInput("", 0, 192, 369, 23)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_HIDE)

    [/autoit] [autoit][/autoit] [autoit]

    Global $control = 0, $web= "Arial|Comic Sans MS|Courier New|Georgia|Impact|Times New Roman|Trebuchet MS|Verdana"
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo1
    insert_($Input1, $Combo1)
    Case $Combo2
    insert_($Input2, $Combo2)
    EndSwitch
    If $control <> 1 Then
    read_()
    EndIf
    If _IsPressed("1B") Then
    Exit
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func read_()
    Local $key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts', $instances[1000], $wert[1000], $text_combo1 = ""
    TrayTip("Info", "TypeTester wird gestartet. Dies kann einige Zeit in Anspruch nehmen...", 15, 1)
    For $i = 1 to 1000
    $instances[$i] = RegEnumVal($key, $i)
    If @Error <> 0 Then ExitLoop
    Next
    For $j = $i to 999
    _ArrayDelete($instances, $j)
    Next
    _ArrayDelete($instances, 0)
    _ArraySort($instances)
    _ArrayDeleteEx($instances, filter_($instances, "Bold"))
    _ArrayDeleteEx($instances, filter_($instances, "Fett"))
    _ArrayDeleteEx($instances, filter_($instances, "Kursiv"))
    _ArrayDeleteEx($instances, filter_($instances, "Italic"))
    _ArrayDeleteEx($instances, filter_($instances, "Regular"))
    _IENavigate($oIE1, "about:blank")
    For $k = 0 To (UBound($instances)-1)
    $string = StringSplit($instances[$k], "(", 2)
    $string = StringTrimRight($string[0], 1)
    ie_text($string, $oIE1, $string)
    $text_combo1 = $text_combo1 & "|" & $string
    Next
    GUICtrlSetData($Combo1, $text_combo1, "Arial")
    $string = StringSplit($web, "|", 2)
    _IENavigate($oIE2, "about:blank")
    For $k = 0 To (UBound($string)-1)
    ie_text($string[$k], $oIE2, $string[$k])
    Next
    GUICtrlSetData($Combo2, $web, $string[0])
    GUISetState(@SW_SHOW)
    $control = 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func insert_($Input, $Combo)
    GUICtrlSetFont($Input, 12, 400, 0, GUICtrlRead($Combo))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ie_text($msg, $id, $font)
    $src = _IEDocReadHTML($id)
    $src = $src & '<font face="' & $font & '">' & $msg & '</font><br>'
    $go = _IEDocWriteHTML($id, $src)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func filter_($array, $split);_ArraySearchForString UDF; @Error = 1 wenn $array kein String; @Error = 2 wenn $split kein String; #include <Array.au3>; gibt 0 aus, wenn Fehler austreten
    Local $i = 0, $count[UBound($array)]
    For $i = 0 To (UBound($array)-1)
    If Not IsString($array[$i]) Then
    Return 0
    SetError(1)
    ExitLoop
    EndIf
    Next
    If IsString($split) Then
    For $i = 0 To (UBound($array)-1)
    If StringInStr($array[$i], $split) <> 0 Then $count[$i] = 1
    Next
    $count_ = _ArrayFindAll($count, 1)
    Return $count_
    Else
    Return 0
    SetError(2)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ArrayDeleteEx(ByRef $array, $del_array); _ArrayDeleteEx UDF; @Error = 1 wenn $array kein Array; @Error = 2 wenn $del_array kein Array; #include <Array.au3>; gibt 0 aus, wenn Fehler auftreten
    Local $i = 0
    If Not IsArray($array) Then
    Return 0
    SetError(1)
    EndIf
    If Not IsArray($del_array) Then
    Return 0
    SetError(2)
    EndIf
    For $i = (UBound($del_array)-1) To 0 Step -1
    _ArrayDelete($array, $del_array[$i])
    Next
    Return 1
    EndFunc

    [/autoit]

    neue gui

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <Misc.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("TrayMenuMode",1)
    $oIE1 = _IECreateEmbedded()
    $oIE2 = _IECreateEmbedded()
    $Gui = GUICreate("TypeTester", 626, 478, 285, 157)
    ;GUISetBkColor(0xFFFFFF)
    $Group1 = GUICtrlCreateGroup("Costum", 0, 0, 625, 237)
    $Combo1 = GUICtrlCreateCombo("Combo1", 0, 16, 145, 25)
    $Edit1 = GUICtrlCreateEdit("Ich bin nur ein Beispieltext, damit Zeichen verglichen werden können.", 175, 16, 200, 125, BitOR($WS_VSCROLL, $ES_WANTRETURN, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 12)
    $Edit3 = GUICtrlCreateEdit("", 392, 16, 225, 215, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    $Fonts1 = GUICtrlCreateObj($oIE1, 0, 40, 150, 185)
    $Input1 = GUICtrlCreateInput("12", 171, 178, 45, 32)
    GUICtrlSetFont(-1, 14, 400, 0, "Comic Sans MS")
    $Group3 = GUICtrlCreateGroup("", 233, 173, 126, 38)
    $Radio1 = GUICtrlCreateRadio("Normal", 241, 189, 57, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("Kursiv", 302, 189, 49, 17)
    ;$Radio3 = GUICtrlCreateRadio("Fett", 344, 189, 37, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Web", 0, 240, 625, 237)
    $Combo2 = GUICtrlCreateCombo("Combo2", 0, 256, 145, 25)
    $Edit2 = GUICtrlCreateEdit("Ich bin nur ein Beispieltext, damit Zeichen verglichen werden können.", 175, 256, 200, 125, BitOR($WS_VSCROLL, $ES_WANTRETURN, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 12)
    $Edit4 = GUICtrlCreateEdit("", 392, 256, 225, 215, BitOR($WS_VSCROLL, $ES_WANTRETURN))
    $Fonts2 = GUICtrlCreateObj($oIE2, 0, 280, 150, 185)
    $Input2 = GUICtrlCreateInput("12", 171, 418, 45, 32)
    GUICtrlSetFont(-1, 14, 400, 0, "Comic Sans MS")
    $Group4 = GUICtrlCreateGroup("", 233, 413, 126, 38)
    $Radio3 = GUICtrlCreateRadio("Normal", 241, 429, 57, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio4 = GUICtrlCreateRadio("Kursiv", 302, 429, 49, 17)
    ;$Radio6 = GUICtrlCreateRadio("Fett", 344, 429, 37, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_HIDE)

    [/autoit] [autoit][/autoit] [autoit]

    Global $control = 0, $web= "Arial|Comic Sans MS|Courier New|Georgia|Impact|Times New Roman|Trebuchet MS|Verdana"
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo1
    If GUICtrlRead($Radio1) = 1 Then
    $attr = 0
    Else
    $attr = 2
    EndIf
    insert_($Edit1, $Combo1, $attr, $Input1)
    insert_($Edit3, $Combo1, $attr, $Input1)
    Case $Combo2
    If GUICtrlRead($Radio3) = 1 Then
    $attr_ = 0
    Else
    $attr_ = 2
    EndIf
    insert_($Edit2, $Combo2, $attr_, $Input2)
    insert_($Edit4, $Combo2, $attr_, $Input2)
    Case $Input1
    If GUICtrlRead($Radio1) = 1 Then
    $attr = 0
    Else
    $attr = 2
    EndIf
    insert_($Edit1, $Combo1, $attr, $Input1)
    insert_($Edit3, $Combo1, $attr, $Input1)
    Case $Input2
    If GUICtrlRead($Radio3) = 1 Then
    $attr_ = 0
    Else
    $attr_ = 2
    EndIf
    insert_($Edit2, $Combo2, $attr_, $Input2)
    insert_($Edit4, $Combo2, $attr_, $Input2)
    Case $Radio1
    insert_($Edit1, $Combo1, 0, $Input1)
    insert_($Edit3, $Combo1, 0, $Input1)
    Case $Radio2
    insert_($Edit1, $Combo1, 2, $Input1)
    insert_($Edit3, $Combo1, 2, $Input1)
    Case $Radio3
    insert_($Edit2, $Combo2, 0, $Input2)
    insert_($Edit4, $Combo2, 0, $Input2)
    Case $Radio4
    insert_($Edit2, $Combo2, 2, $Input2)
    insert_($Edit4, $Combo2, 2, $Input2)
    EndSwitch
    If $control <> 1 Then
    read_()
    EndIf
    If _IsPressed("1B") Then
    Exit
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func read_()
    Local $key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts', $instances[1000], $wert[1000], $text_combo1 = ""
    TrayTip("Info", "TypeTester wird gestartet. Dies kann einige Zeit in Anspruch nehmen...", 15, 1)
    For $i = 1 to 1000
    $instances[$i] = RegEnumVal($key, $i)
    If @Error <> 0 Then ExitLoop
    Next
    For $j = $i to 999
    _ArrayDelete($instances, $j)
    Next
    _ArrayDelete($instances, 0)
    _ArraySort($instances)
    _ArrayDeleteEx($instances, filter_($instances, "Bold"))
    _ArrayDeleteEx($instances, filter_($instances, "Fett"))
    _ArrayDeleteEx($instances, filter_($instances, "Kursiv"))
    _ArrayDeleteEx($instances, filter_($instances, "Italic"))
    _ArrayDeleteEx($instances, filter_($instances, "Regular"))
    _IENavigate($oIE1, "about:blank")
    For $k = 0 To (UBound($instances)-1)
    $string = StringSplit($instances[$k], "(", 2)
    $string = StringTrimRight($string[0], 1)
    ie_text($string, $oIE1, $string)
    $text_combo1 = $text_combo1 & "|" & $string
    Next
    GUICtrlSetData($Combo1, $text_combo1, "Arial")
    $string = StringSplit($web, "|", 2)
    _IENavigate($oIE2, "about:blank")
    For $k = 0 To (UBound($string)-1)
    ie_text($string[$k], $oIE2, $string[$k])
    Next
    GUICtrlSetData($Combo2, $web, $string[0])
    GUISetState(@SW_SHOW)
    $control = 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func insert_($Edit, $Combo, $attr, $Input)
    If Number(GUICtrlRead($Input)) > 0 Then
    GUICtrlSetFont($Edit, Int(Number(GUICtrlRead($Input))), 400, $attr, GUICtrlRead($Combo))
    Else
    GUICtrlSetFont($Edit, 12, 400, $attr, GUICtrlRead($Combo))
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ie_text($msg, $id, $font)
    $src = _IEDocReadHTML($id)
    $src = $src & '<font face="' & $font & '">' & $msg & '</font><br>'
    $go = _IEDocWriteHTML($id, $src)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func filter_($array, $split);_ArraySearchForString UDF; @Error = 1 wenn $array kein String; @Error = 2 wenn $split kein String; #include <Array.au3>; gibt 0 aus, wenn Fehler austreten
    Local $i = 0, $count[UBound($array)]
    For $i = 0 To (UBound($array)-1)
    If Not IsString($array[$i]) Then
    Return 0
    SetError(1)
    ExitLoop
    EndIf
    Next
    If IsString($split) Then
    For $i = 0 To (UBound($array)-1)
    If StringInStr($array[$i], $split) <> 0 Then $count[$i] = 1
    Next
    $count_ = _ArrayFindAll($count, 1)
    Return $count_
    Else
    Return 0
    SetError(2)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ArrayDeleteEx(ByRef $array, $del_array); _ArrayDeleteEx UDF; @Error = 1 wenn $array kein Array; @Error = 2 wenn $del_array kein Array; #include <Array.au3>; gibt 0 aus, wenn Fehler auftreten
    Local $i = 0
    If Not IsArray($array) Then
    Return 0
    SetError(1)
    EndIf
    If Not IsArray($del_array) Then
    Return 0
    SetError(2)
    EndIf
    For $i = (UBound($del_array)-1) To 0 Step -1
    _ArrayDelete($array, $del_array[$i])
    Next
    Return 1
    EndFunc

    [/autoit]

    das eintragen der daten könnte schneller sein.

    viel spaß damit, falls es mal jmd benötigt. :p

    update:
    filter eingebaut
    gui wird sichtbar, nachdem alle fonts einegtragen sind (tooltip weist darauf hin)
    flimmern müsste behoben sein
    neue gui hinzugefügt
    schriftattribute bei neuer gui gesetzt

    6 Mal editiert, zuletzt von bocky3 (12. März 2010 um 00:58)

  • Hallo.
    Also bei mir funzt dein Skript nicht, es ist vergubbt, flimmert und es lässt sich nichts auswählen.
    Es wäre also schön, wenn du dein Skript erstmal lauffähig machen würdest, und dann erst postest.
    Denn ich denke das dieses Skript gut werden kann.
    Auch von der Idee her ist es gut.
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Hallo PrideRage

    Hallo.
    Also bei mir funzt dein Skript nicht, es ist vergubbt, flimmert und es lässt sich nichts auswählen.

    Bis auf das Flimmern muss ich dir widersprechen, es dauert nur leider seine Zeit bis alle Fonts eingetragen sind. Danach klappt alles wie es soll

    @bocky du könntest z.B. die anderen Controls disablen bis alles eingelesen ist oder alles mit einem "Bitte warten"-Label überdecken damit wäre das Updaten des IE-Embedded nicht zu sehen,

    mfg (Auto)Bert

  • das flimmern ist bei mir kaum sichtbar.
    ich werde mir dagegen die nächsten tage etwas überlegen.

    edit: flimmern behoben ... hatte iwie keine ruhe deswegen

    Einmal editiert, zuletzt von bocky3 (10. März 2010 um 17:59)