
現在、ビジネス プロセス自動化ソフトウェアに取り組んでおり、文字通り、ユーザー アクションがロボットによってシミュレートされています。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()