PDA

Показать полную графическую версию : Как в cmd или в PowerShell передать фокус другому окну?


This
09-05-2015, 13:54
Как в cmd или в PowerShell передать фокус другому окну?

corbis
13-05-2015, 11:11
Что за окна и с какой целью? мало инфы..

Kazun
13-05-2015, 11:16
(New-Object -ComObject WScript.Shell).AppActivate("Калькулятор")

https://msdn.microsoft.com/en-us/library/wzcddbek(v=vs.84).aspx

Georgio
14-05-2015, 11:12
По имени процесса: Try{(New-Object -ComObject WScript.Shell).AppActivate(((wmic Process where "Name='calc.exe'" get ProcessID)-match '\d')[0])}Catch{}.

This
19-05-2015, 21:59
Извините, парни, думал на мыло сообщение придет, когда кто-нибудь ответит. Не заглядывал сюда давно. Опробую варианты и отпишусь, спасибо

greg zakharov
21-05-2015, 16:26
Батник (требует наличия PowerShell, если речь об XP)<# :
@echo off
powershell /nologo /noprofile /command ^
"&{[ScriptBlock]::Create((cat \"%~f0\") -join [Char]10).Invoke(@(&{$args}%1))}"
exit /b
#>

{
param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]$ClassName
)

Add-Type -AssemblyName ($a = 'System.Windows.Forms')

$FindWindow = ($unm = ($asm = [AppDomain]::CurrentDomain.GetAssemblies() | ? {
$_.ManifestModule.ScopeName.Equals("$a.dll")
}).GetType("$a.UnsafeNativeMethods")).GetMethod('FindWindow')
$SetForegroundWindow = $unm.GetMethod('SetForegroundWindow')
$ShowWindow = $asm.GetType("$a.SafeNativeMethods").GetMethod('ShowWindow')

$SW_SHOW = 5

if (($ptr = $FindWindow.Invoke($null, @($ClassName, $null))) -eq [IntPtr]::Zero) {
"Could not find $($ClassName) window.`n"
return
}

[Runtime.InteropServices.HandleRef]$href = New-Object Runtime.InteropServices.HandleRef(
(New-Object IntPtr), $ptr
)

[void]$SetForegroundWindow.Invoke($null, @($href))
[void]$ShowWindow.Invoke($null, @($href, $SW_SHOW))
}.Invoke($args)Обзываем батник, скажем, FindWindow.cmd, копируем в одну из директорий переменной %PATH% и:rem поиск окна редактора реестра
C:\>FindWindow RegEdit_RegEdit
rem или блокнота
C:\>FindWindow Notepad

This
10-06-2015, 18:16
Всем спасибо




© OSzone.net 2001-2012