Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата 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))
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:23, 16-05-2012 | #4