Trialstyle Posted September 4, 2019 Share Posted September 4, 2019 Hi, I am currently working on a homepage where I have to translate a lot (often the same words). I want to make a tool which pastes the translated words after I marked it. I will make a variable for every translation. For example: $baum = "tree"; (baum is german & means tree). The Script should: 1) Copy the marked Text (I just marked "baum") 2) Send the variable which is called as the copied text ("tree") Like this: Func _translate() Send("^c"); Send($(ClipGet())) EndFunc Something like that. I want the variable name in the second Send function to be whatever is on the clipboard. Link to comment Share on other sites More sharing options...
Xenobiologist Posted September 4, 2019 Share Posted September 4, 2019 Something like this? Mark Haus or Uhr and then hit ALT+SHIFT+d. expandcollapse popup$myDict = _ObjDictCreate(1) _ObjDictAdd($myDict, 'Baum', 'tree') _ObjDictAdd($myDict, 'Uhr', 'clock') _ObjDictAdd($myDict, 'Haus', 'house') HotKeySet("+!d", "_translate") ; Shift-Alt-d While 1 Sleep(100) WEnd Func _translate() Send("^c"); ConsoleWrite(ClipGet() & @CRLF) Send(_ObjDictGetValue($myDict, ClipGet())) EndFunc #cs ============================= OBJEKT 'Scripting.Dictionary' ======================================= *** Funktionssammlung *** _ObjDictCreate(Modus) Erzeugt ein Dictionary Objekt im Binär- (default) oder Textmodus Gibt das Handle des Objektes zurück _ObjDictAdd(Objekt, Schlüssel, Wert) Fügt einem Dictionary Objekt ein Schlüssel-Wert Paar hinzu _ObjDictGetValue(Objekt, Schlüssel) Liest den Wert für einen Schlüssel aus _ObjDictSetValue(Objekt, Schlüssel) Setzt einen neuen Wert für einen Schlüssel _ObjDictCount(Objekt) Gibt die Anzahl der Schlüssel-Wert Paare zurück _ObjDictSearch(Objekt, Schlüssel) Prüft ob der Schlüssel existiert, liefert 'TRUE' wenn gefunden _ObjDictDeleteKey(Objekt, Schlüssel) Löscht den angegebenen Schlüssel (und dessen Wert) Wird statt eines Schlüsselnamens '' übergeben, werden alle Schlüssel gelöscht (Standard) _ObjDictList(Objekt) Eine GUI mit einem ListView zeigt alle Schlüssel-Wert Paare _IniReadSectionToObjDict(Objekt, INI-Pfad, Sektion) Liest die angegebene INI-Sektion in das Objekt Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück _IniWriteSectionFromObjDict(Objekt, INI-Pfad, Sektion) Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Sektion der INI-Datei Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück _FileReadToObjDict(Objekt, TextDatei-Pfad, Seperator) Liest aus einer Textdatei alle Schlüssel-Wert Paare zeilenweise ein (1 Paar/Zeile) Standard-Seperator ist '|', kann hier angepaßt werden Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück _FileWriteFromObjDict(Objekt, TextDatei-Pfad, Seperator, Overwrite) Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Datei (1 Paar/Zeile). Mit Overwrite='TRUE' (Standard) wird die angegebene Datei, falls sie bereits existiert, überschrieben. Mit 'FALSE' wird an eine bestehende Datei angehängt. Standard-Seperator ist '|', kann hier angepaßt werden. Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück Autor: BugFix ( bugfix@autoit.de ) =================================================================================================== #ce #include <GuiConstants.au3> #include <GuiListView.au3> ;================================================================================================== ; Parameter: $MODE ; 0 Binär (default) ; 1 Text ; Return: Objekt Handle ;================================================================================================== Func _ObjDictCreate($MODE=0) $oDICT = ObjCreate('Scripting.Dictionary') If $MODE <> 0 Then $oDICT.CompareMode = 1 Return $oDICT EndFunc ;==>_ObjDictCreate ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $KEY - Schlüssel ; $VALUE - Wert ; Return: Erfolg: 0 ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 2 Schlüssel ohne Inhalt übergeben ; 3 Wert hat keinen Inhalt ; 4 Schlüssel bereits vorhanden ;================================================================================================== Func _ObjDictAdd(ByRef $oDICT, $KEY, $VALUE) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf $KEY = '' Then SetError(2) Return -1 ElseIf $VALUE = '' Then SetError(3) Return -1 ElseIf $oDICT.Exists($KEY) Then SetError(4) Return -1 EndIf $oDICT.Add($KEY, $VALUE) Return 0 EndFunc ;==>_ObjDictAdd ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $KEY - Schlüssel ; Return: Erfolg: Wert des Schlüssels ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 2 Schlüssel ohne Inhalt übergeben ; 5 Schlüssel nicht vorhanden ;================================================================================================== Func _ObjDictGetValue(ByRef $oDICT, $KEY) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf $KEY = '' Then SetError(2) Return -1 ElseIf Not $oDICT.Exists($KEY) Then SetError(5) Return -1 EndIf Return $oDICT.Item($KEY) EndFunc ;==>_ObjDictGetValue ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $KEY - Schlüssel ; $VALUE - Wert ; Return: Erfolg: 0 ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 2 Schlüssel ohne Inhalt übergeben ; 3 Wert hat keinen Inhalt ; 5 Schlüssel nicht vorhanden ;================================================================================================== Func _ObjDictSetValue(ByRef $oDICT, $KEY, $VALUE) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf $KEY = '' Then SetError(2) Return -1 ElseIf $VALUE = '' Then SetError(3) Return -1 ElseIf Not $oDICT.Exists($KEY) Then SetError(5) Return -1 EndIf $oDICT.Item($KEY) = $VALUE Return 0 EndFunc ;==>_ObjDictSetValue ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; Return: Erfolg: Anzahl der Schlüssel-Wert Paare ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ;================================================================================================== Func _ObjDictCount(ByRef $oDICT) If Not IsObj($oDICT) Then SetError(1) Return -1 EndIf Return $oDICT.Count EndFunc ;==>_ObjDictCount ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $KEY - Schlüssel ; Return: Erfolg: TRUE Schlüssel vorhanden ; FALSE Schlüssel nicht vorhanden ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 2 Schlüssel ohne Inhalt übergeben ;================================================================================================== Func _ObjDictSearch(ByRef $oDICT, $KEY) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf $KEY = '' Then SetError(2) Return -1 ElseIf Not $oDICT.Exists($KEY) Then Return False Else Return True EndIf EndFunc ;==>_ObjDictSearch ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $KEY - Schlüssel (default='') ; mit $KEY = '' werden alle Schlüssel gelöscht ; Return: Erfolg: 0 ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ;================================================================================================== Func _ObjDictDeleteKey(ByRef $oDICT, $KEY='') If Not IsObj($oDICT) Then SetError(1) Return -1 EndIf If $KEY = '' Then $oDICT.RemoveAll Return 0 ElseIf Not $oDICT.Exists($KEY) Then SetError(5) Return -1 EndIf $oDICT.Remove($KEY) Return 0 EndFunc ;==>_ObjDictDeleteKey ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $TITLE - Fenstertitel (optional) ; Return: Erfolg: GUI mit ListView ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; Requirements: #include <GuiConstants.au3> ; #include <GuiListView.au3> ;================================================================================================== Func _ObjDictList(ByRef $oDICT, $TITLE='Elemente: Objekt Dictionary') If Not IsObj($oDICT) Then SetError(1) Return -1 EndIf Local $count = $oDICT.Count Local $SaveMode = Opt("GUIOnEventMode",0), $ListGUI, $oDictLV, $btnClose, $msg $ListGUI = GUICreate($TITLE, 600, 400, (@DesktopWidth - 600)/2, (@DesktopHeight - 400)/2) $btnClose = GUICtrlCreateButton('&Ende', 40, 360, 70, 22) GUICtrlSetResizing($btnClose, BitOR($GUI_DockRight, $GUI_DockBottom, $GUI_DockSize)) GUICtrlDelete($oDictLV) $oDictLV = GUICtrlCreateListView('Schlüssel|Wert', 10, 10, 580, 340, BitOR($LVS_SHOWSELALWAYS, _ $LVS_EDITLABELS), BitOR($LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP, $LVS_EX_FULLROWSELECT, $LVS_EX_REGIONAL)) If $count > 0 Then Local $strKey, $colKeys = $oDICT.Keys For $strKey In $colKeys GUICtrlCreateListViewItem($strKey & '|' & $oDICT.Item($strKey), $oDictLV) Next Else WinSetTitle($ListGUI, '', 'Das Objekt Dictionary enthält keine Elemente!') EndIf GUISetState(@SW_SHOW, $ListGUI) While 1 $msg = GUIGetMsg(1) If $msg[1] = $ListGUI And _ ($msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $btnClose) Then ExitLoop WEnd GUIDelete($ListGUI) Opt("GUIOnEventMode",$SaveMode) EndFunc ;==>ObjDictList ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $PathINI - Pfad der INI-Datei ; $SECTION - Sektion die gelesen werden soll ; Return: Erfolg: Anzahl der eingelesenen Schlüssel-Wert Paare ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 6 INI-Pfad nicht vorhanden ; 7 kein Sektionsname ; 8 INI-Sektion konnte nicht gelesen werden oder leer ;================================================================================================== Func _IniReadSectionToObjDict(ByRef $oDICT, $PathINI, $SECTION) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf Not FileExists($PathINI) Then SetError(6) Return -1 ElseIf $SECTION = '' Then SetError(7) Return -1 EndIf Local $arSECTION = IniReadSection($PathINI, $SECTION) If Not IsArray($arSECTION) Then SetError(8) Return -1 EndIf For $i = 1 To $arSECTION[0][0] $oDICT.Add($arSECTION[$i][0], $arSECTION[$i][1]) Next Return $arSECTION[0][0] EndFunc ;==>_IniReadSectionToObjDict ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $PathINI - Pfad der INI-Datei ; $SECTION - Sektion die gelesen werden soll ; Return: Erfolg: Anzahl der geschriebenen Schlüssel-Wert Paare ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 7 kein Sektionsname ; 9 INI-Sektion konnte nicht geschrieben werden ;================================================================================================== Func _IniWriteSectionFromObjDict(ByRef $oDICT, $PathINI, $SECTION) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf $SECTION = '' Then SetError(7) Return -1 EndIf Local $arSECTION[$oDICT.Count][2], $i = 0 Local $strKey, $colKeys = $oDICT.Keys For $strKey In $colKeys $arSECTION[$i][0] = $strKey $arSECTION[$i][1] = $oDICT.Item($strKey) $i += 1 Next If IniWriteSection($PathINI, $SECTION, $arSECTION, 0) = 1 Then Return $oDICT.Count Else SetError(9) Return -1 EndIf EndFunc ;==>_IniWriteSectionFromObjDict ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $PathFile - Pfad der Datei ; $SEPERATOR - Trennzeichen zwischen Wert u. Schlüssel, Standard: '|' ; Return: Erfolg: Anzahl der eingelesenen Schlüssel-Wert Paare ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 6 Datei-Pfad nicht vorhanden ; 7 Leerstring als Seperator übergeben ; 8 Datei konnte nicht gelesen werden ;================================================================================================== Func _FileReadToObjDict(ByRef $oDICT, $PathFile, $SEPERATOR='|') If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf Not FileExists($PathFile) Then SetError(6) Return -1 ElseIf $SEPERATOR = '' Then SetError(7) Return -1 EndIf Local $fh = FileOpen($PathFile, 0), $line Local $val If $fh = -1 Then SetError(8) Return -1 EndIf While 1 $line = FileReadLine($fh) If @error = -1 Then ExitLoop $val = StringSplit($line, $SEPERATOR) If $val[0] > 1 Then $oDICT.Add($val[1], $val[2]) EndIf Wend FileClose($fh) Return $oDICT.Count EndFunc ;==>_FileReadToObjDict ;================================================================================================== ; Parameter: $oDICT - Handle des Dictionary-Objektes ; $PathFile - Pfad der Datei ; $SEPERATOR - Trennzeichen zwischen Wert u. Schlüssel, Standard: '|' ; $OVERWRITE - Falls Datei existiert, wird sie überschrieben (Standard). ; Mit 'FALSE' wird an bestehende Datei angehängt. ; Return: Erfolg: Anzahl der geschriebenen Schlüssel-Wert Paare ; Fehler: -1 ; Fehlerwert: 1 Objekt existiert nicht ; 7 Leerstring als Seperator übergeben ; 8 Datei konnte nicht geschrieben werden ;================================================================================================== Func _FileWriteFromObjDict(ByRef $oDICT, $PathFile, $SEPERATOR='|', $OVERWRITE=True) If Not IsObj($oDICT) Then SetError(1) Return -1 ElseIf $SEPERATOR = '' Then SetError(7) Return -1 EndIf If $OVERWRITE Then Local $fh = FileOpen($PathFile, 34) Else Local $fh = FileOpen($PathFile, 33) EndIf Local $strKey, $colKeys = $oDICT.Keys For $strKey In $colKeys FileWriteLine($fh, $strKey & $SEPERATOR & $oDICT.Item($strKey)) If @error Then SetError(8) Return -1 EndIf Next FileClose($fh) Return $oDICT.Count EndFunc ;==>_FileWriteFromObjDict Trialstyle 1 Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
Xenobiologist Posted September 4, 2019 Share Posted September 4, 2019 Maybe this is what you asked. $baum = 'tree' _translate() Func _translate() Send("^c"); Send(Eval(ClipGet())) EndFunc Werty and Trialstyle 2 Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
Trialstyle Posted September 4, 2019 Author Share Posted September 4, 2019 12 minutes ago, Xenobiologist said: Maybe this is what you asked. $baum = 'tree' _translate() Func _translate() Send("^c"); Send(Eval(ClipGet())) EndFunc Works great, thanks a lot! Link to comment Share on other sites More sharing options...
Xenobiologist Posted September 4, 2019 Share Posted September 4, 2019 Fine, but what about using an array or dictionary object instead of many many single variables? Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now