Показать полную графическую версию : [Архив - Часть 1.2] AutoIt скрипты
А кто нибудь знает как взять текст из TreeView, ListView и Listbox входящих в состав интерфейса других програм
(а не GUI сгенерированного autoit скриптом)?
Имеется программа Runpad Shell. У нее есть API.
API в основном используется клиентами программ контроля, хотя может быть полезным и для любых сторонних утилит.
Все функции реализованы ввиде COM-сервера.
Примеры использования для C, C++, Delphi находятся здесь
Общие замечания:
- доступ к функциям осуществляется через единый интерфейс IRunpadShell
- все функции возвращают S_OK в случае успеха и другие коды в противном случае
- функции не являются Unicode
Моя задача написать утилиту, которая бы использовала апи программы на автоит.
Примеры на C, C++, Delphi имеются, но я совершенно не понимаю в этих языках, а с автоит поладил.
Возможно ли написание такой программы на AutoIt?
Sanja Alone
11-05-2006, 03:22
NORIO
А кто нибудь знает как взять текст...С уверенностью утверждать не буду (мне это пока не особо нужно было, поэтому лог обновлений просмотрел мельком), но, вроде в текущих бетах АвтоИт-а такие возм-ти реализованы - попробуй скачать (http://www.autoitscript.com/autoit3/files/beta/autoit/).
Пытаюсь разобраться с регулярными выражениями в AutoIt, но не получается :(
Следующий код не работает:
Local $sPattern, $sTest, $vResult, $nFlag
$sPattern = InputBox("StringRegExp Sample", "What is the pattern to test?")
$sTest = InputBox("StringRegExp Sample", "What is the line to test?")
$vResult = StringRegExp ($sTest, $sPattern)
Select
Case @Error = 2
; Error. The pattern was invalid. $vResult = position in $sPattern where error occurred.
Case @Error = 0
if @Extended Then
; Success. Pattern matched. $vResult matches @Extended
Else
; Failure. Pattern not matched. $vResult = ""
EndIf
EndSelect
MsgBox(0, "", $vResult)
Не работает, выпадает окошко (во вложении)
Что я делаю не так ???
VedunO, функцию по-ходу убрали (во всяком случае в 3.1.1 ее уже нет)
Никто не в курсе - в будующих версиях планируется ли введение в функцию FindFirstFile() рекурсивного просмотра (с вложенными папками)?
Sanja Alone
16-05-2006, 03:39
VedunO
Что я делаю не такСудя по скриншоту - пытаешься исп-ть более раннюю версию AutoIt не знающую данную ф-цию. Или не загрузил обновление для SciTE (http://www.autoitscript.com/autoit3/scite/downloads.php), в к-ром будут прописаны новые ф-ции.
XXXler
функцию по-ходу убрали (во всяком случае в 3.1.1 ее уже нет)Точнее сказать - добавили, а в 3.1.1 ее еще нет.
The public history for AutoIt v3 (http://www.autoitscript.com/autoit3/files/beta/autoit/docs/history.htm)
Full technical log including beta versions (http://www.autoitscript.com/autoit3/files/beta/autoit/docs/autoit_changelog.txt)
Sanja Alone,
Точнее сказать - добавили, а в 3.1.1 ее еще нет.
странно, в русской справке к v3.1.0 она упоминается
Sanja Alone
17-05-2006, 02:03
XXXler
странно, в русской справке к v3.1.0 она упоминается
Это весьма забавный момент: в англ. справке к версии 3.1.1 этой ф-ции нет, но ее знает SciTE (с дефинишенами для AutoIt версии 3.1.1). Т.е., по идее, в 3.1.1 ф-ция должна быть, но, при попытке запуска скрипта вылазит окошко с ошибкой (неизвестное имя ф-ции) - тут явно авторы AutoIt намудрили...
Подскажите, как запустить процесс с параметром снятого атрибута ONTOP.
Сам процесс - это окошко с атрибутом ONTOP.
Если ждать появления окна а потом с помощью WinSetState снять атрибут ONTOP, то оно успевает вылезти на самый верх, после чего убирается.
Да, заодно еще вопросик.
Сможет ли, запущенный процесс со снятым атрибутом ONTOP, запускать окошки с атрибутами ONTOP?
А эту проблемку можно обойти?
Dirk Diggler
21-05-2006, 03:28
Я использую Send для посылки текстати типа "xUSSR"
Send("xUSSR")
Но это работает только когда раскладка английская. Как сделать так, чтобы и в русской и прочих раскладках посылалось именно то, что написано?
bogomolv
21-05-2006, 06:15
Dirk Diggler
Я использую Send...
А я использую Поиск...
Поэтому знаю, что проблема легко решается с помощью clipboard. :)
Dirk Diggler
21-05-2006, 13:22
Какой еще клипборд в консольных приложениях типа окна cmd.exe????
bogomolv
22-05-2006, 08:56
Dirk Diggler
Такой: http://forum.oszone.net/post-424899-108.html. Это ответ на твой первый вопрос.
И такой: http://forum.oszone.net/post-428524-126.html. Это - на второй.
Dirk Diggler
22-05-2006, 09:57
Ни первая, ни вторая ссылка не в тему. Не работает вставка клипборда в консольное окно. Dixi. Нужен другой способ.
Особенно я не понял, причем тут Stdout
bogomolv
22-05-2006, 20:13
Dirk Diggler
WinWaitActive('Командная строка')
ClipPut('xUSSR')
MouseClick('right')
Send('а')
Я на все вопросы ответил? Спасибо за внимание.
Dirk Diggler
23-05-2006, 12:39
Нет. Ибо в моей практике 20% консольных окон не выкидывают контекстного меню. Пришлось доработать, но не в этом суть.. А в том, что всё это как-то через задницу. Результат - скрипт для регистрации nnbackup
$Dir = @ProgramFilesDir & "\NNbackup"
$SF= "nnbackup xReg"
Opt ("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=...]
Opt ("MouseCoordMode", 0)
Opt ("TrayIconDebug",1)
#include <Date.au3>
$iWeekday = _DateToDayOfWeek (@YEAR, @MON, @MDAY)
Select
Case $iWeekday = 1
$Day="воскресенье"
Case $iWeekday = 2
$Day="понедельник"
Case $iWeekday = 3
$Day="вторник"
Case $iWeekday = 4
$Day="среда"
Case $iWeekday = 5
$Day="четверг"
Case $iWeekday = 6
$Day="пятница"
Case $iWeekday = 7
$Day="суббота"
EndSelect
$TEMP = @WorkingDir
FileChangeDir ($Dir)
Run($SF)
WinWaitActive("nnbackup.exe")
;Sleep ( 1000 )
ClipPut('xUSSR регистрация')
MouseMove(10,10,0)
MouseClick('right')
Send("{DOWN 7}{RIGHT}{DOWN 2}{ENTER 2}")
ClipPut($day )
Sleep (500 )
MouseClick('right')
Send("{DOWN 7}{RIGHT}{DOWN 2}{ENTER 2}")
bogomolv
23-05-2006, 20:10
Dirk Diggler
Твоя задачка напомнила что-то подозрительно знакомое. Вспомнил - SlyControl...
Хоть давно им не пользуюсь, удалось разыскать у себя в архиве скрипт:
RunWait('regedit /s "' & $pDir & 'Sly.reg"')
If @MON=01 Then $mnc='югбоьт'
If @MON=02 Then $mnc='хлбюмеч'
If @MON=03 Then $mnc='ноуь'
If @MON=04 Then $mnc='ббулзт'
If @MON=05 Then $mnc='нок'
If @MON=06 Then $mnc='йрот'
If @MON=07 Then $mnc='йрит'
If @MON=08 Then $mnc='бмаээь'
If @MON=09 Then $mnc='рлоьупыт'
If @MON=10 Then $mnc='пдсснюч'
If @MON=11 Then $mnc='маьпьт'
If @MON=12 Then $mnc='елйонюч'
RegWrite('HKEY_CURRENT_USER\Software\SlyDiman\SlyControl2', 'xUSSR', 'REG_SZ', $mnc)
Не могу понять, как работает функция "InetGet", пишу:
FtpSetProxy(1) ; прокси не используется
InetGet ("ftp://user:password@10.1.1.18/file.ext", "D:\file.ext", 1)
... и ничего
P.S. вбиваю этот же адрес в Internet Explorer (v6.0) и все работает отлично, пока пользуюсь внешним WGET-ом
Solitude
28-05-2006, 02:27
Подкажите как в AutoIt скрипте дождаться появления некотрого файла, тоесть выполнение скрипта надо продолжить только тогда как появиться конкреткный файл ???
Monarhia
28-05-2006, 03:45
1) Можно ли замениь значок который светитса в панели здач?
2) Какой командой возможно открыть порт?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC