Что нового

[Автоматизация] Автоматизация запуска программы (ToolbarWindow32, в фоне)1000р

Ник_С

Новичок
Сообщения
9
Репутация
0
Добрый день, имеется задача запустить приложение и нажать на нем одну единственную кнопку.
У меня получилось это сделать только через курсор мышки. Необходимо нажатие программно...У меня получилось только таким образом.

$file='C:\Users\User\Desktop\abby\123.xls'
$sTitle = 'ABBYY Hot Folder' ;заголовок окна

$sFileExe = 'C:\Program Files\ABBYY FineReader 14' ;полный путь к exe-файлу
Run($sFileExe & "\HotFolder.exe")

WinWaitActive($sTitle)

MouseClick("left", 200, 75)
MouseClick("left", 200, 30)

For $i = 5 To 1 Step -1
$i=5
If FileExists($file) Then
Sleep (2000)
Send("!+{F4}",0)
$i = 1
EndIf
Next

Далее закрываю по необходимому условию через alt+f4. Подскажите как запустить данную программу в скрытом виде, и нажатие нужной кнопки не через курсор. Сама кнопка находится на тулбаре. Window info выдает информацию что это элемент ToolbarWindow32. Имеется Command ID кнопки которую хочу нажать = 41157. В информационном окне Window info он отображается на вкладке toolbar. И как закрыть окно приложения не через alt+f4.
 

mr.Gbabak

Осваивающий
Сообщения
246
Репутация
20
Re: [Автоматизация] Автоматизация запуска программы

команды Controlclik работают?
Закрыть процесс через ProcessClose ( "process" ), где process - это имя или PID процесса для завершения.
 
Автор
Н

Ник_С

Новичок
Сообщения
9
Репутация
0
Re: [Автоматизация] Автоматизация запуска программы

Пытался через controlclick, но видимо чего то не учел. У меня не получилось (
Буду благодарен помощи!
 

Tempo

Скриптер
Сообщения
560
Репутация
176
Re: [Автоматизация] Автоматизация запуска программы

Пробуйте
Код:
$file = 'C:\Users\User\Desktop\abby\123.xls'
$sTitle = 'ABBYY Hot Folder' ;заголовок окна

$sFileExe = 'C:\Program Files\ABBYY FineReader 14' ;полный путь к exe-файлу
Run($sFileExe & "\HotFolder.exe")

Local $hWnd = WinWaitActive($sTitle)
ControlCommand($hWnd, "", "[CLASS:ToolbarWindow32]", "SendCommandID", 41157) ;[CLASS:ToolbarWindow32; INSTANCE:??]

Do
	Sleep(10)
Until FileExists($file)
Sleep(2000)
WinClose($hWnd)
 
Автор
Н

Ник_С

Новичок
Сообщения
9
Репутация
0
Re: [Автоматизация] Автоматизация запуска программы

Спасибо за помощь. Но нажатие кнопки все равно не отрабатывает. В коде instance ставил после двоеточия значения 2. Не помогло. Выложу скриншоты WinIfo



Добавлено:
Сообщение автоматически объединено:
 

Вложения

Tempo

Скриптер
Сообщения
560
Репутация
176
Re: [Автоматизация] Автоматизация запуска программы

Ник_С [?]
коде instance ставил после двоеточия значения 2
Так?
Код:
$file = 'C:\Users\User\Desktop\abby\123.xls'
$sTitle = 'ABBYY Hot Folder' ;заголовок окна

$sFileExe = 'C:\Program Files\ABBYY FineReader 14' ;полный путь к exe-файлу
Run($sFileExe & "\HotFolder.exe")

Local $hWnd = WinWaitActive($sTitle)
ControlCommand($hWnd, "", "[CLASS:ToolbarWindow32; INSTANCE:2]", "SendCommandID", 41157)

Do
	Sleep(10)
Until FileExists($file)
Sleep(2000)
WinClose($hWnd)



Добавлено:
Сообщение автоматически объединено:

Вариант с ControlClick
Код:
#include <GUIToolbar.au3>
Local $sFile = "C:\Users\User\Desktop\abby\123.xls"
Local $sTitle = "[TITLE:ABBYY Hot Folder; CLASS:HotFolder14MainWindow]"
Local $iCommandID = 41157

Local $sPathExe = "C:\Program Files\ABBYY FineReader 14"
Run($sPathExe & "\HotFolder.exe")

Local $hWnd = WinWaitActive($sTitle)
Local $hToolbar = ControlGetHandle($hWnd, "", "[CLASS:ToolbarWindow32; INSTANCE:2]")
Local $tRect = _GUICtrlToolbar_GetButtonRectEx($hToolbar, $iCommandID)
Local $tPoint = _WinAPI_PointFromRect($tRect)
ControlClick($hWnd, "", $hToolbar, "left", 1, $tPoint.X, $tPoint.Y)

Do
	Sleep(10)
Until FileExists($sFile)
Sleep(2000)
WinClose($hWnd)
 
Автор
Н

Ник_С

Новичок
Сообщения
9
Репутация
0
Re: [Автоматизация] Автоматизация запуска программы

Спасибо тебе огромное Дружище! ! ! Кнопка нажимается программно)) Как я и хотел! ! ! :laugh:(Нижний код) Одна часть задачи работает, правда выход из программы не работает в этом коде, но это мелочь, это я смогу исправить. Теперь осталось подумать, можно ли сделать так что бы программа запускалась в фоновом режиме. :scratch: Буду рад помощи и предложениям! Всем кто откликнулся, тоже спасибо за помощь!
 
Автор
Н

Ник_С

Новичок
Сообщения
9
Репутация
0
Re: [Автоматизация] Автоматизация запуска программы (ToolbarWindow32, в фоне)

Немогу решить данную часть задачи, именно запуск в фоновом режиме и нажатие кнопки в этом же режиме.
Готов оплатить данную задачу (1000р)
P.s я так понимаю данная тема должна переместиться в другой раздел.
 
Автор
Н

Ник_С

Новичок
Сообщения
9
Репутация
0
Задача выполнена и тема закрыта. Огромное спасибо Tempo, его усилиями взлетел скрипт так как я и хотел изначально. Честно заработанная тысяча будет так же отправлена в ближайшее время) Работающий код выкладываю ниже

#include <GUIToolbar.au3>
Local $sFile = "C:\Users\User\Desktop\abby\123.xls"
Local $sTitle = "[TITLE:ABBYY Hot Folder; CLASS:HotFolder14MainWindow]"
Local $iCommandID = 41157

Local $sExe = "HotFolder.exe"
Local $sPathExe = @ProgramFilesDir & "\ABBYY FineReader 14"

Local $aProcList = ProcessList($sExe)
If Not @error Then
For $i = 1 To $aProcList[0][0]
ProcessClose($aProcList[$i][1])
Next
EndIf
Local $iPID = Run($sPathExe & "\" & $sExe, "", @SW_HIDE)

Local $hWnd = WinWait($sTitle), $hToolbar, $hListView
Do
Sleep(10)
$hListView = ControlGetHandle($hWnd, "", "[CLASS:SysListView32; INSTANCE:1]")
Until $hListView And ControlCommand($hWnd, "", $hListView, "IsEnabled")
Do
Sleep(10)
$hToolbar = ControlGetHandle($hWnd, "", "[CLASS:ToolbarWindow32; INSTANCE:2]")
Until $hToolbar And ControlCommand($hWnd, "", $hToolbar, "IsEnabled")
ControlListView($hWnd, "", $hListView, "Select", 0, ControlListView($hWnd, "", $hListView, "GetItemCount", 0) - 1)
Local $tRect = _GUICtrlToolbar_GetButtonRectEx($hToolbar, $iCommandID)
Local $tPoint = _WinAPI_PointFromRect($tRect)
ControlClick($hWnd, "", $hToolbar, "left", 1, $tPoint.X, $tPoint.Y)

Do
Sleep(10)
Until FileExists($sFile)
Sleep(2000)
ProcessClose($iPID)
 
Автор
Н

Ник_С

Новичок
Сообщения
9
Репутация
0
В предыдущем сообщение, см. выше


Добавлено:
Сообщение автоматически объединено:

Попрошу Tempo выложить, поставлю как лучшее сообщение!
 

Tempo

Скриптер
Сообщения
560
Репутация
176
Код:
#include <GUIToolbar.au3>
Local $sFile = "C:\Users\User\Desktop\abby\123.xls"
Local $sTitle = "[TITLE:ABBYY Hot Folder; CLASS:HotFolder14MainWindow]"
Local $iCommandID = 41157

Local $sExe = "HotFolder.exe"
Local $sPathExe = @ProgramFilesDir & "\ABBYY FineReader 14"

Local $aProcList = ProcessList($sExe)
If Not @error Then
    For $i = 1 To $aProcList[0][0]
        ProcessClose($aProcList[$i][1])
    Next
EndIf
Local $iPID = Run($sPathExe & "\" & $sExe, "", @SW_HIDE)

Local $hWnd = WinWait($sTitle), $hToolbar, $hListView
Do
    Sleep(10)
	$hListView = ControlGetHandle($hWnd, "", "[CLASS:SysListView32; INSTANCE:1]")
Until $hListView And ControlCommand($hWnd, "", $hListView, "IsEnabled")
Do
    Sleep(10)
    $hToolbar = ControlGetHandle($hWnd, "", "[CLASS:ToolbarWindow32; INSTANCE:2]")
Until $hToolbar And ControlCommand($hWnd, "", $hToolbar, "IsEnabled")
ControlListView($hWnd, "", $hListView, "Select", 0, ControlListView($hWnd, "", $hListView, "GetItemCount", 0) - 1)
Local $tRect = _GUICtrlToolbar_GetButtonRectEx($hToolbar, $iCommandID)
Local $tPoint = _WinAPI_PointFromRect($tRect)
ControlClick($hWnd, "", $hToolbar, "left", 1, $tPoint.X, $tPoint.Y)

Do
    Sleep(10)
Until FileExists($sFile)
Sleep(2000)
ProcessClose($iPID)
 
Верх