visors
12-07-2017, 17:37
Добрый вечер.
Помогите решить проблему.
Хотел заставить скрипт Автоит - открывать фото-файлы jpg - программой по-умолчанию и размещать его в определенном месте экрана (задав размеры окна этой программы).
По идее я хотел, чтобы программа открывала фото-файл, затем размещала его в определенной части монитора, затем устанавливала определенные размеры окна.
(Адрес папки с файлами C:\111111 )
(Координаты расположения программы: 100,200 (примерно левый верхний угол).
(Размеры окна (программы по-умолчанию) 200х150. )
Подскажите - как подправить код, чтобы он открывал файлы jpg - как я описал ?
#include <File.au3>
#include <WinAPIReg.au3>
#include <WinAPIProc.au3>
Local $sDir = 'C:\111111' ; Папка
Local $sFileType = '*.jpg' ; Расширение файла для поиска
Local $aPos[4] = [100, 200, 200, 150] ; Координаты окна программы
Local $hWnd, $aFiles, $sRunProgram, $iPID, $hTimer, $aProgWindows, $sRunFile
$aFiles = _FileListToArrayRec($sDir, $sFileType, $FLTA_FILES, $FLTAR_NORECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
If @error Then Exit -1
$sRunFile = $aFiles[0] > 1 ? $aFiles[Random(1, $aFiles[0], 1)] : $aFiles[1]
$sRunProgram = _WinAPI_AssocQueryString(StringRight($sRunFile, 4), $ASSOCSTR_EXECUTABLE) ; Редактор по умолчанию, ассоциированный в ОС с данным типом
If @error Or StringRight($sRunProgram, 4) = '.dll' Then Exit -2
$iPID = Run('"' & $sRunProgram & '" "' & $sRunFile & '"')
If Not $iPID Then Exit -3
$hTimer = TimerInit()
Do ;
$aProgWindows = _WinAPI_EnumProcessWindows($iPID)
If Not @error Then
For $i = 1 To $aProgWindows[0][0]
If WinActive($aProgWindows[$i][0]) Then
$hWnd = $aProgWindows[$i][0]
$aProgWindows = ''
ExitLoop 2
EndIf
Next
Sleep(200)
EndIf
Until TimerDiff($hTimer) > 5000 ; Ждем ~ 5 секунд
If Not $hWnd Then Exit -4
WinMove($hWnd, '', Default, Default, $aPos[2], $aPos[3])
If Not WinMove($hWnd, '', $aPos[0], $aPos[1]) Then Exit -5
Помогите решить проблему.
Хотел заставить скрипт Автоит - открывать фото-файлы jpg - программой по-умолчанию и размещать его в определенном месте экрана (задав размеры окна этой программы).
По идее я хотел, чтобы программа открывала фото-файл, затем размещала его в определенной части монитора, затем устанавливала определенные размеры окна.
(Адрес папки с файлами C:\111111 )
(Координаты расположения программы: 100,200 (примерно левый верхний угол).
(Размеры окна (программы по-умолчанию) 200х150. )
Подскажите - как подправить код, чтобы он открывал файлы jpg - как я описал ?
#include <File.au3>
#include <WinAPIReg.au3>
#include <WinAPIProc.au3>
Local $sDir = 'C:\111111' ; Папка
Local $sFileType = '*.jpg' ; Расширение файла для поиска
Local $aPos[4] = [100, 200, 200, 150] ; Координаты окна программы
Local $hWnd, $aFiles, $sRunProgram, $iPID, $hTimer, $aProgWindows, $sRunFile
$aFiles = _FileListToArrayRec($sDir, $sFileType, $FLTA_FILES, $FLTAR_NORECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
If @error Then Exit -1
$sRunFile = $aFiles[0] > 1 ? $aFiles[Random(1, $aFiles[0], 1)] : $aFiles[1]
$sRunProgram = _WinAPI_AssocQueryString(StringRight($sRunFile, 4), $ASSOCSTR_EXECUTABLE) ; Редактор по умолчанию, ассоциированный в ОС с данным типом
If @error Or StringRight($sRunProgram, 4) = '.dll' Then Exit -2
$iPID = Run('"' & $sRunProgram & '" "' & $sRunFile & '"')
If Not $iPID Then Exit -3
$hTimer = TimerInit()
Do ;
$aProgWindows = _WinAPI_EnumProcessWindows($iPID)
If Not @error Then
For $i = 1 To $aProgWindows[0][0]
If WinActive($aProgWindows[$i][0]) Then
$hWnd = $aProgWindows[$i][0]
$aProgWindows = ''
ExitLoop 2
EndIf
Next
Sleep(200)
EndIf
Until TimerDiff($hTimer) > 5000 ; Ждем ~ 5 секунд
If Not $hWnd Then Exit -4
WinMove($hWnd, '', Default, Default, $aPos[2], $aPos[3])
If Not WinMove($hWnd, '', $aPos[0], $aPos[1]) Then Exit -5