У меня проблема с тем, что функция SendMessage () вызывает зависание скрипта и, следовательно, никогда не завершается, хотя он и запускает SendMessage, как и должно (его задача завершается).Есть ли способ обойти это, потому что я чертовски потратил время, убивая его из основного сценария.
Stop-job -name offmon
или
Remove-job -name offmon -force
не убьет его.Без силы на удаление-задание оно сообщает, что не может убить его, потому что оно не завершено.
Мне нужно вызывать это много раз в день, и каждый раз, когда я делаю это, появляется новый powershell.exe, съедающий около 30M.памяти.
Примечание: код перевернет ваши мониторы, если вы запустите его, и "@ должно быть в начале строки (не можете перевернуть его, чтобы хорошо выглядеть).
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}
Также это зависает точно так же, без запуска задания, поэтому я не верю, что это связано с запуск задания вызывает зависание сценариев. Поддержка MS . Далее этоWin7Ent / 2008R2.
Спасибо!
Редактировать: Опечатки