在菜单中按 Esc 键通常会关闭菜单窗口。是否有类似的热键可以关闭菜单,就像我单击“确定”一样?
我制作了一个宏来快速打开或关闭程序中的元素,这需要切换菜单选项卡中的径向按钮,然后单击“确定”。这可以正常工作,但宏必须按几次 Tab 才能到达“确定”按钮。
答案1
这只是对 David Postill 的评论的解释,简洁而正确。
这标准 Windows 对话框,由不同的应用程序使用,允许热键和一个默认键分配给每个按钮(以及对话框的其他区域),但这取决于开发者的每个应用程序决定如何分配热键,或者是否使其成为默认键,即Enter。
例如,在下面的应用程序中字体查看确定,默认按钮是好的,因此按下Enter选择好的。
在下面的 Windows UAC 对话框中,默认按钮是不. 还请注意否带有下划线,表示按下AltN是快捷方式。
显然,如果某个操作可能会产生负面影响,开发人员应该避免将该按键设为默认按键,或可能被反射按下的按键。
答案2
您可以使用免费AutoHotkey V1。
F9以下示例脚本将在单击时单击活动窗口或对话框中的“确定”按钮:
F9::
ControlClick, OK, A
Return
安装 AutoHotKey 后,将上述文本放入一个.ahk
文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
有用的 AutoHotkey 文档:
答案3
不。有些框只是硬编码为不使用加速键,因此 tab 是你唯一的选择(不使用第三方)。
例如,使用运行框进行操作,可以用它做任何事情,但不能强调“确定”或“取消”;
$cpuUsage = Get-WmiObject Win32_Processor | Select-Object -ExpandProperty LoadPercentage
$memory = Get-WmiObject Win32_OperatingSystem
$totalMemory = [math]::Round($memory.TotalVisibleMemorySize / 1MB, 2)
$freeMemory = [math]::Round($memory.FreePhysicalMemory / 1MB, 2)
$usedMemory = $totalMemory - $freeMemory
$systemInfo = "Current CPU Usage: $cpuUsage%`n"
$systemInfo += "RAM usage: $usedMemory/$totalMemory MB`n"
$dialogTitle = "Example of Run box on $($env:COMPUTERNAME)."
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("shell32.dll", EntryPoint = "#61", CharSet = CharSet.Unicode)]
public static extern int RunFileDlg(
IntPtr hWnd,
IntPtr icon,
string path,
string title,
string prompt,
uint flags);
}
"@
$RFF_NOBROWSE = 1
$RFF_NODEFAULT = 2
$RFF_CALCDIRECTORY = 4
$RFF_NOLABEL = 8
$RFF_NOSEPARATEMEM = 14
$RFF_OK = 0x00008000
[Win32]::RunFileDlg([IntPtr]::Zero, [IntPtr]::Zero, $null, $dialogTitle, $systemInfo, $RFF_OK)
另存为 Somename.ps1 并运行。请注意,当按下 Alt 时,它甚至会强调“打开”(即使默认情况下也是如此),但不会执行任何操作。