使用 Powershell 打开开始菜单

使用 Powershell 打开开始菜单

我目前正在开发一款业务流程自动化软件,用户操作实际上是由机器人模拟的。我需要将一些信息传递到我的 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()

相关内容