在 macOS 中使用 Apple Script 进行自动化时,如何使用 QuickTime Player 截取部分屏幕截图并将其保存到剪贴板?

问题描述 投票:0回答:2

我是一名正在上网课的大学生,我每次做笔记时都会按Command+Control+Shift+4截取部分截图,然后粘贴Notion。但是这样效率不高每次都选择相同的区域,然后我发现QuickTime Player会保留相同的区域来捕获部分屏幕截图,所以我决定使用Apple Script来完成操作。

我写的代码可以切换到应用程序QuickTime Player,然后按Command+Control+N进入菜单中的“新屏幕录制”,但问题是有时按两次空格会调出“捕获所选内容” 同时,虽然我已经勾选了“记住上次选择”,但保存屏幕截图的位置也会改变,也许每次重新设置保存位置是必要的。

on run {input, parameters}
    
    activate application "QuickTime Player"
    
    tell application "System Events"
        
        key code 45 using {command down, control down}
        delay 0.1
        
        # Switch to "Capture Select Portion" by pressing SPACE
        repeat 2 times
            key code 49
            delay 0.1
        end repeat
        
        # Press ENTER to capture a screenshot
        key code 35
        delay 0.1
        
    end tell
    
    return input
end run

我花了几个小时找到现有的文章,但也许不能满足我的需求。

do shell script "screencapture -ci"
与按 Command+Control+Shift+4 相同,我必须手动选择该部分。

do shell script "screencapture -x -R20,20,640,380 ~/Desktop/test.png"
需要一个精确的坐标。 但是由于窗口不是固定的,所以坐标是可变的,需要通过外部软件来找到,可能效率有点低。 如果没有解决办法,我会使用它,因为它比每次选择部分方便得多。

很抱歉在这里粘贴别人的代码并说为什么他们不适合我,我只是想说清楚...感谢您阅读这里,祝您有美好的一天无论您是否愿意帮助我^ ^

关于将屏幕截图粘贴到Notion的部分有效,所以我没有将其粘贴到此处。

Save to Clipboard instead of Preview

macos automation applescript screenshot quicktime
2个回答
1
投票

我尝试写一些东西,它可以工作,但仍然有一些错误。

例如,“选项”菜单的坐标应该根据栏的精确位置进行初始化,因为我没有成功使用entire contents

找到该元素。

使用过程中

不能移动鼠标,否则可能会导致错误:

System Events got an error: Can’t get menu \"Options\" of button \"Options\" of window \"Window\" of application process \"screencaptureui\"." number -1728 from menu "Options" of button "Options" of window "Window" of application process "screencaptureui


选择截图保存路径时,可能会

需要几秒钟让程序找到菜单项剪贴板

tell application "System Events" tell process "QuickTime Player" # Switch to QuickTime Player (already opened expected, no launching time reserved) activate # Open "New Screen Recording" from the menu click menu item "New Screen Recording" of menu "File" of menu bar item "File" of menu bar 1 of application process "QuickTime Player" of application "System Events" delay 1 end tell # Capture Selected Portion tell application process "screencaptureui" click checkbox "Capture Selected Portion" of window "Window" of application process "screencaptureui" of application "System Events" # Select Options from the menu (idk why if I replace it with click menu, the clipboard won't be found, needs to be fixed) click at {817, 824} delay 0.1 # Save to the Clipboard click menu item "Clipboard" of menu "Options" of button "Options" of window "Window" of application process "screencaptureui" of application "System Events" delay 1 end tell # Enter to capture the screenshot key code 36 delay 0.1 # Switch to Notion (already opened expected, no launching time reserved) tell application "Notion" activate delay 0.1 end tell # Paste the screenshot to Notion key code 9 using {command down} end tell
希望这对某人有帮助,如果您有任何想法,请随时修改它,因为它仍然存在错误。


0
投票
您不需要 QuickTime 来保持窗口的精确大小。通过保留您在窗口中设置的最后一个选项,实用程序文件夹中的屏幕截图会自动执行此操作。您所要做的就是按“捕捉”。优点是可以根据需要进行调整。人们永远不知道。

您不需要脚本来执行此操作,但是,如果您想将屏幕截图放入 Dock 中,它会保持 Dock 显示,如果您想要的图片位于 Dock 下,这很糟糕。

有谁知道如何制作一个系统事件脚本来激活屏幕截图然后让它退出?我有一个 MusicFader 脚本,我正在尝试编辑它来执行此操作,但我只想激活屏幕截图,然后让脚本退出。我还没弄清楚。有人知道该怎么做吗?

谢谢。 :)

© www.soinside.com 2019 - 2024. All rights reserved.