使用 AppleScript 制作用户名和密码输入框

Posted

技术标签:

【中文标题】使用 AppleScript 制作用户名和密码输入框【英文标题】:Make Username and Password input box with AppleScript 【发布时间】:2015-04-29 15:54:49 【问题描述】:

我想在 AppleScript 中制作一个看起来完全一样的对话框输入框:

除了锁的左上角没有图片。

另外,我需要能够保存两个输入。

我知道我可以使用tell application "System Events" to display dialog "blah blah" default answer "" end tell,但我找不到拥有多个标签字段的方法。

【问题讨论】:

顺便说一句:GUI 命令是 Standard Additions 库的一部分,而不是系统事件 - 不需要 tell application "System Events" 【参考方案1】:

从 OSX 10.10 开始,AppleScript 本身不提供此功能

要查看支持哪些 GUI 操作,请查看标准添加字典的 User Interaction 套件(StandardAdditions.def,可通过 Script Editor.app 访问 File > Open Dictionary... > StandardAdditions.osax)。

最接近的近似值是 单个 输入字段对话框 - 仅提示输入密码 - 如下(您已经在问题中指出的限制,但只是说明如何提示输入密码以及如何使用自定义按钮):

display dialog ¬
    "Installer is ..." default answer ¬
    "" buttons "Cancel", "Install Software" ¬
    default button 2 ¬
    with hidden answer

要获得您想要的,您需要一个第三方库,例如Pashua

以下是在 Pashua 中定义请求的对话框并处理返回值的方法:

# Define the dialog using a textual definition similar to a properties file.
set dlgDef to "
# Window title (if you don't set one explicitly (even if empty), it'll be 'Pashua')
*.title = 

# Add the hint (static text).
st.type = text
st.text = Installer is trying to install new software. Type your password to allow this.

# Add the username field.
tfn.type = textfield
tfn.label = Name:

# Add the password field.
tfp.type = password
tfp.label = Password:

# Add the buttons.
cb.type = cancelbutton
db.type = defaultbutton
db.label = Install Software
"

# Show the dialog. 
# Return value is a record whose keys are the element names from the dialog
# definition (e.g., "tfn" for the  usernam text field) and whose
# values are the values entered (for input fields) or 
# whether a given button was clicked or not ("1" or "0")
set theResult to showDialog(dlgDef, "")

# Process the returned values.
if cb of theResult is "1" then
    display alert "User canceled the dialog."
else
    display alert "name=[" & tfn of theResult & "]; password=[" & tfp of theResult & "]"
end if

对话框将如下所示:


设置 Pashua 概述

注意:这是一个简化的概述;有关完整说明,请参阅下载的光盘映像中的 Read me.htmlDocumentation.html

从http://www.bluem.net/en/mac/pashua/下载并挂载光盘镜像 将Pashua.app 放置在/Applications~/Applications 中,或者——在紧要关头——与调用脚本相同的文件夹中。 Pashua.app 是呈现对话框的应用程序(对话框打开时,菜单栏会显示Pashua)。 将绑定代码(2 个短处理程序,showDialoggetPashuaPath)从 Examples/AppleScript/Pashua.scpt 复制到您的脚本中。 注意:由于撰写本文时存在错误,您必须对处理程序 getPashuaPath 进行小幅更正:将行 return (path to applications folder from system domain as text) & "Pashua.app" 替换为 return (path to applications folder from system domain as text) & "Pashua.app:"。 或者,直接从 GitHub 存储库获取最新的绑定代码:https://github.com/BlueM/Pashua-Binding-AppleScript

【讨论】:

以上是关于使用 AppleScript 制作用户名和密码输入框的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AppleScript 登录远程 Mac?

AppleScript无法获得api响应的引用形式

通过 AppleScript 设置屏幕共享密码

如何在Mail.app中运行的applescript中使用钥匙串中的密码?

ACCESS制作个打开需要输入密码的窗体

通过Html和Javascript制作一个静态的登录页面