mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
34 lines
2.1 KiB
Plaintext
34 lines
2.1 KiB
Plaintext
# Этот скрипт почему то очень долго работает при запуске из 64-битного приложения 1С, а из 32-битного вообще зависает. При этом независимый запуск выполняется быстро.
|
||
param (
|
||
[string]$outFileName = $(throw "Укажите файл для вывода списка главных окон конфигураторов 1С с помощью ключа -outFileName.")
|
||
)
|
||
#$outFileName = "C:\TerminalDisk\1.txt"
|
||
#REQUIRES -Version 3.0
|
||
[void][System.Reflection.Assembly]::LoadWithPartialName("UIAutomationClient")
|
||
[void][System.Reflection.Assembly]::LoadWithPartialName("UIAutomationTypes")
|
||
[void][System.Reflection.Assembly]::LoadWithPartialName("UIAutomationProvider")
|
||
[void][System.Reflection.Assembly]::LoadWithPartialName("UIAutomationClientsideProviders")
|
||
$client = [System.Reflection.Assembly]::LoadWithPartialName("UIAutomationClientsideProviders")
|
||
try
|
||
{
|
||
[Windows.Automation.ClientSettings]::RegisterClientSideProviderAssembly($client.GetName()) # WORKAROUND: There is a weird bug: first call fails ... https://gist.github.com/xiongjia/6749035
|
||
}
|
||
catch {}
|
||
[Windows.Automation.ClientSettings]::RegisterClientSideProviderAssembly($client.GetName()) # second call succeeds
|
||
$rootElement = [Windows.Automation.AutomationElement]::RootElement
|
||
$nameType = New-Object Windows.Automation.PropertyCondition([Windows.Automation.AutomationElement]::ClassNameProperty, "V8TopLevelFrame")
|
||
$condType = New-Object Windows.Automation.PropertyCondition([Windows.Automation.AutomationElement]::ControlTypeProperty, [Windows.Automation.ControlType]::Window)
|
||
$condFinal = New-Object Windows.Automation.AndCondition($condType, $nameType)
|
||
$windows = $rootElement.FindAll([Windows.Automation.TreeScope]::Children, $condFinal)
|
||
$outText = ""
|
||
foreach($window in $windows)
|
||
{
|
||
$windowName = $window.Current
|
||
$windowName = $windowName.Name
|
||
if($windowName -like "*Конфигуратор*" -or $windowName -like "*Designer*")
|
||
{
|
||
$outText += "" + $window.Current.ProcessId + " " + $window.Current.Name + "`n"
|
||
}
|
||
}
|
||
Set-Content $outFileName $outText -Force
|