АРМ Маршрутизатор
В данный момент это ПО используется в качестве маршрутизатора для сервисов СФР
Строка соединения ЭЛН: https://eln.sfr.gov.ru/ws-mo-crypto/FileOperationsLnService?wsdl
Строка соединения СЭДО: https://ecp.sfr.gov.ru/sedo/soap/SedoGateway?wsdl
Строка соединения ВНИМ: https://ecp.sfr.gov.ru/vnim/quarantine/QuarantineStatementServicePorts?wsdl
Настройка соединения СЗН: https://ecp.sfr.gov.ru/vnim/quarantine/SznServicePort?wsdl
Автоматизация запуска АРМ Маршрутизатор
СФР пока не реализовал использование ПО в качестве службы
Автоматизация будет работать только если вы поставите все 4 галочки на настройки соединения
Скачайте готовый файл routersfr.ps1 и добавьте его в автозагрузку (перед этим вытаскивайте его из zip архива)
Либо вы самостоятельно можете создать файл routersfr.ps1
Откройте его в текстовом редакторе и впишите в него следующее содержимое:
# Запуск программы с явным стилем окна
$process = Start-Process "C:\FssRouter\fss_mo.exe" -WindowStyle Normal -PassThru
# Ожидание 10 секунд
Start-Sleep -Seconds 10
# Загрузка сборок
Add-Type -AssemblyName System.Windows.Forms
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class WinAPI {
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool IsWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool IsWindowVisible(IntPtr hWnd);
public const int SW_SHOW = 5;
public const int SW_RESTORE = 9;
public const int SW_SHOWNORMAL = 1;
}
"@
# Функция ожидания и активации окна
function Wait-AndActivateWindow {
param([string]$windowTitle, [int]$timeout = 30)
$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
while ($stopwatch.Elapsed.TotalSeconds -lt $timeout) {
$processes = Get-Process | Where-Object { $_.MainWindowTitle -like "*$windowTitle*" -and $_.MainWindowHandle -ne 0 }
foreach ($proc in $processes) {
$handle = $proc.MainWindowHandle
if ([WinAPI]::IsWindow($handle)) {
Write-Host "Найдено окно: $($proc.MainWindowTitle) (PID: $($proc.Id))"
# Показываем окно, если скрыто
if (-not [WinAPI]::IsWindowVisible($handle)) {
Write-Host "Окно скрыто, показываем..."
[WinAPI]::ShowWindow($handle, [WinAPI]::SW_SHOWNORMAL)
}
# Восстанавливаем и активируем
[WinAPI]::ShowWindow($handle, [WinAPI]::SW_RESTORE)
Start-Sleep -Milliseconds 500
[WinAPI]::SetForegroundWindow($handle)
Start-Sleep -Milliseconds 300
return $proc
}
}
Start-Sleep -Milliseconds 500
}
return $null
}
# Ждём и активируем окно программы
Write-Host "Ожидание окна 'Маршрутизатор'..."
$targetProcess = Wait-AndActivateWindow -windowTitle "Маршрутизатор"
if ($targetProcess) {
Write-Host "Окно активировано, начинаем отправку клавиш..."
Start-Sleep -Seconds 1
# Нажатие Tab 10 раз
for ($i = 1; $i -le 11; $i++) {
Write-Host "Tab #$i"
[System.Windows.Forms.SendKeys]::SendWait("{TAB}")
Start-Sleep -Seconds 2
}
# Двойное нажатие Enter
Write-Host "Enter #1"
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep -Seconds 2
Write-Host "Enter #2"
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Write-Host "Готово!"
} else {
Write-Host "ОШИБКА: Окно 'Маршрутизатор' не найдено в течение времени ожидания"
}