Často kopíruji text z webu, wordu a potřebuji ho vložit jako prostý text, bez formátování.
Taky často potřebuji napsat aktuální datum ve formátu RRRR-DD-MM HHMM.
Napsal jsem si na to velmi jednoduchou utilitku v AutoIt, už ji využívám několik let.
Takto vypadá „prográmek“ který používám.
První část je v podstatě základní informace a nastavuje ikonku v liště. Klidně se může vynechat.
;Prográmek po spuštění sedí v liště vpravo dole a čeká na zmáčknutí kláves.
;Po zmáčknutí CTRL+SHIFT+V - vloží text ze schránky s odstraněným formátováním
;Po zmáčknutí CTRL+SHIFT+T - vloží aktuální datum ve formátu YYYY-MM-DD HHMM
;By pankostka.cz
;Nastavuje popis na ikonce v tray
#include <TrayConstants.au3>
TraySetToolTip("CTRL+SHIFT+V = Plain text" & @LF & "CTRL+SHIFT+T = Datum YYYY-MM-DD-HHMM")
TraySetIcon("shell32.dll", 243)
;Jaké ikonky je možno nastavit je třeba zde: https://www.sysmiks.com/windows10/icon-number-of-icon-list-shell32-dll-imageres-dll/
Dále se nastavují klávesy, na které program reaguje. Zde je to CTRL+SHIFT+V nebo CTRL+SHIFT+T. Po zmáčnutí klávesy se volá funkce, které je níže.
;Seznam použitelných kláves: https://www.autoitscript.com/autoit3/docs/functions/Send.htm
HotKeySet("^+v", "FceVlozPlainText") ;CTRL+SHIFT+V - vloží text ze schránky s odstraněným formátováním
HotKeySet("^+t", "FceVlozYYYYDDMM") ;CTRL+SHIFT+T - vloží aktuální datum ve formátu YYYY-MM-DD HHMM.
Další část jen říká, že se prográmek nemá ukončit, a má prostě pořád běžet.
;Čekám na kombinaci kláves a běžím si na pozadí
Sleep(2000000000) ;čekám několik dní :-)
Exit 0
Funkce která mění obsah stránky na plain text (odstraní formátování) a CTRL+V ho vloží. Jediné složitější je volání funkce _SendEx která je níže.
Func FceVlozPlainText()
; to co uživatel načetl do schránky pomocí CTRL+C si načtu do proměnné.
$Clipboard = ClipGet()
;a obsah schránky zaměním - odstraním formátování. Zase z té textové proměnné vložím do schránky
ClipPut ( $Clipboard )
;zde se dá dělat i více věcí třeba ve zkopírovaném textu nahradit nějaké řetězce apod.
;předchozím jsem zaměnil obsah schránky. Takže nyní prostě pošlu CTRL+V (vložit ze schránky)
_SendEx("^v")
EndFunc
Funkce pro vložení aktuálního datumu je také vcelku triviální. Udělat jinou funkci která vkládá jiný text, nebo datum v jiném formátu je otázka chvilky.
;Funkce vloží aktuální datum ve formátu YYYY-MM-DD HHMM
Func FceVlozYYYYDDMM ()
;Local $Text = @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "" & @MIN & ''
Local $Text = @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "" & @MIN & ''
;Send("Today's time/date is")
_SendEx($Text)
EndFunc
Poslední funkce je v podstatě systémová, zabraňuje, aby zůstaly stačené klávesy SHIFT, CTRL, ALT nebo WINDOWS. Přebral jsem odsud.
#include "misc.au3"
Func _SendEx($ss,$warn = "")
;místo Send("^v") se použije _SendEx("^v")
;Send the string $ss after the Shift Alt and Ctrl keys are released. Optionally give a warning after 1 sec if any of those keys still down.
;Requires misc.au3 to be included in the script for the _IsPressed function.
; links
;http://www.autoitscript.com/forum/topic/73645-why-key-not-releases/ -- přebráno odsud
;http://www.autoitscript.com/autoit3/docs/libfunctions/_IsPressed.htm --seznam kláves
Local $iT = TimerInit()
While _IsPressed("10") Or _IsPressed("11") Or _IsPressed("12") Or _IsPressed("5B")
if $warn <> "" and TimerDiff($iT) > 1000 Then
MsgBox(262144, "Warning", $warn)
EndIf
sleep(50)
WEnd
Send($ss)
EndFunc
Napsat komentář
Pro přidávání komentářů se musíte nejdříve přihlásit.