Откройте меню «Пуск» с помощью Powershell.

Откройте меню «Пуск» с помощью Powershell.

В настоящее время я работаю над программным обеспечением для автоматизации бизнес-процессов, и буквально действия пользователя имитируются роботами. Мне нужно передать некоторую информацию в меню «Пуск» моего Windows 7, и мне интересно, можно ли открыть меню «Пуск» Windows с помощью скрипта PowerShell? Поскольку информация для открытия PowerShell может быть понята роботами. Пожалуйста, любые предложения были бы хороши.

решение1

Да, это возможно с помощьюмаленький ВБ.

Скопируйте этот код в Блокнот и сохраните как startmenu.vbs. [Убедитесь, что онне делаетсохранить как startmenu.vbs.txt]

set wShell=wscript.createobject("wscript.shell")
wShell.sendkeys "^{ESC}"
Set WshShell = Nothing

Затем вы можете просто запустить его с помощью cscript C:\somefilepath\startmenu.vbs.

(Разумеется, вам придется указать путь, куда вы его сохраните)


Или, в переводе наPowershellрешение:

$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()

Связанный контент