AutoIt – vložit jako prostý text

Č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

Posted

in

by

Tags:

Comments

Napsat komentář

[zoom]