Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;_1CV83.au3
- #include-once
- #include <Array.au3>
- #include <file.au3>
- #Include <Log.au3>
- ;~ #include "ExcelReadCell.au3"
- ;~ #include "ExcelCOM_UDF.au3"
- ;~ всплывающие сообщения 1с как обработать
- ;~ http://autoit-script.ru/index.php?topic=4926.0
- ;~ #include "_ScriptingDictionary.au3"
- #include <Date.au3>
- ;~ #include <WinAPISys.au3>
- ;~ #include "fFind(.au3"
- Func VersionEOD()
- $v = " v. 1.1.0.0."
- return $v
- EndFunc
- Func Start1C($1C,$1CpathStart, $Param,$hLog)
- ;~ Запуск 1с с параметрами и активация окна
- If Not WinExists($1C,"")then
- ;~ _Log_Report($hLog, 'Запуск 1С' , 6)
- _LogAndPrintDebug($hLog, 'Запуск 1С-' & $1C,6 )
- ShellExecute ($1CpathStart, $Param)
- EndIf
- ; $title ="Помилка сценаріїв"
- ;WinWait($title,"",60)
- ;_myWindowClose($Title,"",3)
- ;_LogAndPrintDebug($hLog, 'Закрыть-' & $Title,6 )
- ;WinWait($title,"",60)
- ;_activatewindow($Title,"",0,1)
- ;_myWindowClose($Title,"",3)
- ;~ WinWait($1C)
- ;_LogAndPrintDebug($hLog, 'Закрыть-' & $Title,6 )
- ;~ WinActivate($1C, "")
- ;~ _LogAndPrintDebug($hLog, 'Закрыть-' & $Title,6 )
- If WinExists($1C) Then
- WinActivate($1C)
- _LogAndPrintDebug($hLog, 'Проверить-' & $1C,6 )
- EndIf
- WinWait($1C)
- _activatewindow($1C,"",0,1)
- _LogAndPrintDebug($hLog, 'Активировать-' & $1C,6 )
- EndFunc
- ;~ $WinTitleMatchMode
- ;~ 1 = сопоставление с началом
- ;~ 2 = сопоставление с произвольным фрагментом
- ;~ 3 = точное сопоставление
- ;~ 4 = пользовательский режим сопоставления
- func _activatewindow($title, $text,$sleep,$WinTitleMatchMode)
- _LogAndPrintDebug($hLog, 'Start _activatewindow-' & $title,6 )
- Opt("WinTitleMatchMode", $WinTitleMatchMode)
- WinWait($title,$text)
- _DebugPrint("WinWait" & $title)
- If Not WinActive($title,$text) Then WinActivate($title,$text)
- WinWaitActive($title,$text)
- Sleep($sleep)
- _DebugPrint($title)
- _LogAndPrintDebug($hLog, 'stop _activatewindow-' & $title,6 )
- EndFunc
- ;~ ******************************************************************
- ;~ _WindowEO.....Title
- ;~ $eod,$LinkName Условные постоянные
- ;~ $Login,$typeTitle Условные переменнные
- ;~ **********************************************************************
- Func _WindowEOFullTitle($eod,$Login,$typeTitle,$LinkName)
- ;~ E0D Звенигородське ЛГ.Приймання лісопродукції (універсальний звіт) - ЛІАЦ
- $FullTitle=$eod & " " & $Login & VersionEOD() & $typeTitle & " - " & $LinkName
- return $FullTitle
- EndFunc
- Func _WindowEOAppTitle($eod,$Login,$LinkName)
- ;~ E0D Звенигородське ЛГ.ЛІАЦ
- ;~ E0D Звенигородське ЛГ v. 1.1.0.0.ЛІАЦ
- $v = VersionEOD
- $AppTitle=$eod & " " & $Login & VersionEOD() & $LinkName
- return $AppTitle
- EndFunc
- Func _WindowEOSmallTitle($eod,$Login)
- ;~ E0D Звенигородське ЛГ
- $SmallTitle=$eod & " " & $Login
- _DebugPrint($SmallTitle )
- return $SmallTitle
- EndFunc
- Func _WindowEOTitle($typeTitle)
- $FullTitle=$eod & " " & $Login & VersionEOD() & $typeTitle & " - " & $LinkName
- return $FullTitle
- EndFunc
- ;~ ******************************************************************
- Func _myWindowClose($Title,$text,$WinTitleMatchMode)
- _DebugPrint("Start _myWindowClose" )
- Opt("WinTitleMatchMode", $WinTitleMatchMode)
- $handle = WinGetHandle($Title,$text)
- If WinExists($handle,$text) Then
- WinClose($handle,$text)
- EndIf
- _DebugPrint("stop _myWindowClose" )
- EndFunc
- Func _myWindowCloseNoApp($Title,$pattern,$WinTitleMatchMode)
- Opt("WinTitleMatchMode", $WinTitleMatchMode)
- $var = WinList()
- _DebugPrint("Start _myWindowCloseNoApp" )
- _DebugPrint("$pattern=" & $pattern )
- ;~ $handle = WinGetHandle($Title,$text)
- ;~ If WinExists($handle,$text) Then
- ;~ WinClose($handle,$text)
- ;~
- ;~ EndIf
- For $i = 1 to $var[0][0]
- ; Only display visble windows that have a title
- If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
- $z=StringInStr($var[$i][0],$pattern)
- if $z then
- $q=StringCompare($var[$i][0] , $Title )
- ;~ _DebugPrint("Open=" & $var[$i][0] & "-" & $q & "-" & $pattern)
- if not (StringCompare($var[$i][0] , $Title )= 0) then
- _DebugPrint($var[$i][0] & "-" & $z & "-" & $Title )
- WinClose($var[$i][1],$text)
- endif
- endif
- EndIf
- Next
- _DebugPrint("Stop _myWindowCloseNoApp" )
- EndFunc
- Func _myWindowCloseAllModal($hLog,$ExcelFullPath,$ListObjectName,$ListColumsName)
- ;~ Закрывает все модальные окна по заголовкам в зависимости от языка интерфейса
- ;~ $ExcelFullPath-может быть как путем к книге так и ссылкой на саму книгу
- ;~ $ListObjectName-Имя таблицы с заголовками("modal")
- ;~ $ListColumsName-Имя столбца для выбора значения($mova.value)
- _DebugPrint("Start _myWindowCloseAllModal" )
- $ListObjectClose=_ListObjectGet($hLog,$ExcelFullPath,$ListObjectName)
- $ListColumsClose=_ListObjectListColumn($hLog,$ListObjectClose,$ListColumsName)
- for $closetitle in $ListColumsClose.range.cells
- _myWindowClose($closetitle,$text,4)
- next
- _DebugPrint("Start _myWindowCloseAllModal" )
- EndFunc
- Func _myWindowCloseAllModalADO($hLog,$oConnection,$ListColumsName)
- ;~ Закрывает все модальные окна по заголовкам в зависимости от языка интерфейса
- ;~ $ExcelFullPath-может быть как путем к книге так и ссылкой на саму книгу
- ;~ $ListObjectName-Имя таблицы с заголовками("modal")
- ;~ $ListColumsName-Имя столбца для выбора значения($mova.value)
- _DebugPrint("Start _myWindowCloseAllModalADO" )
- $sQUERYmodal="select " & $ListColumsName & " from [" & "modal" & "$]"
- _DebugPrint("$sQUERYmodal" & $sQUERYmodal )
- $oRecordset = _ADO_Execute($oConnection, $sQUERYmodal)
- _DebugPrint("__ADO_Recordset_IsValid" & __ADO_Recordset_IsValid($oRecordset) )
- ;~ __ADO_Recordset_IsValid($oRecordset)
- ;~ _ADO_Recordset_Display($oRecordset)
- $oRecordset.moveFirst()
- ;~ MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$oRecordset.moveFirst()' & @lf & @lf & 'Return:' & @lf &$oRecordset.moveFirst()) ;### Debug MSGBOX
- ;~ With $oRecordset
- Do
- $VAR= $oRecordset.Fields($ListColumsName).value
- _myWindowClose($VAR,"",4)
- if $oRecordset.EOF <> True then $oRecordset.MoveNext
- Until $oRecordset.EOF = True
- ;~ $ListObjectClose=_ListObjectGet($hLog,$ExcelFullPath,$ListObjectName)
- ;~ $ListColumsClose=_ListObjectListColumn($hLog,$ListObjectClose,$ListColumsName)
- ;~ for $closetitle in $ListColumsClose.range.cells
- ;~ _myWindowClose($closetitle,$text,4)
- ;~ next
- _DebugPrint("Stop _myWindowCloseAllModalADO" )
- EndFunc
- Func _myWindowCloseAll()
- _LogAndPrintDebug($hLog, "Закрытие всех ненужных окон" , 6)
- _myWindowClose($1CErrorTitle,$text,4)
- ;~ _myWindowCloseAllModal($hLog,$ExcelFullPath,"modal",$mova)
- _LogAndPrintDebug($hLog, $mova , 6)
- _myWindowCloseAllModalADO($hLog,$oConnection,$mova)
- _myWindowCloseNoApp($AppTitle,$SmallTitle,1)
- EndFunc
- ;~ Язык окон
- func _mova_goto_link($mova)
- If $mova="EN" then $title="Go to Link"
- If $mova="RU" then $title="Переход по ссылке"
- If $mova="UA" then $title="Перехід за посиланням"
- return $title
- EndFunc
- func _mova_period($mova)
- If $mova="EN" then $title="Go to Link"
- If $mova="RU" then $title="Период"
- If $mova="UA" then $title="Період"
- return $title
- EndFunc
- func _mova_find($mova)
- If $mova="EN" then $title=""
- If $mova="RU" then $title="Найти"
- If $mova="UA" then $title="Знайти"
- return $title
- EndFunc
- func _mova_Get_file($mova)
- If $mova="EN" then $title="Get file"
- If $mova="RU" then $title="Получить файл"
- If $mova="UA" then $title="Одержати файл"
- return $title
- EndFunc
- func _mova_Get_Link($mova)
- If $mova="EN" then $title=""
- If $mova="RU" then $title=""
- If $mova="UA" then $title="Одержання посилання"
- return $title
- EndFunc
- func _mova_Save_file($mova)
- If $mova="EN" then $title="Save file"
- If $mova="RU" then $title="Сохранить файл"
- If $mova="UA" then $title="Зберегти файл"
- return $title
- EndFunc
- func _mova_Save_Listfile($mova)
- If $mova="EN" then $title="Save file"
- If $mova="RU" then $title="Сохранить файл"
- If $mova="UA" then $title="Збереження файлу"
- return $title
- EndFunc
- func _gotolink($link,$linktext,$mova, $text,$sleep,$WinTitleMatchMode)
- ;~ e1cib/navigationpoint/desktop
- Send("{SHIFTDOWN}{F11}{SHIFTUP}")
- $title= _mova_goto_link($mova)
- _LogAndPrintDebug($hLog, '$title-' & $title,6 )
- _activatewindow($title,$text,0,$WinTitleMatchMode)
- Send($link)
- $f=Chr(35)
- Send($f,1)
- Send($linktext)
- Send("{ENTER}")
- Sleep($sleep)
- EndFunc
- func _gotolinkpr($linktext,$mova, $text,$sleep,$WinTitleMatchMode)
- ;~ e1cib/navigationpoint/desktop
- Send("{SHIFTDOWN}{F11}{SHIFTUP}")
- $title= _mova_goto_link($mova)
- _LogAndPrintDebug($hLog, '$title-' & $title,6 )
- _activatewindow($title,$text,0,$WinTitleMatchMode)
- ;~ Send($link)
- ;~ $f=Chr(35)
- ;~ Send($f,1)
- Send($linktext)
- Send("{ENTER}")
- Sleep($sleep)
- EndFunc
- func _ClikComboBoxList($myDown,$myTAB,$sleep)
- ; Позволяет выбрать позицию списка ComboBox
- Send("{DOWN}")
- Send("{Home}")
- $D="{DOWN " & $myDown & "}"
- Send($D)
- Send("{ENTER}")
- Send("{TAB " & $myTAB & "}")
- Sleep($sleep)
- EndFunc
- func _ClikListBoxList($titlemodal,$text,$textSend,$CLASS,$INSListBox,$sleep)
- ; Позволяет выбрать позицию списка ListBox
- _DebugPrint('Активируем окно-' & $titlemodal)
- _activatewindow($titlemodal, $text,100,1)
- _DebugPrint('Фокус в лист бокс' & $titlemodal)
- _ControlFocusINSTANCE($titlemodal, "",$CLASS,$INSListBox)
- ;~ Переходим к позиции
- ;~ $textSend="{END}"
- _SendText($textSend,0,100)
- ;~ Подтверждаем выбор
- _SendText("{ENTER}",0,100)
- EndFunc
- func _ClikComboBoxListCustomPeriod($CustomPeriodStart,$CustomPeriodEnd,$PeriodTitle,$typeTitleZ,$myTAB,$sleep)
- ; Позволяет выбрать позицию списка ComboBox для произвольного периода
- ;~ _ClikComboBoxListCustomPeriod($CustomPeriodStart,$CustomPeriodEnd,"Период","Зведений щоденник",$myTAB,$sleep)
- ;~ переход на начало списка
- _myWindowClose($PeriodTitle,"",1)
- Send("{DOWN}")
- Send("{Home}")
- Send("{ENTER}")
- Sleep($sleep)
- _LogAndPrintDebug($hLog, '_myWindowClose' & $PeriodTitle,6 )
- ;~ $WT= _WindowEOFullTitle($eod,$Login,$typeTitleP,$LinkName)
- ;~ MsgBox(4096, "$typeTitleP", $WT)
- _activatewindow($PeriodTitle,"",0,1)
- _LogAndPrintDebug($hLog, '_activatewindow($PeriodTitle,"",0,1)' & $PeriodTitle,6 )
- _SendDateVba($CustomPeriodStart,1,500)
- _SendDateVba($CustomPeriodEnd,0,500)
- ;~ Нажатие кнопки ОК на форме $typeTitleP
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- ;~ $WT=_WindowEOFullTitle($eod,$Login,$typeTitleZ,$LinkName)
- _activatewindow($typeTitleZ,"",0,1)
- if $myTAB<>0 then Send("{TAB " & $myTAB & "}")
- Sleep($sleep)
- EndFunc
- func _SendCTRLENTER($sleep)
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- Sleep($sleep)
- EndFunc
- func _SendCTRLPlus ($Plus, $sleep)
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- Sleep($sleep)
- EndFunc
- func _SendText($myText,$myTAB,$sleep)
- ; Позволяет вставить в техтовое поле значение и после этого перейти к на указаное количество таб
- Send($myText)
- if $myTAB<>0 then Send("{TAB " & $myTAB & "}")
- Sleep($sleep)
- EndFunc
- func _SendTabEnter($myTAB,$sleep)
- ; Позволяет вставить в техтовое поле значение и после этого перейти к на указаное количество таб
- Send("{TAB " & $myTAB & "}{ENTER}")
- Sleep($sleep)
- EndFunc
- func _SendTab($myTAB,$sleep)
- ; Позволяет вставить в техтовое поле значение и после этого перейти к на указаное количество таб
- Send("{TAB " & $myTAB & "}")
- Sleep($sleep)
- EndFunc
- func _SendESC($sleep)
- ; Позволяет вставить в техтовое поле значение и после этого перейти к на указаное количество таб
- Send("{ESC}")
- Sleep($sleep)
- EndFunc
- Func _SendZnach($Arr,$SplitNumb,$SplitLeters = Default)
- If $SplitLeters = Default Then $SplitLeters = " "
- ;~ MsgBox(0,$aArray[$i][$iColumnsLK],"",0)
- $r=StringSplit ( $Arr, $SplitLeters )
- $f=$r[$SplitNumb]
- return $f
- endfunc
- Func CreateLiasShortcut($sFilePath,$Login,$Password,$hLog)
- $Param=" /WS" & $LinkBase & ' /N"' & $Login & '" /P' & $Password
- FileCreateShortcut($1CpathStart, $sFilePath,$1Cpath,$Param,$LinkBase,$1CpathStart)
- _DebugPrint('Создание ярлыка для запуска конфигурации 1С' )
- _Log_Report($hLog, 'Создание ярлыка для запуска конфигурации 1С' , 6)
- ; Retrieve details about the shortcut.
- Local $aDetails = FileGetShortcut($sFilePath)
- EndFunc
- Func ReadRowsArray($PathWorkBooks,$WorkBooksTitle,$iRows,$nRows,$iColumns,$sleep)
- local $oWorkbook
- ;~ Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
- _DebugPrint("ReadRowsArray start")
- _DebugPrint("_InitWorkbook")
- $oWorkbook= _InitWorkbook($PathWorkBooks)
- ; чтение параметра
- _DebugPrint("чтение параметра")
- Dim $aArray[$iRows + 1][$iColumns + 1]
- For $i = $nRows To $iRows
- For $j = 1 To $iColumns
- $aArray[$i-$nRows][$j] = $oWorkbook.Activesheet.Cells($i, $j).Value
- Next
- Next
- _DebugPrint("ReadRowsArray close")
- ;~ $oWorkbook.close
- ;~ $oExcel.quit
- return $aArray
- EndFunc
- ;Sleep(5000)
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _GetDateVba
- ; Description ...:
- ; Syntax ........: _GetDateVba($DATE, $Type)
- ; Parameters ....: $DATE - A binary value.
- ; $Type - A dll struct value.day: "dd" ,motht:"mm", year:"yyyy" or "yy"
- ; Return values .: None
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================
- Func _GetDateVba($DATE,$Type);a valid date format
- _DebugPrint("Start _GetDateVba" )
- ;If _DateIsValid($DATE) Then
- $RESULT = StringRegExp($DATE,"\d\d[/.]\d\d[/.]\d\d\d\d",3)
- $RESULT=StringSplit($DATE,".")
- If not @error=0 Then Exit ; Проверка ошибки ОБЯЗАТЕЛЬНА.
- ;~ _ArrayDisplay($RESULT, "флаг=3")
- ;Return $RESULT
- if $Type="dd" then $zn=$RESULT[1]
- if $Type="mm" then $zn=$RESULT[2]
- if $Type="yyyy" then $zn=$RESULT[3]
- if $Type="yy" then $zn=StringTrimLeft($RESULT[3],2)
- _DebugPrint("Stop _GetDateVba" & $zn )
- Return $zn
- EndFunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _SetDateAutoIt
- ; Description ...:
- ; Syntax ........: _SetDateAutoIt($DATE)
- ; Parameters ....: $DATE - A binary value.
- ; Return values .: None
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================EndFunc
- Func _SetDateAutoIt($DATE)
- ;~ Посмотреть здесь
- ;~ https://stackoverflow.com/questions/15491894/regex-to-validate-date-format-dd-mm-yyyy
- ;~ VBA- dd.mm.yyyy
- ;~Autoit-yyyy/mm/dd
- $DATE=_GetDateVba($DATE,'yyyy')&"/"&_GetDateVba($DATE,'mm')&"/"&_GetDateVba($DATE,'dd')
- if not _DateIsValid($DATES) Then
- Return 0
- exit
- EndIf
- Return $DATEAI
- EndFunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _SetDateVBA
- ; Description ...:
- ; Syntax ........: _SetDateVBA($Period, $Sleep)
- ; Parameters ....: $Period - A pointer value.
- ; $Sleep - A string value.
- ; Return values .: None
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================
- func _SetDateVBA($Period,$Sleep)
- Send("{LEFT}")
- $data=_GetDateVba($Period,"dd")
- _LogAndPrintDebug($hLog, "dd" & $data , 6)
- Sleep($Sleep)
- _SendText($data,0,$Sleep)
- $data=_GetDateVba($Period,"mm")
- _LogAndPrintDebug($hLog, "mm" & $data , 6)
- _SendText($data,0,$Sleep)
- $data=_GetDateVba($Period,"yyyy")
- _LogAndPrintDebug($hLog, "yyyy" & $data , 6)
- _SendText($data,0,$Sleep)
- endfun ;=>_SetDateVBA
- EndFunc
- func _SendDateVba($DATE,$myTAB,$sleep)
- _DebugPrint("Start _SendDateVba" )
- $data=_GetDateVba($DATE,"dd") & _GetDateVba($DATE,"mm") &_GetDateVba($DATE,"yyyy")
- _SendText($data,$myTAB,$sleep)
- EndFunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: todayVBA
- ; Description ...: Возвращает сегодняшнюю дату в форме дд.мм.гггг
- ; Syntax ........: todayVBA()
- ; Parameters ....: None
- ; Return values .: Возвращает сегодняшнюю дату в форме дд.мм.гггг
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================endFunc
- Func todayVBA() ; Возвращает сегодняшнюю дату в форме дд.мм.гггг
- Return (@MDAY & "." & @MON & "." & @YEAR)
- EndFunc
- Func NOWVBA() ; Возвращает сегодняшнюю дату в форме дд.мм.гггг
- Return (@MDAY & "." & @MON & "." & @YEAR )
- EndFunc
- func FormatZvit($QFind,$title,$titleListBox,$text,$INSBooton,$INSTextBox,$INSListBox)
- _DebugPrint('Start FormatZvit' & $QFind )
- $r=0
- _ClikCommandBootonInstance($title, "","V8FormElement",$INSBooton)
- _ClikListBoxList($titleListBox,$text,"{END}","V8Grid",$INSListBox,100)
- $QEND=ocClipGet($title,$text,3,"V8FormElement",$INSTextBox,100)
- ;~ _DebugPrint('Получено-$QEND-' & $QEND )
- _DebugPrint('Получить-$QStart для-' & $INSListBox )
- _ClikCommandBootonInstance($title, "","V8FormElement",$INSBooton)
- _ClikListBoxList($titleListBox,$text,"{Home}","V8Grid",$INSListBox,100)
- $QStart=ocClipGet($title,$text,3,"V8FormElement",$INSTextBox,100)
- $k=0
- $QTek=$QStart
- Do
- $textSend="{Home}"
- _DebugPrint( $k )
- if $k <> 0 then
- $textSend="{DOWN " & $k & "}"
- Else
- $textSend="{Home}"
- endif
- _ClikCommandBootonInstance($title, "","V8FormElement",$INSBooton)
- _ClikListBoxList($titleListBox,$text,$textSend,"V8Grid",$INSListBox,100)
- $QTek=ocClipGet($title,$text,3,"V8FormElement",$INSTextBox,100)
- ;~ _DebugPrint(" Текущий $QTek-" & $QTek)
- ;_DebugPrint( $QDOWN )
- sleep(3000)
- if $QFind=$QTek then
- _DebugPrint('Получено-$QTek' & $QTek )
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- $r=1
- ExitLoop
- endif
- sleep(3000)
- $textSend="{Home}"
- _ClikCommandBootonInstance($title, "","V8FormElement",$INSBooton)
- _ClikListBoxList($titleListBox,$text,$textSend,"V8Grid",$INSListBox,100)
- $k=$k+1
- Until $QEND=$QTek
- return $r
- endfunc
- Func _ClikCommandBootonInstance($title, $text, $CLASS,$INSBooton)
- _DebugPrint('Сформировать-' & $INSBooton )
- _ControlFocusINSTANCE($title, "","V8FormElement",$INSBooton)
- Send("{ENTER}")
- EndFunc
- Func ocClipGet($title,$text,$myTAB,$CLASS,$INSTextBox,$sleep)
- ;~ ControlFocus($title, "", "[CLASS:V8FormElement; INSTANCE:" & $INSBooton & "]")
- ;~ $myTAB=3
- ;~ Send("{ENTER}")
- ;~ sleep(1000)
- ;~ WinWait($titlemodal,$text)
- ;~ If Not WinActive($titlemodal,$text) Then WinActivate($titlemodal,$text)
- ;~ WinWaitActive($titlemodal,$text)
- ;~ Send($textSend)
- ;~ Send("{ENTER}")
- ;~ sleep(1000)
- WinWait($title,$text)
- If Not WinActive($title,$text) Then WinActivate($title,$text)
- WinWaitActive($title,$text)
- ;~ Эпуляция вызова контексного меню и копировать
- _ControlFocusINSTANCE($title, $text, $CLASS,$INSTextBox)
- $pos = MouseGetPos()
- $var=PixelGetColor ( $pos[0] , $pos[1] )
- _LogAndPrintDebug($hLog, "The decmial color is" & $var,6 )
- ;~ MsgBox(0, $var, $pos[0] & "," & $pos[1])
- _ControlFocusINSTANCE($title, "", "V8Grid",2)
- _SendText("+{F10}",0,1000)
- ;~ _SendText("{RIGHT}",0,1000)
- ;~ ControlClick($title, "", _ClassInstance($CLASS,$INSTextBox), "right")
- Sleep(3000)
- Send("{DOWN " & $myTAB & "}{ENTER}")
- $QClipGet=ClipGet ( )
- Sleep($sleep)
- return $QClipGet
- EndFunc
- func _ControlSendINSTANCE($title, $text, $CLASS,$INS,$SendText)
- ControlSend($TitleFullFind, "", _ClassInstance($CLASS,$INS), $SendText)
- EndFunc
- func _ClassInstance($CLASS,$INS)
- $ClIns="[CLASS:" & $CLASS & "; INSTANCE:" & $INS & "]"
- return $ClIns
- EndFunc
- func _ControlFocusINSTANCE($title, $text, $CLASS,$INS)
- ControlFocus($title, $text, _ClassInstance($CLASS,$INS))
- Sleep(200)
- EndFunc
- Func _fileExistAndOpen($hLog,$FileFullPath,$msg=False)
- local $z
- $file = FileOpen($FileFullPath, 0)
- ; Check if file opened for reading OK
- If $file = -1 Then
- if $msg then MsgBox(0, "Ошибка", "Файл по пути " & $FileFullPath & " не найден")
- _Log_Report($hLog, "Ошибка! Файл по пути " & $FileFullPath & " не найден", 6)
- $z=-1
- ;~ _Log_Close($hLog)
- return $z
- Exit
- EndIf
- FileClose($file)
- _Log_Report($hLog, "Файл по пути " & $FileFullPath & " найден", 6)
- ConsoleWrite("Файл по пути " & $FileFullPath & " найден" & @CRLF)
- $z=0
- ;~ _Log_Close($hLog)
- return $z
- EndFunc
- Func _WorkbookCloseEndDelete($hLog,$FullPath)
- _LogAndPrintDebug($hLog, "Start _WorkbookCloseEndDelete:-" & "(" & $FullPath & ")" , 6)
- ;~ **************************************************
- ;Удалим файл звита
- If FileExists($FullPath) Then
- _LogAndPrintDebug($hLog, "Файл есть _WorkbookCloseEndDelete:-" & "(" & $FullPath & ")" , 6)
- ;~ _DebugPrint("FileExists($FullPath)" & $FullPath & "-" & FileExists($FullPath))
- $R=_myIsOpen($FullPath)
- ;~ _DebugPrint("_myIsOpen-" & $FullPath & "-" & $R)
- if $R then
- _LogAndPrintDebug($hLog, "Файл есть и открыт _WorkbookCloseEndDelete:-" & "(" & $FullPath & ")" , 6)
- $oWorkbook=_InitWorkbook($FullPath)
- if @error then _DebugPrint("error_InitWorkbook" & @error)
- _ExcelBookClose($oWorkbook)
- if @error then
- _DebugPrint("error_ExcelBookClose" & @error)
- else
- _DebugPrint('файл Закрыт')
- endif
- endif
- $q= FileDelete($FullPath)
- if $q then
- _DebugPrint('файл удален')
- return 1
- else
- _DebugPrint("Невозможно удалить файл " & $q & "Возможно он открыт в другой программе")
- return 0
- EndIf
- else
- return 1
- EndIf
- _LogAndPrintDebug($hLog, "Stop[ _WorkbookCloseEndDelete:-" & "(" & $FullPath & ")" , 6)
- EndFunc
- Func _WorkbookCloseEndDelete1($FullPath)
- ;~ **************************************************
- ;Удалим файл звита
- If FileExists($FullPath) Then
- $q= FileDelete($FullPath)
- if $q=0 then
- $R=_myIsOpen($FullPath)
- if $R then
- $oWorkbook=_ExcelAttach($FullPath)
- _DebugPrint(ObjName($oWorkbook,1))
- _ExcelBookClose($oWorkbook)
- $q= FileDelete($FullPath)
- if $q=0 then
- MsgBox(4096, "Test", "Невозможно удалить файл " & $q & "Возможно он открыт в другой программе", 10)
- return 0
- exit
- endif
- else
- MsgBox(4096, "Test", "Невозможно удалить файл " & $q & "Возможно он открыт в другой программе", 10)
- return 0
- exit
- endif
- EndIf
- EndIf
- return 1
- EndFunc
- ;~ Переход к первому элементу Выбор периода
- Func _GetNetworkConnect($hLog)
- Local Const $NETWORK_ALIVE_LAN = 0x1 ;net card connection
- Local Const $NETWORK_ALIVE_WAN = 0x2 ;RAS (internet) connection
- Local Const $NETWORK_ALIVE_AOL = 0x4 ;AOL
- Local $aRet, $iResult
- $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)
- If BitAND($aRet[1], $NETWORK_ALIVE_LAN) Then $iResult &= "LAN connected" & @LF
- If BitAND($aRet[1], $NETWORK_ALIVE_WAN) Then $iResult &= "WAN connected" & @LF
- If BitAND($aRet[1], $NETWORK_ALIVE_AOL) Then $iResult &= "AOL connected" & @LF
- If $iResult Then
- ;~ MsgBox(64, "Connections", $connect)
- ConsoleWrite($iResult & @CRLF)
- _Log_Report($hLog, "Соединения с интернетом присутствует" & @CRLF , 6)
- Else
- ConsoleWrite( "Нет соединения с интернетом" & @CRLF)
- _Log_Report($hLog, "Ошибка! Нет соединения с интернетом " , 6)
- Exit
- EndIf
- Return $iResult
- EndFunc
- Func _SaveReportAsExcel($Title,$ControlFocusINSTANCE,$myTAB,$mova,$PathWorkBooks)
- _LogAndPrintDebug($hLog, "start _SaveReportAsExcel-" & $PathWorkBooks, 6)
- if FileExists($PathWorkBooks)=1 then
- _LogAndPrintDebug($hLog, "FileDelete " & $PathWorkBooks & "Завершен" , 1)
- FileDelete($PathWorkBooks)
- EndIf
- ;~ ControlFocus($ZVShodens, "", "[CLASS:V8FormElement; INSTANCE:16]")
- _ControlFocusINSTANCE($Title, "","V8FormElement",$ControlFocusINSTANCE)
- ;*****************************************
- ;переход до Сохранить в Excel
- ;переход до в Excel
- _SendTabEnter($myTAB,5000)
- _activatewindow(_mova_Get_file($mova),"",1000,1)
- ;переход до Сохранить
- _SendTabEnter(3,5000)
- _activatewindow(_mova_Save_file($mova),"",1000,1)
- ;Вводим имя файла
- _SendText($PathWorkBooks,0,500)
- ;потверждаем имя
- _SendTabEnter(2,2000)
- _SendESC(2000)
- ;*****************************************
- _DebugPrint( "Отчет сохранен" )
- _LogAndPrintDebug($hLog, "stop _SaveReportAsExcel" , 6)
- EndFunc
- ;~ Func _LogAndPrintDebug($hLog,$Text,$Steep)
- ;~ _Log_Report($hLog, $Text, $Steep)
- ;~ _DebugPrint($Text)
- ;~
- ;~ EndFunc
- ;~ Func IsVisible($handle)
- ;~ If BitAnd( WinGetState($handle), 2 ) Then
- ;~ Return 1
- ;~ Else
- ;~ Return 0
- ;~ EndIf
- ;~ EndFunc
- Func _WindowEOFind($hLog,$TitleFullFind,$FindString,$ColumnNameFind,$AppTitleFullString="",$FindControlCls="",$FindControlIns="")
- ;~ $hLog,$TitleFullFind,$zn.value,$GrupString,$AppTitleFullString,$FindControlCls,$FindControlIns
- ;~ ***********************************************
- ;~ Работа с формой найти
- _LogAndPrintDebug($hLog,"Начало работы с формой найти: Ищем-" & $FindString & " в " & $ColumnNameFind,6 )
- $QEND=""
- ClipPut("")
- _SendText("{CTRLDOWN}F{CTRLUP}",0,500)
- ;~ Где ищем
- _activatewindow($TitleFullFind,"",0,1)
- _ControlFocusINSTANCE($TitleFullFind, "","V8FormElement",15)
- _ControlSendINSTANCE($TitleFullFind, "","V8FormElement",15, $ColumnNameFind)
- sleep(500)
- Send("{DOWN}{ENTER}")
- ;~ Что ищем
- _ControlFocusINSTANCE($TitleFullFind, "","V8FormElement",17)
- sleep(500)
- _ControlSendINSTANCE($TitleFullFind, "","V8FormElement",17, $FindString)
- ;~ Подтверждаем
- _activatewindow($TitleFullFind,"",0,1)
- sleep(500)
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- ;~ ***********************************************
- if $AppTitleFullString<>"" then
- _LogAndPrintDebug($hLog,"Проверка найденого значения-" & $FindString ,6 )
- sleep(10000)
- _SendText("{ENTER}",0,500)
- ;~ $QEND=_CtrlC($hLog,3,$AppTitleFullString,$FindControlCls,$FindControlIns)
- $QEND=WinWait($AppTitleFullString, "", 10)
- _LogAndPrintDebug($hLog,"Значение ожидания окна-" & $AppTitleFullString & "-" & $QEND ,6 )
- _SendText("{ESC}",0,500)
- Return $QEND
- endif
- EndFunc
- Func _CtrlC($hLog,$myTAB,$AppTitleFullString,$FindControlCls,$FindControlIns)
- ;~ Эмуляция Ctrl+C через клавишу контексного меню
- ;~ $myTAB=3
- ;~ При ошибке значение @error устанавливается равным 1 (буфер пуст), 2 (буфер не содержит текст), 3 или 4 (доступ к буферу обмена отсуствует), иначе 0
- _LogAndPrintDebug($hLog,"Значение буфера перед" & ClipGet () ,6 )
- _activatewindow($AppTitleFullString,"",0,1)
- _ControlFocusINSTANCE($AppTitleFullString, "",$FindControlCls,$FindControlIns)
- ;~ _SendText("{APPSKEY}",0,10000)
- ;~ _SendText("{TAB " & $myTAB & "}",0,10000)
- ;~ _SendText("{ENTER}",0,10000)
- _SendText("^с",0,10000)
- ;~ Send("{TAB " & $myTAB & "}{ENTER}")
- $QEND=ClipGet ()
- _LogAndPrintDebug($hLog,"Значение буфера после" & $QEND ,6 )
- _LogAndPrintDebug($hLog,"Значение буфера @error" & @error ,6 )
- Return $QEND
- EndFunc
- Func _WindowEOTitleKvartalnaSetka($AppTitleIns,$find,$FindString)
- Select
- Case $AppTitleIns = 1
- $WindowEOTitleFindString=$Find & " (" & $FindString & ")"
- Case $AppTitleIns = 2
- $WindowEOTitleFindString=$Find & " (" & $FindString & ")"
- Case $AppTitleIns = 3
- $WindowEOTitleFindString=$Find & " (" & $FindString & ")"
- Case $AppTitleIns = 4
- $WindowEOTitleFindString=$Find & " (" & $FindString & ")"
- EndSelect
- return $WindowEOTitleFindString
- EndFunc
- Func _WindowEOSaveAS($hLog,$Title,$Path,$TypeType)
- ;~ Эмуляция вызова меню сохранить как
- ;~ Сохранение по пути
- ;~ Выбор типа файла
- ;~ Send("^s")
- ;~ $TypeType=3 -(*.xls)
- ;~ $R=_WorkbookCloseEndDelete($Path)
- _LogAndPrintDebug($hLog,"Эмуляция вызова меню сохранить как-" & $PathList,6)
- _SendText("{Alt}",0,500)
- _SendText("{Down}",0,500)
- _SendText("{RIGHT}",0,500)
- _SendText("{Down 3}",0,500)
- _SendText("{ENTER}",0,500)
- _activatewindow($Title,"",0,100)
- _ControlFocusINSTANCE($Title, "","ComboBox",3)
- ControlCommand ( $Title, "",_ClassInstance("ComboBox",3), "SetCurrentSelection" , $TypeType)
- _ControlFocusINSTANCE($Title, "","Edit",1)
- ControlCommand ( $Title, "",_ClassInstance("Edit",1), "EditPaste", $Path )
- sleep(500)
- $R=_WorkbookCloseEndDelete($Path)
- _LogAndPrintDebug($hLog,"_WorkbookCloseEndDelete-" & $R,6)
- ControlClick( $Title, "", _ClassInstance("Button",2))
- sleep(500)
- EndFunc
- Func _CreateNewSetka($hLog,$Title,$TitleClass,$TitleIns,$TitleNew,$TitleNewClass,$TitleNewIns,$SendText,$PL="")
- _LogAndPrintDebug($hLog,$Title & "-" & $SendText ,6 )
- _ControlFocusINSTANCE($Title, "",$TitleClass,$TitleIns)
- _SendText("{INS}",0,500)
- _activatewindow($TitleNew,"",0,1)
- _ControlFocusINSTANCE($TitleNew, "",$TitleNewClass,$TitleNewIns)
- sleep(1000)
- _SendText($SendText,0,500)
- if $PL<>"" then
- sleep(1000)
- _ControlFocusINSTANCE($TitleNew, "",$TitleNewClass,9)
- _SendText($PL,0,500)
- endif
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- EndFunc
- ;~ func _LogAndPrintDebug($hLog,$Text,$Num)
- ;~ _Log_Report($hLog, $Text , $Num)
- ;~ _DebugPrint($Text)
- ;~ EndFunc
- Func _WindowSizeMove($hLog,$Title, $text="",$Pozish="")
- ;~ Расположение и размеры
- ;~ ""- во весь экран(defaul)
- ;~ 1 нижняя левая четверть
- ;~ 2 нижняя половина
- ;~ 3 нижняя правая
- ;~ 4 левая половина
- ;~ 5
- ;~ 6 правая половина
- ;~ 7 верхняя левая четверть
- ;~ 8 верхняя половина
- ;~ 9 Верхняя правая четверть
- $W=WinGetPos($Title )
- Local $tRECT = _WinAPI_GetWorkArea ()
- Local $iWidth = DllStructGetData ( $tRECT , 'Right' ) - DllStructGetData ( $tRECT , 'Left' )
- Local $iHeight = DllStructGetData ( $tRECT , 'Bottom' ) - DllStructGetData ( $tRECT , 'Top' )
- Local $X = DllStructGetData ( $tRECT , 'Left' )
- Local $Y = DllStructGetData ( $tRECT , 'Top' )
- _LogAndPrintDebug($hLog, "$iHeight-" & $iHeight , 6)
- ;~ ConsoleWrite($aTray[3] & @LF)
- Select
- case $Pozish=""
- WinMove ($Title, "", 0, 0, $iWidth, $iHeight )
- _LogAndPrintDebug($hLog, "@Desktop_Window" & $iWidth& " "& @DesktopHeight , 6)
- case $Pozish=1
- WinMove ($Title, "", 0, $iHeight/2, $iWidth/2, $iHeight/2 )
- _LogAndPrintDebug($hLog, "@Desktop_Window" & $iWidth /2 & " "& $iHeight/2 , 6)
- case $Pozish=2
- WinMove ($Title, "", 0, $iHeight/2, $iWidth, $iHeight/2 )
- case $Pozish=3
- WinMove ($Title, "", $iWidth/2, $iHeight/2, $iWidth/2, $iHeight/2 )
- case $Pozish=4
- WinMove ($Title, "", 0, 0, $iWidth/2, $iHeight )
- case $Pozish=5
- case $Pozish=6
- WinMove ($Title, "", $iWidth/2, 0, $iWidth/2, $iHeight )
- _LogAndPrintDebug($hLog, "@Desktop_Window" & $iWidth /2 & " "& $iHeight , 6)
- case $Pozish=7
- WinMove ($Title, "", 0, 0, $iWidth/2, $iHeight/2 )
- case $Pozish=8
- WinMove ($Title, "", 0, 0, $iWidth, $iHeight/2 )
- case $Pozish=9
- WinMove ($Title, "", $iWidth/2, 0, $iWidth/2, $iHeight/2 )
- EndSelect
- EndFunc
- Func _SearchSprav1C($hLog,$WhatFind,$SearchOrder,$TitleSprav)
- _LogAndPrintDebug($hLog, "Start _SearchSprav1C-" , 6)
- $sFind="Знайти"
- ;~ Send("{CTRLDOWN}F{CTRLUP}"); -Поиск
- Send("^f"); -Поиск
- $TitleFind_Window=_WindowEOFullTitle($eod,$Login,$sFind,$LinkName);-"E0D Звенигородське ЛГ.Найти - ЛІАЦ"
- _LogAndPrintDebug($hLog, "Поиск в " & $TitleFind_Window , 6)
- ;~ WinWait($TitleFind_Window)
- _activatewindow($TitleFind_Window,"",0,1)
- sleep(1000)
- _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",15);ГдеИскать
- _SendText($SearchOrder,0,1000); ГдеИскать
- _LogAndPrintDebug($hLog, "ГдеИскать-" & $SearchOrder , 6)
- sleep(1000)
- _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",17); Что искать
- _LogAndPrintDebug($hLog, "Что искать-" & $WhatFind , 6)
- _SendText($WhatFind,0,1000); Что искать
- _LogAndPrintDebug($hLog, "Что искать-" & $WhatFind , 6)
- ;~ _ControlFocusINSTANCE($TitleFind_Window, "", "V8CommandBar",1)
- _SendTabEnter(2,3000)
- ;~ _SendText("{CTRLDOWN}{ENTER}{CTRLUP}",0,3000)
- $re=WinExists( $TitleFind_Window, "" )
- _LogAndPrintDebug($hLog, $TitleFind_Window & " -" & $re , 6)
- if $re=1 then
- ;~ _LogAndPrintDebug($hLog, "WinKill 1С:Предприятие-" & $r , 6)
- $z=WinKill ($TitleFind_Window, "" )
- endIf
- _activatewindow($TitleSprav,"",0,1)
- _LogAndPrintDebug($hLog, "Stop _SearchSprav1C-" , 6)
- EndFunc
- Func _OpenSprav1C($hLog,$Window_Create_Title,$TitleSprav,$CLASS,$INS)
- _LogAndPrintDebug($hLog, "Start _OpenSprav1C-" , 6)
- _activatewindow($Window_Create_Title,"",0,1)
- _ControlFocusINSTANCE($Window_Create_Title, "", $CLASS,$INS)
- _SendText("{F4}",0,100);-Открыть справочник
- _activatewindow($TitleSprav,"",0,1)
- _LogAndPrintDebug($hLog, "Stop _OpenSprav1C-" , 6)
- EndFunc
- func _1C_Find($WhatFind,$SearchOrder,$FindYesNumber,$FindReturnNumber,$FindYesText,$bClose,$VNaydenom)
- ;~ $sFind="Знайти"
- $sFind=_mova_find($mova)
- _ControlFocusINSTANCE($AppTitle, "","V8Grid",1)
- _SendText("{RIGHT}",0,1000)
- ;~ Send("{CTRLDOWN}F{CTRLUP}"); -Поиск
- Send("^f"); -Поиск
- $TitleFind_Window=_WindowEOFullTitle($eod,$Login,$sFind,$LinkName);-"E0D Звенигородське ЛГ.Найти - ЛІАЦ"
- _LogAndPrintDebug($hLog, "Поиск в " & $TitleFind_Window , 6)
- ;~ WinWait($TitleFind_Window)
- _activatewindow($TitleFind_Window,"",0,1)
- _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",15);ГдеИскать
- _SendText($SearchOrder,0,100); ГдеИскать
- _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",17); Что искать
- _SendText($WhatFind,0,100); Что искать
- if $VNaydenom=1 Then
- ;~ _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",9)
- Sleep(100)
- _SendText("{TAB 2}{SPACE}",0,100)
- ;~ MsgBox(4096, "Test", $WhatFind)
- EndIf
- ;~ _ControlFocusINSTANCE($TitleFind_Window, "", "V8CommandBar",1)
- _SendTabEnter(1,3000)
- ;~ _ControlFocusINSTANCE($AppTitle, "","V8Grid",1)
- _SendText("{ENTER}",0,1000)
- ;~ _SendText("{RIGHT}",0,1000)
- Sleep(5000)
- $QEND=WinGetTitle("[active]")
- $mNumberDogFind=StringSplit($QEND," ")
- ;~ MsgBox(0, "Пример",$mNumberDogFind[$FindReturnNumber] )
- if $mNumberDogFind[0]<$FindYesNumber then
- ;~ MsgBox(0, "Не соответствует ",$mNumberDogFind[0])
- $report=0
- return $report
- exit Func
- EndIf
- ;~ MsgBox(0, "Возвращаемое значение",$mNumberDogFind[$FindYesNumber])
- _LogAndPrintDebug($hLog, "Возвращаемое значение"& $mNumberDogFind[$FindYesNumber] , 6)
- _LogAndPrintDebug($hLog, "Значение для сравнения"& $FindYesText , 6)
- If $mNumberDogFind[$FindYesNumber]= $FindYesText then
- ;~ MsgBox(0, "Пример",$mNumberDogFind[$FindReturnNumber])
- if $bClose=1 then WinClose($QEND,"")
- $report=$QEND
- return $report
- Else
- ;~ MsgBox(0, "Пример","ПЕЧАЛЬКА")
- $report=0
- ;~ exit
- endif
- return $report
- EndFunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _FindBoID
- ; Description ...: Вставка значения в поле из справочника с поиском по коду
- ; Syntax ........: _FindBoID($TitleFind, $WhatFind, $SearchOrder)
- ; Parameters ....: $TitleFind - Заголовок Справочника поиска.
- ; $WhatFind - Что искать.
- ; $SearchOrder - Где Искать.
- ; Return values .: None
- ; Author ........: FOREST
- ; Modified ......: 10.01.2018
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ;~ $TitleFind="Продукція"; Заголовок Справочника поиска
- ;~ $WhatFind=$KodSortyment; Что искать
- ;~ $SearchOrder="Код"; Где Искать
- ; ===============================================================================================================================
- Func _FindBoID($TitleFind,$WhatFind,$SearchOrder)
- ;~ Вставка значения в поле из справочника с поиском по коду
- Send("{F4}")
- ;~ Sleep(3000)
- ;~ if $TitleFind<>"" Then
- ;~ $TitleFind=WinGetTitle("[active]")
- _activatewindow($TitleFind,"",0,1)
- ;~
- ;~ EndIf
- $sFind=_mova_find($mova)
- Send("^f"); -Поиск
- $TitleFind_Window=_WindowEOFullTitle($eod,$Login,$sFind,$LinkName);-"E0D Звенигородське ЛГ.Найти - ЛІАЦ"
- _LogAndPrintDebug($hLog, "Поиск в " & $TitleFind_Window , 6)
- _activatewindow($TitleFind_Window,"",0,1)
- _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",15);ГдеИскать
- _SendText($SearchOrder,0,100); ГдеИскать
- _ControlFocusINSTANCE($TitleFind_Window, "", "V8FormElement",17); Что искать
- _SendText($WhatFind,0,1000); Что искать
- _SendTabEnter(3,20000)
- ;~ WinWaitClose($TitleFind_Window,"",10)
- _activatewindow($TitleFind,"",0,1)
- Send("{ENTER}{TAB}")
- EndFunc
- func _1CFile($bMsg)
- #region 1CFile
- local $report
- if @OSArch="X86" then
- Global $1Cpath_install = "C:\Program Files\1cv82\"
- Else
- Global $1Cpath_install = "C:\Program Files (x86)\1cv82\"
- endif
- _LogAndPrintDebug($hLog, "1C установлена в" & $1Cpath_install,6 )
- Global $1Cpath_common=$1Cpath_install & "common\"
- Global $1Cpath_conf=$1Cpath_install & "conf\"
- Global $1CFile_common="1cestart.exe"
- Global $1CFile_conf="conf.CFG"
- FileChangeDir($1Cpath_common);"C:\Program Files (x86)\1cv82"
- $search = FileFindFirstFile ($1CFile_common)
- If $search = -1 Then
- MsgBox(0, "Error", "Не найден файл " & $1CFile_common)
- SetError(2)
- Exit
- EndIf
- FileChangeDir($1Cpath_conf);"C:\Program Files (x86)\1cv82"
- $search = FileFindFirstFile ($1CFile_conf)
- If $search = -1 Then
- if $bMsg=1 then MsgBox(0, "Error", "Не найден файл " & $1CFile_conf)
- SetError(3)
- Exit
- EndIf
- Global $1CpathStart=$1Cpath_common & $1CFile_common
- Global $1CpathMova=$1Cpath_conf & $1CFile_conf
- $file = FileOpen($1CpathMova, 0)
- ; Check if file opened for reading OK
- If $file = -1 Then
- if $bMsg=1 then MsgBox(0, "Error", "Unable to open file.")
- SetError(3)
- Exit
- EndIf
- ; Read in lines of text until the EOF is reached
- While 1
- $line = FileReadLine($file)
- If @error = -1 Then ExitLoop
- $amovaconf=StringSplit($line,"=")
- Wend
- FileClose($file)
- _LogAndPrintDebug($hLog, "Мова системы-" & @OSLang,6 )
- if $amovaconf[2]="System" then
- Select
- Case @OSLang = 0419
- Global $mova="RU"
- Case @OSLang = 0422
- Global $mova="UA"
- Case @OSLang = 0409
- Global $mova="EN"
- EndSelect
- Else
- Global $mova=$amovaconf[2]
- ;~ https://forum.infostart.ru/forum83/topic117328/
- ;~ http://www.forum.mista.ru/topic.php?id=758347
- EndIf
- ;~ MsgBox(0, "Язык 1С", $mova)
- _LogAndPrintDebug($hLog, "Язык 1С-" & $mova,6 )
- Global $iPID1C = "1cv8c.exe"
- _LogAndPrintDebug($hLog, "Имя процесса 1С-" & $iPID1C,6 )
- #endregion
- EndFunc
- func _InitBase($Link="ЛІАЦ", $NumberLogin = "2")
- if $Link=="ЛІАЦ" Then
- Global $LinkBase="http://eod.ulk.gov.ua"
- Global $LinkName="ЛІАЦ"
- Global $eod="E0D"
- else
- Global $LinkBase="http://ukrles.ulk.gov.ua"
- Global $LinkName="УкрЛісКонсалтінг"
- Global $eod=""
- EndIf
- _LogAndPrintDebug($hLog, 'Логин -' & $Login,6 )
- if $NumberLogin <> "" Then $pref = " " & $NumberLogin
- Global $Login=$lishoz & " ЛГ" & $pref
- global $AppTitle=_WindowEOAppTitle($eod,$Login,$LinkName)
- EndFunc
- func _1CStart($Link="ЛІАЦ", $NumberLogin = "2")
- ;~ if $Link=="ЛІАЦ" Then
- ;~ Global $LinkBase="http://eod.ulk.gov.ua"
- ;~ Global $LinkName="ЛІАЦ"
- ;~ Global $eod="E0D"
- ;~
- ;~ else
- ;~ Global $LinkBase="http://ukrles.ulk.gov.ua"
- ;~ Global $LinkName="УкрЛісКонсалтінг"
- ;~ Global $eod=""
- ;~
- ;~ EndIf
- ;~ Global $LinkBase="http://eod.ulk.gov.ua"
- ;~ Global $LinkName="ЛІАЦ"
- ;~ Global $eod="E0D"
- ;~ Global $LinkBase="http://ukrles.ulk.gov.ua"
- ;~ Global $LinkName="УкрЛісКонсалтінг"
- ;~ Global $eod=""
- ;~ Global $linkTatle=$AppTitle
- _InitBase($Link)
- ;~ _AssignNotIsDeclare("linkTatle",$AppTitle,2)
- $pref = ""
- if $NumberLogin <> "" Then $pref = " " & $NumberLogin
- Global $Login=$lishoz & " ЛГ" & $pref
- Global $1C=$eod & " " & $Login & "." & $LinkName
- Global $Param=" /WS" & $LinkBase & ' /N"' & $Login & '" /P' & $Password
- If ProcessExists("1cv8c.exe") Then
- ;~ MsgBox(0, "Пример", "1cv8c.exe is running.")
- _LogAndPrintDebug($hLog, '1С уже запущена ' ,6 )
- _activatewindow($AppTitle,"",0,1)
- Else
- Start1C($AppTitle,$1CpathStart, $Param,$hLog)
- EndIf
- #endregion
- endfunc
- Func _URorFisError($edrpu)
- $var=StringLen($edrpu)
- Select
- Case $var = 8
- return "Юр особа"
- Case $var = 10
- return "Физ особа"
- Case Else
- return 0
- EndSelect
- EndFunc
- Func _GetTextFromActiveWindow()
- _LogAndPrintDebug($hLog, "_GetTextFromActiveWindow старт" ,6 )
- ;Get window title, in case we need it
- $window_title = WinGetTitle("[active]")
- if $window_title == "" Then
- ;~ SoundPlay(@WindowsDir & "\media\Windows XP Error.wav",1)
- Exit
- return 0
- EndIf
- WinActivate($window_title)
- ClipPut("") ;Clear the clipboard, so we can check for data when we write to it
- $readtext = "" ;We'll put new clipboard data in this variable
- For $i = 1 to 8 Step 1
- $rand = random (1, 4, 1)
- Send ("{CTRLDOWN}")
- ;Try various methods until we get text on the clipboard
- Switch $rand
- Case 1
- Send("{INS}")
- Case 2
- ControlSend($window_title, "", "", "{INS}")
- Case 3
- Send("c")
- Case 4
- ControlSend($window_title, "", "", "c^")
- EndSwitch
- Send ("{CTRLUP}")
- $readtext = ClipGet() ;Any text on the clipboard?
- If $readtext <> "" Then
- return $readtext
- EndIf
- If $i = 4 Then
- WinActivate($window_title)
- Sleep(100)
- EndIf
- Next
- _LogAndPrintDebug($hLog, "$readtext" & $readtext ,6 )
- return $readtext
- EndFunc
- Func _RefText()
- Send("{CTRLDOWN}{F11}{CTRLUP}")
- $title_Get_Link=_mova_Get_Link($mova)
- _activatewindow(_mova_Get_Link($mova),"",0,1)
- Send("{TAB}{ENTER}")
- sleep(2000)
- $reftext =ClipGet()
- WinWaitClose($title_Get_Link, "", 5)
- return $reftext
- EndFunc
- Func _isRef($ReadRef, $RefMask)
- ;~ MsgBox(0, "Line read _isRef:",$ReadRef)
- $result = StringInStr($ReadRef, $RefMask)
- ;~ MsgBox(0, "Line read _isRef:",$result)
- if $result <> 0 then
- return 1
- else
- return 0
- EndIf
- EndFunc
- Func _isTextDolar($Var,$a=0)
- if $Var<>"$" then
- if $a=0 Then
- _SendText($Var,1,1000)
- else
- $imax=10
- _SetTextFromActiveWindow($Var,$imax)
- Send("{TAB}")
- EndIf
- else
- Send("{TAB}")
- EndIf
- EndFunc
- func SetLinkZov($LinkBase,$URLKey,$URLref)
- ;~ http://eod.ulk.gov.ua#e1cib/data/Документ.ЛесорубныйБилет?ref=821600155d0a190411e7efa9c6fc2b19
- $parm="?ref="
- $link=$LinkBase & "#" & "e1cib/data/" & $URLKey & $parm & $URLref
- return $link
- endfunc
- func SetLinkVnutr($URLKey,$URLref)
- ;~ e1cib/data/Документ.ЛесорубныйБилет?ref=821600155d0a190411e7efa9c6fc2b19
- $parm="?ref="
- $link="e1cib/data/" & $URLKey & $parm & $URLref
- return $link
- endfunc
- Func _CreateOnePole($WhatFind,$Window_Create_Title,$SearchOrder,$TitleSprav)
- ;~ ~ Создание договора
- _SendText("{F4}",0,100)
- #region OpenSprav1C
- ;---------------------------------------------------------------------------------
- ;~ _1CV83.au3
- _OpenSprav1C($hLog,$Window_Create_Title,$TitleSprav,"V8FormElement",22)
- _LogAndPrintDebug($hLog, "stop region OpenSprav1C" , 6)
- #endregion
- ;~ Send("{CTRLDOWN}F{CTRLUP}"); -Поиск
- ;------------_SearchSprav1C-------------------------------------------------------------------------------------------
- #region SearchSprav1C
- ;~ _1CV83.au3
- _SearchSprav1C($hLog,$WhatFind,$SearchOrder,$TitleSprav)
- _LogAndPrintDebug($hLog, "stop region SearchSprav1C" & $WhatFind, 6)
- #endregion
- ;----------Кнопка назначеная по умолчанию в 1С Выбрать---------------------------------------------
- Send("{CTRLDOWN}{ENTER}{CTRLUP}")
- Send("{CTRLDOWN}c{CTRLUP}")
- ;~ Send("{ENTER}")
- EndFunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: GetAllWindowsControls
- ; Description ...: Виводит параметры контролов окна в консоль
- ; Syntax ........: GetAllWindowsControls($hCallersWindow [, $bOnlyVisible=Default [, $sStringIncludes=Default [, $sClass=Default]]])
- ; Parameters ....: $hCallersWindow - A handle value. Получаем WinGetHandle("[ACTIVE]")
- ; $bOnlyVisible - [optional] A boolean value. Default is Default.
- ; $sStringIncludes - [optional] A string value. Default is Default.
- ; $sClass - [optional] A string value. Default is Default.
- ; Return values .: "Func=ControlCounter(INSTANCE), ControlID,Handle, ClassNN( Class&INSTANCE), XPos,YPos,Width,Height,IsVisible,Text"
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........: https://www.autoitscript.com/forum/topic/164226-get-all-windows-controls/
- ; Example .......: No
- ; ===============================================================================================================================
- Func GetAllWindowsControls($hCallersWindow, $bOnlyVisible=Default, $sStringIncludes=Default, $sClass=Default)
- If Not IsHWnd($hCallersWindow) Then
- ConsoleWrite("$hCallersWindow must be a handle...provided=[" & $hCallersWindow & "]" & @CRLF)
- Return False
- EndIf
- Local $aPos = WinGetPos($hCallersWindow)
- ; Display the array values returned by WinGetPos.
- ConsoleWrite("$hCallersWindow: " & $hCallersWindow & @CRLF & _
- "X-Pos: " & $aPos[0] & @CRLF & _
- "Y-Pos: " & $aPos[1] & @CRLF & _
- "Width: " & $aPos[2] & @CRLF & _
- "Height: " & $aPos[3] & @CRLF)
- ; Get all list of controls
- If $bOnlyVisible = Default Then $bOnlyVisible = False
- If $sStringIncludes = Default Then $sStringIncludes = ""
- If $sClass = Default Then $sClass = ""
- $sClassList = WinGetClassList($hCallersWindow)
- ; Create array
- $aClassList = StringSplit($sClassList, @CRLF, 2)
- ; Sort array
- _ArraySort($aClassList)
- _ArrayDelete($aClassList, 0)
- ; Loop
- $iCurrentClass = ""
- $iCurrentCount = 1
- $iTotalCounter = 1
- If StringLen($sClass)>0 Then
- For $i = UBound($aClassList)-1 To 0 Step - 1
- If $aClassList[$i]<>$sClass Then
- _ArrayDelete($aClassList,$i)
- EndIf
- Next
- EndIf
- For $i = 0 To UBound($aClassList) - 1
- If $aClassList[$i] = $iCurrentClass Then
- $iCurrentCount += 1
- Else
- $iCurrentClass = $aClassList[$i]
- $iCurrentCount = 1
- EndIf
- $hControl = ControlGetHandle($hCallersWindow, "", "[CLASSNN:" & $iCurrentClass & $iCurrentCount & "]")
- $text = StringRegExpReplace(ControlGetText($hCallersWindow, "", $hControl), "[\n\r]", "{@CRLF}")
- $aPos = ControlGetPos($hCallersWindow, "", $hControl)
- $sControlID = _WinAPI_GetDlgCtrlID($hControl)
- $bIsVisible = ControlCommand($hCallersWindow, "", $hControl, "IsVisible")
- If $bOnlyVisible And Not $bIsVisible Then
- $iTotalCounter += 1
- ContinueLoop
- EndIf
- If StringLen($sStringIncludes) > 0 Then
- If Not StringInStr($text, $sStringIncludes) Then
- $iTotalCounter += 1
- ContinueLoop
- EndIf
- EndIf
- If IsArray($aPos) Then
- ConsoleWrite("Func=[GetAllWindowsControls]: ControlCounter=[" & StringFormat("%3s", $iTotalCounter) & "] ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[" & StringFormat("%4s", $aPos[0]) & "] YPos=[" & StringFormat("%4s", $aPos[1]) & "] Width=[" & StringFormat("%4s", $aPos[2]) & "] Height=[" & StringFormat("%4s", $aPos[3]) & "] IsVisible=[" & $bIsVisible & "] Text=[" & $text & "]." & @CRLF)
- Else
- ConsoleWrite("Func=[GetAllWindowsControls]: ControlCounter=[" & StringFormat("%3s", $iTotalCounter) & "] ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[winclosed] YPos=[winclosed] Width=[winclosed] Height=[winclosed] Text=[" & $text & "]." & @CRLF)
- EndIf
- If Not WinExists($hCallersWindow) Then ExitLoop
- $iTotalCounter += 1
- Next
- return $iTotalCounter
- ;~ ControlSend($dialog, "", "[CLASS:V8FormElement; X:66; Y:6]", "{HOME}+{END}{DEL}^v{TAB}")
- EndFunc ;==>GetAllWindowsControls
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _ClosePrNumberDoCrateNoSave
- ; Description ...:
- ; Syntax ........: _ClosePrNumberDoCrateNoSave($TitlePrNumberDogSmall, $Title1CMsg, $iCurrentClass1CMsg, $iCurrentCount1CMsg, $XPos, $YPos)
- ; Parameters ....: $TitlePrNumberDogSmall- Заголовок окна который необходимо закрыть через ESC.
- ; $Title1CMsg - Заголовок окна который появляется если мы закрываем через ESC .
- ; $iCurrentClass1CMsg - CLASS: кнопки которую нужно выделить и нажать чтобы зак4рыть окно $Title1CMsg.
- ; $iCurrentCount1CMsg - INSTANCE: кнопки которую нужно выделить и нажать чтобы выполнить действие в окне $Title1CMsg.
- ; $XPos - Позиция X кнопки которую нужно выделить и нажать чтобы выполнить действие в окне $Title1CMsg.
- ; $YPos - Позиция Y кнопки которую нужно выделить и нажать чтобы выполнить действие в окне $Title1CMsg.
- ; Return values .: None
- ; Author ........: FOREST
- ; Modified ......: Кнопка будет выделена и нажата в окне $Title1CMsg если $YPos=$aPos[1] and $XPos= $aPos[0]
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================
- Func _ClosePrNumberDoCrateNoSave($TitlePrNumberDogSmall,$Title1CMsg,$iCurrentClass1CMsg,$iCurrentCount1CMsg,$XPos,$YPos)
- $z=_1CMSGEnterBootonIns($Title1CMsg,$iCurrentClass1CMsg,$iCurrentCount1CMsg,$XPos,$YPos)
- _activatewindow( $TitlePrNumberDogSmall & " (створення) - ЛІАЦ", "", 0, 1)
- send("{ESC}")
- ;~ 1С:Підприємство
- if WinWait ($Title1CMsg, "", 5 ) then
- $z=_1CMSGEnterBootonIns($Title1CMsg,$iCurrentClass1CMsg,$iCurrentCount1CMsg,$XPos,$YPos)
- EndIf
- ;~ endif
- _LogAndPrintDebug($hLog,"Окно" & $TitlePrNumberDogSmall & " (створення) - ЛІАЦ закрыто без сохранения" , 6)
- return 1
- endfunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _1CMSGEnterBootonIns
- ; Description ...:
- ; Syntax ........: _1CMSGEnterBootonIns($Title1CMsg, $iCurrentClass1CMsg, $iCurrentCount1CMsg, $XPos, $YPos)
- ; Parameters ....: $Title1CMsg - Заголовок окна который появляется если мы закрываем через ESC .
- ; $iCurrentClass1CMsg - CLASS: кнопки которую нужно выделить и нажать чтобы зак4рыть окно $Title1CMsg.
- ; $iCurrentCount1CMsg - INSTANCE: кнопки которую нужно выделить и нажать чтобы выполнить действие в окне $Title1CMsg.
- ; $XPos - Позиция X кнопки которую нужно выделить и нажать чтобы выполнить действие в окне $Title1CMsg.
- ; $YPos - Позиция Y кнопки которую нужно выделить и нажать чтобы выполнить действие в окне $Title1CMsg.
- ; Return values .: 1; Успешно Выполнено
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......: Кнопка будет выделена и нажата в окне $Title1CMsg если $YPos=$aPos[1] and $XPos= $aPos[0]
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================
- Func _1CMSGEnterBootonIns($Title1CMsg,$iCurrentClass1CMsg,$iCurrentCount1CMsg,$XPos,$YPos)
- if WinExists($Title1CMsg,"") then
- $hCallersWindow =WinGetHandle($Title1CMsg)
- $hControl = ControlGetHandle($hCallersWindow, "", "[CLASSNN:" & $iCurrentClass1CMsg & $iCurrentCount1CMsg & "]")
- $aPos = ControlGetPos($hCallersWindow, "", $hControl)
- GetAllWindowsControls($hCallersWindow, Default, Default, $hCallersWindow)
- ;~ _LogAndPrintDebug($hLog,"Контрол INS" & $iCurrentCount1CMsg & " XPos=[" & StringFormat("%4s", $aPos[0]) & "] YPos=[" & StringFormat("%4s", $aPos[1]) & "] & " (створення) - ЛІАЦ закрыто без сохранения" , 6)
- if $YPos=$aPos[1] and $XPos= $aPos[0] Then
- _activatewindow($hCallersWindow, "", 0, 1)
- _ControlFocusINSTANCE($hCallersWindow, "", "V8FormElement",$iCurrentCount1CMsg)
- send("{ENTER}")
- return 1; Успешно Выполнено
- Else
- return 0;Контрол не обнаружен
- endif
- else
- return -1;Окно не обнаружено
- endif
- endfunc
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _ErrorXMLRestart1C
- ; Description ...:
- ; Syntax ........: _ErrorXMLRestart1C($ChatIDs, $XPos, $YPos [, $msg="Помилка разбору XML" [, $bSendCapture=1 [, $Title1CMsg="1С:Підприємство" [, $iCurrentClass1CMsg="V8FormElement" [, $iCurrentCount1CMsg=3]]]]])
- ; Parameters ....: $ChatIDs - An AutoIt controlID.
- ; $XPos - An unknown value.
- ; $YPos - An unknown value.
- ; $msg - [optional] An unknown value. Default is "Помилка разбору XML".
- ; $bSendCapture - [optional] A boolean value. Default is 1.
- ; $Title1CMsg - [optional] A dll struct value. Default is "1С:Підприємство".
- ; $iCurrentClass1CMsg - [optional] A integer value. Default is "V8FormElement".
- ; $iCurrentCount1CMsg - [optional] A integer value. Default is 3.
- ; Return values .: None
- ; Author ........: FOREST
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......: No
- ; ===============================================================================================================================EndFunc
- func _ErrorXMLRestart1C($ChatIDs,$XPos,$YPos,$msg="Помилка разбору XML",$bSendCapture=1,$Title1CMsg="1С:Підприємство",$iCurrentClass1CMsg="V8FormElement",$iCurrentCount1CMsg=3)
- $Title1CMsg="1С:Підприємство"
- $iCurrentClass1CMsg="V8FormElement"
- $iCurrentCount1CMsg=3 ;~Ні 4-Так 2-Відмінити
- $XPos= 11;112;~Ні 11-Так 213-Відмінити
- $YPos=79;40;~Ні 40-Так 40-Відмінити
- $msg="Помилка разбору XML"
- if $bSendCapture then $FileIDs=_SendCapture($Title1CMsg,$ChatIDs,$msg)
- sleep(2000)
- $z=_1CMSGEnterBootonIns($Title1CMsg,$iCurrentClass1CMsg,$iCurrentCount1CMsg,$XPos,$YPos)
- ;~ _ArrayDisplay($FileIDs)
- _1CFile(0)
- _1CStart("ЛІАЦ")
- return $FileIDs
- endfunc
- func _SaveDocument($window_title,$CLASS,$INS,$TAB,$RefMask= Default)
- ;~ для того что бы сохранить документ необходимо:
- ;~ его активировать по $window_title; если $window_title="" будем считать $window_title= WinGetTitle("[active]")
- ;~ активировать текстовый элемент окна $window_title c $CLASS,$INS
- ;~ Для договора по реализации
- ;~ $Window_Create_Title="Договори контрагентів по реалізації (створення)"
- ;~ $NumDog_title=$NumberDog & " (Договори контрагентів по реалізації)"
- ;~ $RefMask = "1cib/data/Справочник.ДоговорыКонтрагентов?ref"
- ;~ $CLASS,$INS,$TAB
- ;~ "V8FormElement",22,9
- ;~ Для предмета договора по реализации
- ;~ $window_title_create_predmet="E0D Звенигородське ЛГ.Предмет договору (створення) - ЛІАЦ"
- ;~ $NumDogPr_title="E0D Звенигородське ЛГ.Предмет договору ЧР-165000-00359 від 16.03.2018 14:11:23 - ЛІАЦ *"
- ;~ $RefMask = "e1cib/data/Документ.ПриложенияКДоговору?ref"
- ;~ $CLASS,$INS,$TAB
- ;~ "V8Grid",2,2
- ;~ TABом активировать кнопку Сохранить и нажать ENTER
- ;~ Получить линк на документ во внутренем формате
- ;~ Проверить на соответствие маске если она задана
- if $window_title="" then $window_title = WinGetTitle("[active]")
- _activatewindow($window_title,"",0,1)
- ;~ _ControlFocusINSTANCE($window_title, "","V8FormElement",22)
- _ControlFocusINSTANCE($window_title, "",$CLASS,$INS)
- $window_title = WinGetTitle("[active]")
- Send("{TAB "& $TAB & "}")
- Send("{ENTER}")
- $savewindow_title = WinGetTitle("[active]")
- ;~ Здесь должна быть проверка на то что сохранение произошло нормально
- ;~ Так как 1С добавляет к заголовку окна знак "*" он не сохранен
- ;~ if $window_title = $savewindow_title Then
- ;~ SoundPlay(@WindowsDir & "\media\Windows XP Error.wav",1)
- ;~ Exit
- ;~ return 0
- ;~ EndIf
- _LogAndPrintDebug($hLog, "$window_title в" & $window_title,6 )
- $RefText=_RefText()
- If $RefMask <> Default Then
- $result = _isRef($RefText, $RefMask)
- Select
- Case $result=1
- _LogAndPrintDebug($hLog, "Линк окна " & $window_title & " соответствует маске записью " & $RefText , 6)
- Return $RefText
- Case Else
- _LogAndPrintDebug($hLog, "Линк окна " & $NumberDog & " не соответствует маске " & $RefText , 6)
- return 0
- EndSelect
- EndIf
- EndFunc
- #region Process
- ; #FUNCTION# ====================================================================================================================
- ; Name ..........: _ProcessGetOwner
- ; Description ...:
- ;~ Помогает, узнать имя пользователя, от которого запущен процесс.
- ;~ Просто необходимо закрыть именно у определенного пользователя на серваке определенный процесс.
- ;~ Дело в том, что одноименных процессов (запущенных программ) на серваке много.
- ;~ Вот и задача - отловить PID процесса определенного пользователя.
- ; Syntax ........: _ProcessGetOwner($PID [, $sComputer = "."])
- ; Parameters ....: $PID - An AutoIt controlID.
- ; $sComputer - [optional] A string value. Default is ".".
- ; Return values .: DESKTOP-I29LBB0\FOREST
- ; Author ........: amel27
- ; Modified ......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........: http://forum.oszone.net/thread-144403.html
- ; Example .......:
- ;~ $aList = ProcessList ("SciTE.exe")
- ;~ For $i=1 To $aList[0][0]
- ;~ ConsoleWrite($aList[$i][1] &": "& _ProcessGetOwner($aList[$i][1]) &@CRLF)
- ;~ Next
- ; ===============================================================================================================================
- Func _ProcessGetOwner($PID, $sComputer = ".")
- ;~ смотри http://forum.oszone.net/thread-144403.html
- Local $objWMI, $colProcs, $sUserName, $sUserDomain
- $objWMI = ObjGet("winmgmts:\\" & $sComputer & "\root\cimv2")
- If IsObj($objWMI) Then
- $colProcs = $objWMI.ExecQuery("Select ProcessId From Win32_Process Where ProcessId="& $PID)
- If IsObj($colProcs) Then
- For $Proc In $colProcs
- If $Proc.GetOwner($sUserName, $sUserDomain)=0 Then Return $sUserDomain & "\" & $sUserName
- Next
- EndIf
- EndIf
- EndFunc
- ;~ https://www.autoitscript.com/forum/topic/102785-gethwnd-from-process/
- Func _GetHwnd($id,$txt="") ;Retrieve Hwnd of process(Получить Hwnd процесса)
- $proc = 0
- If _IsPIDOrProc($id) Then
- $proc = _PIDOrProcToHwnd($id)
- ElseIf _IsWinTitle($id,$txt) Then
- $proc = _WinTitleToHwnd($id,$txt)
- EndIf
- Return $proc
- EndFunc
- Func _IsPIDOrProc(ByRef $id) ;Is running PID or Processname(работает под управлением PID или ProcessName )
- If Not ProcessExists($id) Then
- Return 0
- Else
- Return $id
- EndIf
- EndFunc
- Func _IsWinTitle(ByRef $id,$txt="") ;Is running Window Title()
- $win = WinGetTitle($id,$txt)
- If Not $win Then Return 0
- $id = $win
- Return 1
- EndFunc
- Func _IsWinVisible($handle) ;Is Window Visible
- If BitAnd( WinGetState($handle), 2 ) Then
- Return 1
- Else
- Return 0
- EndIf
- EndFunc
- Func _PIDOrProcToHwnd($proc) ;Convert PID or process to Hwnd(Преобразование PID или процесс в Hwnd )
- If ProcessExists($proc) <> $proc Then
- $proclist = ProcessList($proc)
- $proc = $proclist[1][1]
- EndIf
- $var = WinList()
- For $i = 1 to $var[0][0] ;Pair PID/Process with Window Title
- If $var[$i][0] <> "" AND _IsWinVisible($var[$i][1]) Then
- If WinGetProcess($var[$i][0]) = $proc Then $proc = WinGetHandle($var[$i][0])
- EndIf
- Next
- Return $proc
- EndFunc
- Func _WinTitleToHwnd($proc,$txt="") ;Convert Window title to Hwnd
- $winlist = WinList($proc,$txt)
- If Not $winlist[0][0] Then Return -1
- Return $winlist[1][1]
- EndFunc
- #endregion Process
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement