Раскладка клавиатуры - английская?
» AutoIT
Цитата:
Раскладка клавиатуры - английская?
Да, кстати, если русская раскладка по умолчанию, то естественно работать не будет... нужно тогда и для русской ставить хоткей:
Код: HotKeySet("^т", "MyFunc")
Жесть! Ступил! Попробовал "^т" и работает. Спасибо!
Есть необходимость получать из USDownloader название файла и его размер прямо с формы, но AutoIt Windows Info не может определить имена компонентов, он видит только TPanel4....запихнув USDownloader.exe в Resourse Editor узнал что на TPanel4 мне нужен Label4 и Label6. Пытаюсь получить значение:
WinWaitActive("Universal Share Downloader v1.3.4.9")
$a = ControlGetText("Universal Share Downloader v1.3.4.9" , "", "Label4")
но переменная $a пустая в итоге.....что я не так делаю...может надо указать autoit? что Label4 находиться на TPanel4?????
WinWaitActive("Universal Share Downloader v1.3.4.9")
$a = ControlGetText("Universal Share Downloader v1.3.4.9" , "", "Label4")
но переменная $a пустая в итоге.....что я не так делаю...может надо указать autoit? что Label4 находиться на TPanel4?????
Добрый день!
Долго курил форум, узнал много нового... Но вопросы все равно остались. Вот главный:
Часто в процессе работы скрипта неплохо бы знать состояние сразу нескольких переменных на каждом этапе... Например, в VB, насколько я помню, можно было выполнять скрипт построчно и включить окошко с отображением значений нужных переменных. На редкость удобно было. Есть ли здесь что-то подобное?
Или втупую (как я и делаю )после каждой строки выводить MsgBox-ы? Нутром чую что можно проще и элегантнее, но не понимаю как...
Долго курил форум, узнал много нового... Но вопросы все равно остались. Вот главный:
Часто в процессе работы скрипта неплохо бы знать состояние сразу нескольких переменных на каждом этапе... Например, в VB, насколько я помню, можно было выполнять скрипт построчно и включить окошко с отображением значений нужных переменных. На редкость удобно было. Есть ли здесь что-то подобное?
Или втупую (как я и делаю )после каждой строки выводить MsgBox-ы? Нутром чую что можно проще и элегантнее, но не понимаю как...
1ac3124
Цитата:
TPanel4 это класс элемента, нужно использовать как класс, но и это не работает - Однако идентификатор контрола удалось получить...
Код:
$Info_Data = ControlGetText("[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]", "", "[CLASSNN:TPanel4]")
$hWnd = ControlGetHandle("[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]", "", "[CLASSNN:TPanel4]")
ConsoleWrite($Info_Data & @LF & $hWnd)
Цитата:
может надо указать autoit? что Label4 находиться на TPanel4?????
TPanel4 это класс элемента, нужно использовать как класс, но и это не работает - Однако идентификатор контрола удалось получить...
Код:
$Info_Data = ControlGetText("[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]", "", "[CLASSNN:TPanel4]")
$hWnd = ControlGetHandle("[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]", "", "[CLASSNN:TPanel4]")
ConsoleWrite($Info_Data & @LF & $hWnd)
ViSiToR
Цитата:
Вот спасибо тебе, добрый человек!
По ходу то что надо. Пошел разбираться...
Цитата:
Нашёл:
AutoEditDebugger
Graphical AutoIt Debugger
Yet Another ... Debugger
AutoMonIt - a way to monitor your own script
Вот спасибо тебе, добрый человек!
По ходу то что надо. Пошел разбираться...
Добрый день!
Например есть окно Блокнота а рядом висит GUI сделаное в AutoIt.
Можно ли сделать так чтобы при сворачивание окна Блокнота GUI сделаное в AutoIt тоже сворачивалось?
Например есть окно Блокнота а рядом висит GUI сделаное в AutoIt.
Можно ли сделать так чтобы при сворачивание окна Блокнота GUI сделаное в AutoIt тоже сворачивалось?
XpycTMD
Так?
Код: #include <GuiConstants.au3>
Run("notepad.exe")
WinWait("[Class:Notepad]")
$hWnd = WinGetHandle("[Class:Notepad]")
$hGui = GuiCreate("Test GUI", 300, 200, -1, -1, -1, -1, $hWnd)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
EndSwitch
WEnd
Так?
Код: #include <GuiConstants.au3>
Run("notepad.exe")
WinWait("[Class:Notepad]")
$hWnd = WinGetHandle("[Class:Notepad]")
$hGui = GuiCreate("Test GUI", 300, 200, -1, -1, -1, -1, $hWnd)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
EndSwitch
WEnd
Maza Faka
Да так большое спасибо. А чтобы они еще и закрывались вместе что сделать надо??
Да так большое спасибо. А чтобы они еще и закрывались вместе что сделать надо??
XpycTMD
Цитата:
Можно так:
Код: #include <GuiConstants.au3>
Run("notepad.exe")
WinWait("[Class:Notepad]")
$hWnd = WinGetHandle("[Class:Notepad]")
$hGui = GuiCreate("Test GUI", 300, 200, -1, -1, -1, -1, $hWnd)
GUISetState()
While 1
If Not WinExists($hWnd) Then ExitLoop
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Цитата:
закрывались вместе
Можно так:
Код: #include <GuiConstants.au3>
Run("notepad.exe")
WinWait("[Class:Notepad]")
$hWnd = WinGetHandle("[Class:Notepad]")
$hGui = GuiCreate("Test GUI", 300, 200, -1, -1, -1, -1, $hWnd)
GUISetState()
While 1
If Not WinExists($hWnd) Then ExitLoop
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Maza Faka
Можно но я сделал немного по другому. Вот что получилось:
Код: #include <GuiConstants.au3>
If WinExists("[Class:Notepad]") Then
$hWnd = WinGetHandle("[Class:Notepad]")
Start($hWnd)
Else
Exit
EndIf
$hWnd = WinGetHandle("[Class:Notepad]")
$hGui = GuiCreate("Test GUI", 300, 200, -1, -1, -1, -1, $hWnd)
GUISetState(@SW_SHOW)
While WinExists($hWnd)
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Можно но я сделал немного по другому. Вот что получилось:
Код: #include <GuiConstants.au3>
If WinExists("[Class:Notepad]") Then
$hWnd = WinGetHandle("[Class:Notepad]")
Start($hWnd)
Else
Exit
EndIf
$hWnd = WinGetHandle("[Class:Notepad]")
$hGui = GuiCreate("Test GUI", 300, 200, -1, -1, -1, -1, $hWnd)
GUISetState(@SW_SHOW)
While WinExists($hWnd)
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Цитата:
Вот что получилось:
И что же получилось?
Привет всем.. вот второй день изучаю данную софтину. очень всё интересно. перечитал все 43 станицы форума.
есть пара вопросов:
Нужно мне при определённом условии перепрыгуть кусок кода.
идеально бы была команда "goto"
Но как вычитал в хелпе афтор её исключил. и говорит что можно с циклами чёта замутить. мне ума не хватает.
Код: ;Проверяем существует ли файл..
If FileExists(@ProgramFilesDir & "\programma\file.txt") Then
типа прыгаем на нужный нам код.
EndIf
есть пара вопросов:
Нужно мне при определённом условии перепрыгуть кусок кода.
идеально бы была команда "goto"
Но как вычитал в хелпе афтор её исключил. и говорит что можно с циклами чёта замутить. мне ума не хватает.
Код: ;Проверяем существует ли файл..
If FileExists(@ProgramFilesDir & "\programma\file.txt") Then
типа прыгаем на нужный нам код.
EndIf
ynbIpb
Цитата:
Можно циклом, а можно заключить последующий код (тот который нужно "перепрыгнуть") в функцию...
Код: ;Прыгаем с циклом
While 1
If FileExists(@ProgramFilesDir & "\programma\file.txt") Then
ExitLoop
EndIf
;Тут другой код который не нужно перепрыгивать
ExitLoop
WEnd
;Тут код кторый нам нужен
;--------------------------------
;Используем функцию
If FileExists(@ProgramFilesDir & "\programma\file.txt") Then
MyJumpFunc()
Else
;Тут другой код который не нужно перепрыгивать
EndIf
Func MyJumpFunc()
;Тут код кторый нам нужен
EndFunc
Цитата:
Нужно мне при определённом условии перепрыгуть кусок кода.
Можно циклом, а можно заключить последующий код (тот который нужно "перепрыгнуть") в функцию...
Код: ;Прыгаем с циклом
While 1
If FileExists(@ProgramFilesDir & "\programma\file.txt") Then
ExitLoop
EndIf
;Тут другой код который не нужно перепрыгивать
ExitLoop
WEnd
;Тут код кторый нам нужен
;--------------------------------
;Используем функцию
If FileExists(@ProgramFilesDir & "\programma\file.txt") Then
MyJumpFunc()
Else
;Тут другой код который не нужно перепрыгивать
EndIf
Func MyJumpFunc()
;Тут код кторый нам нужен
EndFunc
Вот это подробный ответ!
Спасибо. Щас всё буду пробовать.
а по поводу не знал как получить ответ я имел ввиду что не знал что можно через переменную $Return_Value
Спасибо. Щас всё буду пробовать.
а по поводу не знал как получить ответ я имел ввиду что не знал что можно через переменную $Return_Value
кхм...плохо значит у мну дело....мжет есть какие др варианты получить имя и размер файла из USD????
ynbIpb
Цитата:
Почти каждая (встроенная) функция возвращает то или иное значение, которое можно вот таким образом помещать в переменные/массивы и т.д.
1ac3124
Цитата:
Можно так (только для выделенной ссылки):
Код: #include <GUIListBox.au3>
$hWnd = ControlGetHandle("[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]", "", "[CLASSNN:TListBox1]")
$iIndex = _GUICtrlListBox_GetCurSel($hWnd)
$sSelected_URL = _GUICtrlListBox_GetText($hWnd, $iIndex)
$sFileName = StringRegExpReplace($sSelected_URL, "^.*/", "")
$iFileSize = InetGetSize($sSelected_URL)
MsgBox(64, "Информация", "Имя файла: " & $sFileName & @LF & @LF & "Размер файла: " & Round($iFileSize / 1024, 1) & " MB")
Цитата:
не знал что можно через переменную $Return_Value
Почти каждая (встроенная) функция возвращает то или иное значение, которое можно вот таким образом помещать в переменные/массивы и т.д.
1ac3124
Цитата:
мжет есть какие др варианты получить имя и размер файла из USD?
Можно так (только для выделенной ссылки):
Код: #include <GUIListBox.au3>
$hWnd = ControlGetHandle("[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]", "", "[CLASSNN:TListBox1]")
$iIndex = _GUICtrlListBox_GetCurSel($hWnd)
$sSelected_URL = _GUICtrlListBox_GetText($hWnd, $iIndex)
$sFileName = StringRegExpReplace($sSelected_URL, "^.*/", "")
$iFileSize = InetGetSize($sSelected_URL)
MsgBox(64, "Информация", "Имя файла: " & $sFileName & @LF & @LF & "Размер файла: " & Round($iFileSize / 1024, 1) & " MB")
1ac3124
Цитата:
Значит ты не точно обьяснил суть задачи .
Цитата:
Не думаю что в этом случае поможет что-то другое... хотя всё возможно. К примеру TranslateIT умеет получать любой текст на экране под курсором мышки, он не использует формы/элементы и т.п., возможно там используется система OCR или нечто похожее (кстати через OCR можно и на AutoIt попробовать).
Цитата:
Если не секрет, зачем нужно получать оттуда данные?
Цитата:
ты мну не так понял чуть-чуть.
Значит ты не точно обьяснил суть задачи .
Цитата:
на счет др.способов я имел ввиду, может вообще не автоит использовать?
Не думаю что в этом случае поможет что-то другое... хотя всё возможно. К примеру TranslateIT умеет получать любой текст на экране под курсором мышки, он не использует формы/элементы и т.п., возможно там используется система OCR или нечто похожее (кстати через OCR можно и на AutoIt попробовать).
Цитата:
проблема есть
Если не секрет, зачем нужно получать оттуда данные?
да собсно проблема очпроста..нужна резидентная программ, которая будет скаченный файл из ycд заливать на другой сервер....тобишь передавать размер и имя в другую программу (размер чтобы выбрать аккаунт на который лить)
1ac3124
Цитата:
В принципе эту инфу можно вытащить из лога (USDownloader.log).
Цитата:
мжет есть какие др варианты получить имя и размер файла из USD?
В принципе эту инфу можно вытащить из лога (USDownloader.log).
Цитата:
кстати через OCR можно и на AutoIt попробовать
На моё же удивление, у меня получилось!
Внимание: для того чтобы работал OCR (Optical Character Recognation), Требуется *корректно* установлены Office 2003.
Код: #include <Array.au3>
#include <ScreenCapture.au3>
;Константы для _OCRGet()
Global Const $miLANG_ENGLISH = 9
Global Const $miLANG_RUSSIAN = 25
;Задаём заголовок окна для USD и путь к временному файлу для захваченного изображения
$USD_Title = "[REGEXPTITLE:Universal Share Downloader.*;CLASS:TForm1]"
$sCapture_File = @TempDir & "\USD_OCR_Tmp.jpg"
;Если не найдено окно USD, выходим из скрипта, дальше продолжать нет смысла
If Not WinExists($USD_Title) Then
MsgBox(16, "Ошибка!", "Не найден USDownloader." & @LF & @LF & "OK ---> EXIT")
Exit
EndIf
;Обработчик COM-ошибок
$oOCR_Error = ObjEvent("AutoIt.Error", "OCRErrFunc")
;Показываем/Активируем окно USD
WinSetState($USD_Title, "", @SW_SHOW)
WinActivate($USD_Title)
;Получаем уникальный идентификатор для элемента TPanel3
$TPanel_hWnd = ControlGetHandle($USD_Title, "", "[CLASSNN:TPanel3]")
;Получаем скрин элемента TPanel3 во временный файл
_ScreenCapture_CaptureWnd($sCapture_File, $TPanel_hWnd)
;Получаем текст из скрина используя спец. функцию
$aOCR_Array = _OCRGet($sCapture_File, $miLANG_ENGLISH)
;Удаляем наш временный файл
FileDelete($sCapture_File)
;Если получили массив с текстом, показываем его и отображаем нужные нам данные
If IsArray($aOCR_Array) Then
_ArrayDisplay($aOCR_Array)
;Элементы массива могут меняться в зависимости от содеражания текста в TPanel
$sFileName = $aOCR_Array[10]
$iFileSize = $aOCR_Array[12]
MsgBox(64, "Информация", "Имя файла: " & $sFileName & @LF & @LF & "Размер файла: " & $iFileSize & " MB")
EndIf
;Функция для получения текста из файла-изображения используя COM-объект MODI.Document (OCR - Оптическое распознавание символов)
;!!! Требуется *корректно* установлены Office 2003 !!!
Func _OCRGet($sImageFile, $mi_Lang)
Local $avRet_Array[1], $oWord
Local $miDoc = ObjCreate("MODI.Document")
$miDoc.Create($sImageFile)
If @error Then Return SetError(1)
$miDoc.Ocr($mi_Lang, True, False)
If @error Then Return SetError(2)
For $oWord In $miDoc.Images(0).Layout.Words
$avRet_Array[0] += 1
ReDim $avRet_Array[$avRet_Array[0]+1]
$avRet_Array[$avRet_Array[0]] = $oWord.Text
Next
Return $avRet_Array
EndFunc
;------------------------------ This is a COM Error handler --------------------------------
Func OCRErrFunc()
$HexNumber=hex($oOCR_Error.number,8)
Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
"err.description is: " & @TAB & $oOCR_Error.description & @CRLF & _
"err.windescription:" & @TAB & $oOCR_Error.windescription & @CRLF & _
"err.number is: " & @TAB & $HexNumber & @CRLF & _
"err.lastdllerror is: " & @TAB & $oOCR_Error.lastdllerror & @CRLF & _
"err.scriptline is: " & @TAB & $oOCR_Error.scriptline & @CRLF & _
"err.source is: " & @TAB & $oOCR_Error.source & @CRLF & _
"err.helpfile is: " & @TAB & $oOCR_Error.helpfile & @CRLF & _
"err.helpcontext is: " & @TAB & $oOCR_Error.helpcontext _
)
SetError(1) ; to check for after this function returns
Endfunc
кхм.....СБАСИБО...буду разбираться
ViSiToR
Цитата:
А если у меня стоит 2007 (незнаю корректно не корректно не я устанавливал) работать будет??
Добавлено
Проверил выдает ошибку
Цитата:
Требуется *корректно* установлены Office 2003
А если у меня стоит 2007 (незнаю корректно не корректно не я устанавливал) работать будет??
Добавлено
Проверил выдает ошибку
XpycTMD
Цитата:
Попробуй поставить паузу...
Код: $miDoc.Create($sImageFile)
If @error Then Return SetError(1)
Sleep(500)
$miDoc.Ocr($mi_Lang, True, False) ;Line 57
If @error Then Return SetError(2)
Цитата:
выдает ошибку
Попробуй поставить паузу...
Код: $miDoc.Create($sImageFile)
If @error Then Return SetError(1)
Sleep(500)
$miDoc.Ocr($mi_Lang, True, False) ;Line 57
If @error Then Return SetError(2)
ViSiToR
Цитата:
Все равно выдает ошибку. Может это из-за того что у меня стоит 2007 Офис
Цитата:
Попробуй поставить паузу...
Все равно выдает ошибку. Может это из-за того что у меня стоит 2007 Офис
XpycTMD
Цитата:
Не могу сказать, у меня 2003, нужно чтобы кто-то ещё попробовал, тот у кого 2007
Цитата:
Может это из-за того что у меня стоит 2007 Офис
Не могу сказать, у меня 2003, нужно чтобы кто-то ещё попробовал, тот у кого 2007
ViSiToR
Цитата:
Ладно с этим потом разберусь.
Есть еще вопрос а молжно ли сделать скриншот не всего экрана а только определенных координат???
Цитата:
Не могу сказать
Ладно с этим потом разберусь.
Есть еще вопрос а молжно ли сделать скриншот не всего экрана а только определенных координат???
ViSiToR
Цитата:
Выдает ошибку:
Код: The requested action with this object has failed.:
$miDoc.Ocr($mi_Lang, True, False)
$miDoc.Ocr($mi_Lang, True, False)^ ERROR
Цитата:
Не могу сказать, у меня 2003, нужно чтобы кто-то ещё попробовал, тот у кого 2007
Выдает ошибку:
Код: The requested action with this object has failed.:
$miDoc.Ocr($mi_Lang, True, False)
$miDoc.Ocr($mi_Lang, True, False)^ ERROR
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
Предыдущая тема: Quintura Search
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.