Сделайте скриншот окна на Mac, не используя пробел, а затем щелкнув мышью

Я хочу сделать скриншот окна на Mac.

В настоящее время я использую shift+ cmd+ 4, затем spaceщелкаю мышью.

Процесс очень неудобный, вы должны делать это в таком порядке, иначе вам придется повторить это снова..

Мне нужно простое сочетание клавиш, чтобы делать то, что shift+ cmd+ 3.

Я хочу использовать как простой ярлык для создания снимка экрана окна.

Является ли это возможным?

Ответы (3)

Вот мое решение, которое я назвал Window-Snapshot , основанное на очень простом AppleScript , либо сохраненном как приложение из редактора сценариев , либо используемом как часть службы Automator с назначенным сочетанием клавиш . Хотя в качестве службы он использует стороннюю утилиту, используемую в приложении Window-Snapshot AppleScript с одним * щелчком мыши, подробно описанным ниже.

  • Примечание. Automator , используемый в качестве службы , сам по себе является хорошей функцией, однако при использовании с глобальным сочетанием клавиш это может быть проблематично, если только используемое сочетание клавиш не используется и не используется в другом месте в OS X или любых открытых приложениях , окно которых предстоит захватить. Вот почему я включил использование AppleScript как в качестве приложения AppleScript , так и в качестве службы Automator с назначенным сочетанием клавиш . Хотя некоторые сочетания клавиш, назначенные службе Automatorбудет работать с большинством окон приложений, тем не менее, это может не работать с некоторыми, даже если это сочетание клавиш не назначено этому приложению захватываемого окна. В таких случаях приложение Window-Snapshot AppleScript можно использовать поверх службы Automator .

Как приложение AppleScript

Это может быть либо решение с двумя щелчками мыши ( по умолчанию ), либо решение с одним* щелчком мыши .

  • * Примечание. В качестве решения одним* щелчком мыши требуется использование сторонней утилиты под названием CLICLICK . Насколько я знаю, в AppleScript нет прямого события мыши/нажатия левой кнопки мыши и, следовательно, использование либо сторонней утилиты, либо иного использования дополнительного кода, чем то, что уже представлено для использования методов, использующих другие ресурсы, собственные и или сторонние.

В качестве решения AppleScript с двумя щелчками мыши он сохраняется как приложение, я сохранил его как Window-Snapshot в Applications , а затем поместил его в Dock , перетащив пакет приложений в Dock , где я хотел, чтобы это было.

  • Что мне нравится в решении с двумя щелчками мыши, так это то, что когда щелкается плитка док-станции приложения Window-Snapshot, это буквально так, как если бы я нажимал вручную -- затем наshift клавиатуре , и теперь все, что мне нужно сделать, это навести указатель мыши на цель окно, которое я хочу захватить, а затем щелкните его мышью. Таким образом, решение с двумя щелчками мыши ! Этот метод позволяет нажать клавишу для прерывания, как это было бы при нажатии сочетания клавиш вручную. Также он не зависит от использования сторонней утилиты и второгоcommand4Space barescdelayкоманда в качестве таймера, позволяющая позиционировать указатель мыши до истечения времени ожидания, и автоматически делает снимок, используемый в решении с одним* щелчком мыши . Само по себе решение с двумя щелчками мыши является самым простым из представленных здесь решений.

В качестве решения одним* щелчком мыши AppleScript сохраняется как приложение, а сторонняя утилита CLICLICK добавляется в комплект приложения, а соответствующий код раскомментирован в сценарии .

  • Примечание. Решение с одним* щелчком мыши использует вторую delayкоманду, чтобы дать время на позиционирование указателя мыши в любом месте над целевым окном, которое необходимо захватить, и не имеет значения, является ли окно самым верхним окном, когда вторая delayкоманда тайм-аут в зависимости от окна, над которым находится мышь, которое захвачено в моментальном снимке. Захват можно прервать, нажав клавишу до истечения времени ожиданияesc второй delayкоманды .

Как служба автоматизатора с помощью сочетания клавиш

Как служба Automator, она создается с использованием кода ApplesScript , немного изменена, и для службы назначается сочетание клавиш в: «Системные настройки» > «Сочетания клавиш» > «Службы».

  • Примечание. Я назначил сочетание клавишshift - command- 5или ⇧⌘5, что кажется логичным для использования, и любое окно, над которым находится мышь, будет окном, которое будет захвачено снимком. Окно не обязательно должно быть полностью видимым, чтобы его можно было захватить, или быть самым верхним окном.

Код AppleScript для моментального снимка окна

tell application "System Events"

    (* Note: If used as the default two mouse-click solution then use as is, nothing else needs to be done. *)

    keystroke "$" using {command down}
    delay 0.25
    keystroke space

    (* Note: If using as the one mouse-click solution or Automator Service, uncomment the 
    two lines below having double-dashes in front by removing the double-dashes. 
    Also when using as the one mouse-click solution, set a value on the 'delay' command 
    below to an appropriate value which allows you the time necessary to move the mouse  
    over the target window before that delay command times out and the snapshot is taken.
    The default of '1.5' is in this use case is a somewhat arbitrary value, set it to suite.

    Note: When using as an Automator Service set the 'delay' command below to '0.25', 
    the same as in the first 'delay' command. *)

    -- delay 1.5
    -- do shell script "/Applications/Window-Snapshot.app/Contents/Resources/cliclick c:."

end tell
  • Примечание. Как видите , в первой команде есть 0.25второе значение , эта короткая задержка необходима, поскольку между двумя командами должна быть задержка. При использовании решения с одним* щелчком мыши вторая команда должна быть более реалистичной. Установите значение, которое позволяет вам перемещать мышь по целевому окну до истечения срока действия команды задержки, например и т. д.delay 0.25delaykeystrokedelay1.5

Создание приложения Window-Snapshot

  1. Откройте редактор сценариев (или редактор AppleScript, если применимо).

  2. Скопируйте и вставьте код AppleScript Window-Snapshot сверху в окно документа Untitled , а затем нажмите Compile .

  3. Нажмите S, чтобы сохранить и установить формат файла: для приложения , сохраняя его в папке «Приложения» .

  4. Дайте пакету приложений Window-Snapshot собственный значок. Я использовал значок камеры, найденный в Find Icons , и использовал его, в частности , нажав кнопку «Загрузить ICNS». Я открыл загруженный файл «scanners_cameras.icns» в режиме предварительного просмотра , скопировал его, а затем вставил на лист «Информация» в Window-Snapshot.app , сначала выбрав маленький значок в верхнем левом углу листа «Информация об Window-Snapshot» . (В приложениях выберите Window-Snapshot.app и нажмите: I)

  5. Теперь перетащите пакет приложений Window-Snapshot из папки «Приложения» в Dock , где вы хотите, чтобы он был.

Теперь он готов к использованию, щелкните плитку док-станции Window-Snapshot , а затем щелкните целевое окно, которое нужно захватить.

  • Примечание. Снимки сохраняются с теми же настройками именования и местоположения, как если бы была нажата ⇧⌘3, только сохраняются только целевые окна. По умолчанию используется рабочий стол, Screen Shot yyyy-mm-dd at hh.mm.ss AM|PMили, если значение по умолчанию было изменено, оно будет таким, какое оно установлено в настоящее время.

Настройка Window-Snapshot.app для решения одним* щелчком мыши с помощью CLICLICK

  1. Загрузите CLICLICK , смонтируйте файл cliclick.dmg и поместите копию исполняемого файла cliclickв пакет приложения Window-Snapshot.app по пути, указанному в сценарии. Удерживая нажатой клавишу Ctrl, щелкните приложение Window-Snapshot, выбрав «Показать содержимое пакета» , и перейдите в папку «Ресурсы» , поместив туда копию cliclickисполняемого файла.

  2. Раскомментируйте две строки под (* Note: If using as the one mouse-click solution or Automator Service,комментариями, удалив двойные тире --перед кодом.

  3. Сохраните изменения, внесенные в AppleScript .

Теперь его можно использовать в качестве решения одним* щелчком мыши .

Создание службы автоматизации моментальных снимков окна

  1. Откройте Automator , выбрав Service .

  2. Установить , что выбранная служба не принимает никаких входных данных , оставляя их в любом приложении как есть. Добавьте « Выполнить AppleScript» , а затем скопируйте и вставьте приведенный выше код AppleScript Window-Snapshot в окно «Выполнить AppleScript» , перезаписав код по умолчанию.

  3. Раскомментируйте две строки под (* Note: If using as the one mouse-click solution or Automator Service,комментариями, удалив двойные тире --перед кодом, и задайте для второй delayкоманды значение 0.25.

  4. Сохраните службу , Sназвав ее Window-Snapshot .

  5. Откройте «Системные настройки» и перейдите в «Клавиатура»> «Сочетания клавиш»> «Службы» и прокрутите вниз, затем в разделе « Общие» вы увидите «Снимок окна» и выберите его. Теперь нажмите добавить ярлык и нажмите shift- command- 5или: ⇧⌘5

Теперь он готов к использованию в качестве службы с помощью сочетания клавиш : ⇧⌘5.

  • Примечание. Если вы хотите использовать его только как службу , вам нужно изменить путь к cliclickисполняемому файлу, где бы вы его ни установили. Вы можете попробовать поместить его в пакет услуг, например /Users/$USER/Library/Services/Window-Snapshot.workflow/Contents, хотя я не пробовал этого, поскольку мне нравится использовать его как приложение AppleScript , используя его как решение с двумя щелчками мыши , так и службу Automator с назначенным сочетанием клавиш .

В заключение я хотел бы сказать, что этот очень простой AppleScript, безусловно, может быть разъяснен для добавления дополнительных функций как в качестве приложения, так и в качестве службы, то есть добавления кода для сохранения моментального снимка с другими именами и местоположениями и т. д., однако я оставьте это вам, чтобы изменить, если вы того пожелаете.

Работает отлично, ⇧⌘5 и экономит, ваше решение многим поможет. Спасибо.
@Paul, рад, что ты можешь его использовать. Я использую другую вер. приложения AppleScript и не включил сюда код, поскольку он использует другой сторонний исполняемый файл. Второй исполняемый файл вызывается checkModifierKeysи делает то, что следует из названия, и я закодировал его так, что если я нажимаю клавишу Shift, когда я нажимаю плитку док-станции, он переключает ключ disable-shadowв файле .plist снимка экрана, поэтому я могу легко делать снимки без тени. . Оба исполняемых файла я создал из исходного кода, предоставленного авторами, хотя они оба предоставляют двоичные файлы. Если вам интересно, дайте мне знать, я обновлю ответ.

Одним из подходов было бы использование screencaptureкоманды:

screencapture -w window.png

который захватит первое окно, которое вы щелкнете после запуска команды, и сохраните его как window.png.

Есть несколько способов привязать эту команду к сочетанию клавиш, например, создав службу Automator, которая запускает ее как сценарий оболочки , или используя сторонний лаунчер, такой как Alfred . В любом случае, вы, вероятно, также захотите добавить немного ума в процесс, который каждый раз выбирал другое имя файла, чтобы вы не перезаписывали свой предыдущий снимок экрана.

Я не знаю простого способа всегда просто захватывать самое переднее окно ... возможно, гуру AppleScript может помочь с этим?

Куда сохранился window.png? также с помощью этого метода с использованием терминала; все еще нужно щелкнуть мышью, это упрощает задачу, и я посмотрю на Autotor и Alfred, спасибо.
С помощью приведенной выше команды он будет сохранен в любой папке, из которой вы запускали команду. Если вы хотите, например, всегда сохранять на рабочий стол, вы можете указать это место как часть имени файла, например, 'screencapture -w ~/Desktop/window.png'. Да, оцените, что щелчок мышью по-прежнему требуется, хотя... пока не удалось найти способ обойти это.

Почему бы просто не включить расширенные команды диктовки, а затем создать новую голосовую команду? В приведенном ниже примере я создал голосовую команду, которая, когда я говорю «Захват изображения», делает снимок экрана. Полностью обойти клавиатуру LOL

введите описание изображения здесь