
Ich arbeite derzeit an einer Software zur Automatisierung von Geschäftsprozessen und simuliere Benutzeraktionen buchstäblich durch Roboter. Ich muss einige Informationen an das Startmenü meines Windows 7 weitergeben und frage mich, ob das Windows-Startmenü mithilfe eines Powershell-Skripts geöffnet werden kann. Die Roboter verstehen die Informationen zum Öffnen einer Powershell. Ich freue mich über alle Vorschläge.
Antwort1
Ja, es ist möglich, mit einemwenig VERB.
Kopieren Sie diesen Code in den Editor und speichern Sie ihn unter startmenu.vbs
. [Stellen Sie sicher, dass ernichtwird als startmenu.vbs.txt gespeichert]
set wShell=wscript.createobject("wscript.shell")
wShell.sendkeys "^{ESC}"
Set WshShell = Nothing
Dann können Sie es einfach mit ausführen cscript C:\somefilepath\startmenu.vbs
.
(Natürlich müssen Sie den Pfad angeben, in dem Sie es speichern)
Oder, übersetzt inPower ShellLösung:
$wShell = New-Object -ComObject "wscript.shell"
$wShell.SendKeys("^{ESC}")
Was man weiter verkürzen kann zu:
(New-Object -ComObject "wscript.shell").SendKeys("^{ESC}")
Antwort2
Dies ist eine etwas ausführlichere Lösung, die keine Tastendrücke emuliert (für Fälle, in denen STRG+ESC an ein anderes Programm/einen anderen Befehl usw. gebunden ist).
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()