有人知道如何创建一个快捷方式来将选定的文件附加到 iMessage 吗?
Posted
技术标签:
【中文标题】有人知道如何创建一个快捷方式来将选定的文件附加到 iMessage 吗?【英文标题】:Does anybody know how to create a shortcut to attach a selected file to iMessage? 【发布时间】:2012-11-28 04:05:33 【问题描述】:我希望能够在我的桌面上选择一个项目并键入一个快捷方式,以便使用消息应用程序将所选项目附加到新消息中。我尝试在 Finder.app 下的系统偏好设置/键盘/键盘快捷键/应用程序快捷方式中创建一个,键入“共享>消息”,但它没有用。我有一个使用 automator 创建的“带有选择的新电子邮件”的快捷方式,但 Messages 不是一个选项。我还尝试为此搜索 Applescript 或终端命令,以便我可以使用 Better Touch Tool 通过滑动手势来完成。我与一位 Apple 高级顾问交谈过,他说他也不知道该怎么做,也不会在论坛上发布。
如果有人知道如何为此操作创建快捷方式,请告诉我。
更新:我从 /System/Library/PrivateFrameworks/ShareKit.Framework/Versions/A/Plugins/Message s.sharingservice/Contents/MacOS 复制了这个
如果有人知道这条线是否可以用 automator 变成 .service,请告诉我如何做/修改它。
谢谢
/System/Library/PrivateFrameworks/ShareKit.framework/Versions/A/PlugIns/Messages .sharingservice/Contents/MacOS/Messages ;出口; NAME-Mac:~ NAME$ /System/Library/PrivateFrameworks/ShareKit.framework/Versions/A/PlugIns/Message s.sharingservice/Contents/MacOS/Messages ;出口; -bash: /System/Library/PrivateFrameworks/ShareKit.framework/Versions/A/PlugIns/Message s.sharingservice/Contents/MacOS/Messages
--
延迟 0.218623 将 timeoutSeconds 设置为 2.000000 将 uiScript 设置为“单击应用程序进程\“Finder\”的滚动区域 1 组 1 的图像\“测试文件\” 我的 doWithTimeout(uiScript, timeoutSeconds)
-- 消息 延迟 0.263641 将 timeoutSeconds 设置为 2.000000 将uiScript设置为“单击应用程序进程\“Finder\”的滚动区域1组1的菜单1的菜单项\“Share\”的菜单1的菜单项\“Message\” 我的 doWithTimeout(uiScript, timeoutSeconds)
关于 doWithTimeout(uiScript, timeoutSeconds) 将 endDate 设置为(当前日期)+ timeoutSeconds 重复 尝试 运行脚本“告诉应用程序\”系统事件\” " & uiScript & " 结束告诉” 退出重复 关于错误errorMessage 如果 ((当前日期) > endDate) 那么 错误“不能” & uiScript 万一 结束尝试 结束重复 结束doWithTimeout
【问题讨论】:
【参考方案1】:我看不到如何让它们运行。
您可以设置 Automator 服务,并将其输入设置为“Finder”中的文件和文件夹
并在 Run Applescript Action 中使用此代码。
它有效但主要的问题是找到正确的伙伴。我已经设置好了,所以你可以选择你想要的。可以做更多的工作,我希望让您输入一个名称,它会返回较小的匹配名称和句柄列表。
on run input, parameters
set buddieList to
set splitter to "======"
tell application "Messages"
--set buddieList to name of buddies, handle of buddies
repeat with i from 1 to number of items in buddies
set this_item to item i of buddies
copy (name of this_item as string) & splitter & handle of this_item as string to end of buddieList
end repeat
end tell
set inputAlias to item 1 of input as alias
set text_returned to item 1 of (choose from list buddieList with prompt "TO:" without multiple selections allowed and empty selection allowed)
set theBuddy to (do shell script "echo " & quoted form of text_returned & " | awk -F" & splitter & " 'print $2'")
tell application "Messages"
set theBuddy to first buddy whose handle is theBuddy
send inputAlias to theBuddy
end tell
end run
**更新。
回答您的 cmets: 我实际上并没有使用查找器共享中的搜索字段。所以很高兴看到它的结构实际上与我构建选择器的方式相同。 :-)
但它似乎在搜索您的联系人而不是好友列表。
所以这个新脚本使用搜索联系人姓名,其中包含您输入的任何文本。 就像真正的份额一样。无法保证这些人的号码或电子邮件将与 iMessages 相关联。
另请注意,我会在几分钟内将这些放在一起。所以它不像它可能的那样整洁。但它给了你一些可以玩的东西。
on run input, parameters
set buddieList to
set splitter to "======"
tell application "Messages"
activate
display dialog "Name Contains.." default answer "" buttons "Cancel", "OK" default button 2
copy the result as list to text_returned, button_pressed
end tell
tell application "Contacts"
set buddies to people whose name contains text_returned
repeat with a from 1 to number of items in buddies
set this_name to name of item a of buddies
set this_email to email of item a of buddies
set this_phone to phone of item a of buddies
repeat with e from 1 to number of items in this_email
set this_email_item to item e of this_email
if this_email_item is not then
copy (this_name) & splitter & value of this_email_item as string to end of buddieList
end if
end repeat
repeat with e from 1 to number of items in this_phone
set this_iphone_item to item e of this_phone
if this_iphone_item is not then
copy (this_name) & splitter & value of this_iphone_item as string to end of buddieList
end if
end repeat
end repeat
end tell
tell application "Messages" to set text_returned to item 1 of (choose from list buddieList with prompt "TO:" without multiple selections allowed and empty selection allowed)
set inputAlias to item 1 of input as alias
set theBuddy to (do shell script "echo " & quoted form of text_returned & " | awk -F" & splitter & " 'print $2'")
tell application "Messages"
try
set findBuddy to first buddy whose handle is theBuddy
send inputAlias to findBuddy
on error
display dialog "NO BUDDY Found with " & theBuddy
end try
end tell
end run
它旨在放入 Automator 中的 Run Applescript Action 中。作为一项服务。复制并粘贴它以替换所有默认代码。
【讨论】:
它只显示前两个好友。有没有办法显示消息弹出窗口来搜索好友? 感谢您帮助我。我试过了,它会打开消息但不发送所选文件。有没有办法通过使用 shell 脚本的 Automator 服务来选择右键菜单项“Share>Messages”? 它应该被放入 Automator 中的 Run Applescript Action 中。作为一项服务。复制并粘贴它以替换所有默认代码。我刚刚在这里再次测试它并且它有效。请参阅我刚刚附上的图片。 我按照说明操作,它会在后台打开 iMessage。当我把它放在前面时,会出现“名称包含..”窗口。我输入好友的电子邮件地址,联系人应用程序启动,它给了我这个错误:“操作“运行 AppleScript”遇到错误。” 抱歉,我刚刚注意到我发布的脚本中有一个错字。我有“如果 this_iphone_item 不是 那么”而不是“如果 this_email_item 不是 那么”。脚本现已更新。请记住,在控制单击文件并转到服务时,您需要保存设备并运行它。以上是关于有人知道如何创建一个快捷方式来将选定的文件附加到 iMessage 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Powershell 将 ComboBox 选定文件附加到 TextBox?