Так что я сыт по горло этим раздражением и обходным путём.
Там две части:
- Крошечная утилита, которую я написал, чтобы сохранить изображение буфера обмена в .png файл
- Скрипт AutoHotKey Скрипт
Скрипт AutoHotKey проверяет, активен ли Photoshop в настоящее время, и если да, то он перехватывает комбинацию клавиш Ctrl
+V
, а затем запускает утилиту.
Если утилита сохранила изображение на %TEMP%\clip.png
, комбинация клавиш Shift
+Ctrl
+F12
отправляется в Photoshop, который я привязал к Action'у Photoshop, чтобы поместить файл clip.png
в текущий открытый документ.
Если утилита не сохранила изображение, в Photoshop отправляется стандартная комбинация клавиш Ctrl
+V
и выполняется стандартная вставка.
Весь исходный код доступен здесь: https://github.com/SilverEzhik/ClipboardToPNG , а утилиту можно скачать здесь: https://github.com/SilverEzhik/ClipboardToPNG/releases
Чтобы создать Action Photoshop, просто сделайте новое действие с комбинацией клавиш, отображенной в Shift+Ctrl+F12 (или измените комбинацию в файле скрипта), а затем во время записи перейдите в File
> Place Embedded...
и вставьте %TEMP%\clip.png
в поле имени файла.
Ниже приведен исходный код скрипта AHK - если вы раньше не использовали AutoHotKey, установите его, затем сохраните код в файл filename.ahk
в том же каталоге, что и утилита ClipboardToPNG.exe, а затем просто запустите его.
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