Цитата:
Цитата iron86
там можно сохранять в файлы типа bat? »
|
Поясните Ваш вопрос.
Цитата:
Цитата iron86
если да, то какой командой можно реализовать задуманное? »
|
Например, так (на основе Win32 API из PowerShell 1.0 « PowerShell и другие скрипты):
читать дальше »
Код:
# Создаём объект CodeProvider, для выполнения кода c# в нашем сценарии
$CodeProvider = New-Object -TypeName Microsoft.CSharp.CSharpCodeProvider
# В этой переменной можно задать параметры для выполнения кода
$CompilerParameters = New-Object System.CodeDom.Compiler.CompilerParameters
# Константы задающие действие функции SetWindowPos
$HideWindow = 0x0080
$ShowWindow = 0x0040
# С помощью конструкции "HereString" помещаем в переменную $Code код c# объявляющий функцию SetWindowPos
$Code = @"
using System;
using System.Runtime.InteropServices;
namespace Win32API
{
public class Window
{
[DllImport("user32.dll")]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
}
}
"@
# Выполняем код c#
[void]$CodeProvider.CompileAssemblyFromSource($CompilerParameters, $Code)
# Запускаем процесс 'notepad.exe'
$oProcess = [System.Diagnostics.Process]::Start("notepad.exe")
# Ожидаем основного окна приложения
[void]$oProcess.WaitForInputIdle()
# Используем объявленную функцию из PowerShell
[void]([Win32API.Window]::SetWindowPos($oProcess.MainWindowHandle, 0, 100, 100, 400, 400, $ShowWindow))
# Запоминаем хэндл окна
$hPrev = $oProcess.MainWindowHandle
# Запускаем процесс 'calc.exe'
$oProcess = [System.Diagnostics.Process]::Start("calc.exe")
[void]$oProcess.WaitForInputIdle()
#Используем объявленную функцию из PowerShell
[void]([Win32API.Window]::SetWindowPos($oProcess.MainWindowHandle, $hPrev, 200, 200, 400, 400, $ShowWindow))
# Запоминаем хэндл окна
$hPrev = $oProcess.MainWindowHandle
# Запускаем процесс 'wordpad.exe' с параметром
$oProcess = [System.Diagnostics.Process]::Start("wordpad.exe", "C:\WINDOWS\system32\eula.txt")
[void]$oProcess.WaitForInputIdle()
#Используем объявленную функцию из PowerShell
[void]([Win32API.Window]::SetWindowPos($oProcess.MainWindowHandle, $hPrev, 300, 300, 500, 500, $ShowWindow))
|