我目前正在开发一款业务流程自动化软件,用户操作实际上是由机器人模拟的。我需要将一些信息传递到我的 Windows 7 的开始菜单,我想知道是否可以使用 powershell 脚本打开 Windows 开始菜单?因为机器人可以理解打开 powershell 的信息。请提出任何建议。
答案1
是的,可以使用小 VB。
将此代码复制到记事本中,并另存为startmenu.vbs
。[确保它没有保存为startmenu.vbs.txt]
set wShell=wscript.createobject("wscript.shell")
wShell.sendkeys "^{ESC}"
Set WshShell = Nothing
然后,您只需用 运行它即可cscript C:\somefilepath\startmenu.vbs
。
(显然,您必须指定保存的路径)
或者,翻译成电源外壳解决方案:
$wShell = New-Object -ComObject "wscript.shell"
$wShell.SendKeys("^{ESC}")
可以进一步缩写为:
(New-Object -ComObject "wscript.shell").SendKeys("^{ESC}")
答案2
这是一个稍微冗长的解决方案,它不模拟按键(对于 CTRL+ESC 绑定到另一个程序/命令等的情况)。
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32API
{
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, String lpWindowName);
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
public static void OpenStartMenu ()
{
const int SC_TASKLIST = 0xf130;
const int WM_SYSCOMMAND = 0x112;
IntPtr hWnd = FindWindow("Shell_TrayWnd", "");
SendMessage(hWnd, WM_SYSCOMMAND, SC_TASKLIST, 0);
}
}
"@
[Win32API]::OpenStartMenu()