Więc miałem dość tej irytacji i zrobiłem obejście.
Składa się ono z dwóch części:
- Małe narzędzie, które napisałem, aby zapisać obraz ze schowka do pliku .png
- Skrypt AutoHotKey
Skrypt AutoHotKey sprawdza, czy Photoshop jest aktualnie aktywny, a jeśli tak, to przechwytuje kombinację klawiszy Ctrl
+V
, a następnie uruchamia narzędzie.
Jeśli narzędzie zapisało obraz do pliku %TEMP%\clip.png
, kombinacja klawiszy Shift
+Ctrl
+F12
jest wysyłana do Photoshopa, którą zmapowałem do akcji Photoshopa, aby umieścić plik clip.png
w aktualnie otwartym dokumencie.
Jeśli narzędzie nie zapisało obrazu, standardowa kombinacja klawiszy Ctrl
+V
jest wysyłana do Photoshopa i wykonywana jest standardowa operacja wklejania.
Cały kod źródłowy jest dostępny tutaj: https://github.com/SilverEzhik/ClipboardToPNG , a narzędzie można pobrać tutaj: https://github.com/SilverEzhik/ClipboardToPNG/releases
Aby utworzyć akcję Photoshopa, wystarczy utworzyć nową akcję z kombinacją klawiszy odwzorowaną na Shift+Ctrl+F12 (lub zmienić kombinację w pliku skryptu), a następnie podczas nagrywania przejść do File
i wkleić Place Embedded...
w polu nazwy pliku.
Kod źródłowy skryptu AHK znajduje się poniżej - jeśli nie korzystałeś wcześniej z programu AutoHotKey, zainstaluj go, a następnie zapisz kod w pliku %TEMP%\clip.png
w tym samym katalogu, w którym znajduje się program ClipboardToPNG.exe, po czym po prostu go uruchom.
DoPhotoshopPaste() {
RunWait, %A_ScriptDir%\ClipboardToPNG.exe ; run utility, wait for it to complete
if (ErrorLevel == 0) { ; if error code is 0
SendEvent, +^{F12} ; press Shift+Ctrl+F12 to run the designated Photoshop action to paste
}
else {
SendEvent, ^v ; else, just perform a standard paste.
}
}
#IfWinActive ahk_exe Photoshop.exe ; only activate this hotkey when photoshop is active
^v::DoPhotoshopPaste()
#IfWinActive