Übersetzungstool

  • Hallo,

    leider konnte mir keiner so richtig weiterhelfen.
    Ich habe mir also Mühe gegeben und das ist rausgekommen:

    Übersetzungstool welches "LEO.ORG" abfragt ohne den Browser zu öffnen.
    Anschließened wird ein Editfenster geöffnet wo mann ggf. ein Wort kopieren kann.
    Das Fenster kann man mit "ESC" verlassen und sofort weitersuchen.
    Zweimal "ESC" beendet das Tool vollständig.

    Viel Spaß damit

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <process.au3>
    #include <INet.au3>
    #include <String.au3>
    #include <misc.au3>

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

    Opt ("TrayIconDebug", 1)
    dim $Form2, $Edit1 , $suche , $file2, $merker=0
    $ziel = @TempDir & "\leotest.html"
    $ziel2 = @TempDir & "\leotest.txt"
    $ziel3 = @TempDir & "\leotest2.txt"

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

    FileInstall("C:\html2txt\html2txt.exe", @TempDir & "\"); Quelle: http://www.u32.de/download/html2t32.zip

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

    ;GUI
    $Form1 = GUICreate("Übersetzungs Tool", 402, 34, 10, 10)
    $Input1 = GUICtrlCreateInput("Wort zum Übersetzen?", 8, 8, 305, 21)
    $Button1 = GUICtrlCreateButton("Übersetze", 320, 8, 75, 25, 0)
    GUISetState(@SW_SHOW)

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

    ;Programm
    While 1


    ; HotKeys
    If WinActive("Übersetzungs Tool") Then
    HotKeySet("{ESC}","EXITFUNC")
    if _IsPressed("0D") Then uebersetze(); Übersetzen - einfach Eingabe mit Enter abschließen

    Else
    HotKeySet("{ESC}"); Hotkey deaktivieren


    EndIf

    If WinActive("Übersetzungs Tool - Ergebnis") Then
    HotKeySet("{ESC}","EXITFORM2")

    Else
    HotKeySet("{ESC}"); Hotkey deaktivieren

    EndIf

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



    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    uebersetze()

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

    EndSwitch
    WEnd

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

    Func uebersetze()
    $merker=0
    $Form2 = GUICreate("Übersetzungs Tool - Ergebnis", 402,750, 10, 45)
    $Edit1 = GUICtrlCreateEdit("", 8, 10, 385, 700)
    $suche = GUICtrlRead($Input1)
    GUISetState(@SW_SHOW)
    $quelle = "http://pda.leo.org/ende?search=" & $suche
    InetGet($quelle, $ziel)

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

    $befehl=@TempDir & "\html2txt.exe -w " & $ziel & " " & $ziel2; HTML Code entfernen
    _RunDOS($befehl)
    $file = FileOpen($ziel2, 0)
    $file2 = Fileopen($ziel3, 2) ;File löschen und neu erstellen

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

    While 1
    $line = FileReadLine($file);Ergebnisfile bearbeiten
    If @error = -1 Then ExitLoop ;EOF
    if StringInStr($line, "Suchrichtung") Then $merker=1;überflüssige vorangestellte Infos entfernen


    if StringInStr($line, "Link zu") Then ExitLoop ;überflüssige nachfolgende Infos entfernen
    $line = StringStripWS($line,4); Leerzeichen entfernen
    if $merker = "1" Then FileWriteLine($ziel3,$line );File erst schreiben wenn "Suchrichtung" im String auftaucht
    Wend

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

    $ergebnis=FileRead($ziel3, 10000)
    GUICtrlSetData($Edit1, $ergebnis)

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

    EndFunc

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

    Func exitfunc()
    FileDelete(@TempDir & "\html2txt.exe")
    Exit 0
    EndFunc

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

    Func EXITFORM2()
    GUIDelete($Form2)
    ControlFocus("","",$Button1);ok Button selektieren falls vorher mit Enter abgeschlossen wurde
    send("+{TAB}"); springt zum Eingabefeld zurück und markiert dies (erspart das löschen des Feldes)

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

    EndFunc

    [/autoit]

    Wass ich nicht lösen konnte:

    Wort unter dem Cursor mit Hotkey (Shift + Mittl. Maustaste) kopieren und sofort Übersetzen.

    Wenn da jemand Anregungen hat bitte informiert mich.

    Gruß
    Wolke

    3 Mal editiert, zuletzt von wolkenloser (6. Februar 2007 um 21:06)

  • Beim Fileinstall hat sich ein Fehler eingeschlichen,

    es fehlt der abschließende Schrägstrich hinter @TEMPDIR.

    Ich wede es mal korrigieren, auch wenn sich scheinbar keiner das ganze mal angesehen hat....was noch nicht ist kann ja noch werden :)


    Gruß
    Wolke

    Gruß
    Wolke