SendMessage()関数はスクリプトをハングアップさせ、終了することはないのでSendMessageを実行しています(タスクが完了しています)。私はマスタースクリプトからそれを殺す時間の地獄を持っているので、これを回避するにはとにかくありますか?SendMessageがスクリプトのハングを引き起こしています
Stop-job -name offmon
または
Remove-job -name offmon -force
はそれを殺すことはありません。それは完了していないので、それはそれを殺すことができないことを報告します。
私はこれを毎日何度も呼び出す必要があります。毎回、これは約30Mのメモリを消費する新しいpowershell.exeを生成します。
注:あなたがそれを実行した場合、コードがあなたのモニターの電源を入れますと、「@を(タブそれを上に見栄えがすることはできません)行の先頭にあることが必要
start-job -Name offmon -ScriptBlock {
$HWND = -1
$WM_SYSCOMMAND = 0x0112
$SC_MONITORPOWER = 0xF170
$MONITOR_ON = -1
$MONITOR_OFF = 2
#Store the C# signature of the SendMessage function.
$signature = @"
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);
"@
#Add the SendMessage function as a static method of a class
$SendMessage = Add-Type -MemberDefinition $signature -Name "Win32SendMessage" -Namespace Win32Functions -PassThru
#Invoke the SendMessage Function
$SendMessage::SendMessage($HWND, $WM_SYSCOMMAND, $SC_MONITORPOWER, $MONITOR_OFF)
exit}
も。これは、私はそれがstart-job causes scripts to hang.MS Supportに関連しているとは思わないので、立ち仕事せずに、単に同じハングこれはWin7Ent/2008R2でさらに
おかげ
編集:。。!誤植
をクラッシュしません、しかし、SendMessageのための署名SendMessage(IntPtr、uint、IntPtr、IntPtr)である必要があります。 – OldFart
私は実際のコマンドが通過するので、モニターは何のエラーもなくオフになりますが、私は間違っていると思います。 – yaodin
あなたは64ビットOSですか?もしそうなら、ここですべて読む:http://stackoverflow.com/questions/9891585/sendmessage-is-causing-script-to-hang –