Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как в cmd или в PowerShell передать фокус другому окну? (http://forum.oszone.net/showthread.php?t=299557)

This 09-05-2015 13:54 2505444

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

corbis 13-05-2015 11:11 2506801

Что за окна и с какой целью? мало инфы..

Kazun 13-05-2015 11:16 2506804

Код:

(New-Object -ComObject WScript.Shell).AppActivate("Калькулятор")
https://msdn.microsoft.com/en-us/lib...(v=vs.84).aspx

Georgio 14-05-2015 11:12 2507195

По имени процесса:
Код:

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 2509159

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

greg zakharov 21-05-2015 16:26 2509889

Батник (требует наличия 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 2517111

Всем спасибо


Время: 03:18.

Время: 03:18.
© OSzone.net 2001-