Войти

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [39] 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

DImaN!
31-07-2008, 18:39
Сама программа - нет, скрипт по эмуляции работы человека - на AutoIT

Maza Faka
01-08-2008, 07:51
DImaN!
Непонятен смысл такого "логирования". Ведь все действия и так будут описаны в скрипте :) Смотри функции FileWrite(); FileWriteLine()

Babullika
01-08-2008, 22:03
Здраствуйте , уважаемые програмисты , подскажите как можно средствами AutoIT определить что программа зависла ? Нужно типо if <прога зависла> do ...

266903582
01-08-2008, 23:11
По вопросу записи действий пользователя могу подкинуть примерчик. Писал для личного пользования, упрощал создание автоустановщика программ.
#include <Misc.au3>
FileDelete("file.au3")
$dll = DllOpen("user32.dll")
$file = FileOpen("file.au3", 1)
$ffi=""
wr("run('')")
while not _IsPressed("11", $dll) ;ждем нажатия контрола
sleep(10)
WEnd
TrayTip("","ЗАПИСЫВАЕМ",1)
While 1
if _IsPressed("01", $dll) Then ;lmb ctrltext & classn
$wtt=WinGetTitle("")
$wgt=WinGetText("")
$wgt=repl($wgt)
$cgf=ControlGetFocus("")
if $cgf<>"" then wr("cl('"&$wtt&"','"&$wgt&"','"&$cgf&"')") ;ControlGetText("","",ControlGetFocus(""))&@lf&
ToolTip($wtt&@lf&$cgf)
EndIf
if _IsPressed("13",$dll) Then
TrayTip("","ПАУЗА",1)
sleep(300)
while 1
if _IsPressed("13",$dll) Then ExitLoop
sleep(10)
WEnd
TrayTip("","ЗАПИСЫВАЕМ",1)
sleep(300)
EndIf
if _IsPressed("1b", $dll) Then ExitLoop ;esc
sleep(10)
WEnd
;дополнение :)
wr("Func wa($tx1, $tx2)")
wr(" While WinExists($tx1, $tx2)=0")
wr(" Sleep(1) ")
wr(" WEnd ")
wr("EndFunc")
wr("Func cl($tx1, $tx2,$classn)")
wr(" wa($tx1, $tx2)")
wr(" ControlClick($tx1, $tx2,$classn)")
wr("EndFunc")
DllClose($dll)
FileClose($file)
Func wr($ff)
if $ffi<>$ff then
FileWrite($file,$ff&@LF)
$ffi=$ff
EndIf
EndFunc

Func wa($tx1, $tx2)
While WinExists($tx1, $tx2)=0
Sleep(1)
WEnd
EndFunc
Func cl($tx1, $tx2,$classn)
wa($tx1, $tx2)
ControlClick($tx1, $tx2,$classn)
EndFunc
func repl($ffff)
$tempstr=$ffff
$tempstr=StringReplace($tempstr,@crlf,@lf)
$tempstr=StringReplace($tempstr,@cr,@lf)
$ffff=""
$buff=""
$counter=0

while StringLen($ffff)<200; or StringLen($tempstr)<>0
$symb=StringLeft($tempstr,1)
$tempstr=StringTrimLeft($tempstr,1)
$buff=$buff&$symb
if $symb=@lf Then
if $counter<10 then $buff=""
if $counter>=30 then
$ffff=$ffff&$buff;&@lf
$counter=0
$symb=""
EndIf
EndIf
if $symb<>@lf Then $counter+=1
if StringLen($tempstr)=0 then ExitLoop
WEnd
$ffff=StringReplace($ffff,"'","")
return $ffff
EndFunc

После его работы файл необходимо подредактировать и все готово :)
Хотя скрипт до ума так и не доведен, но пользоваться можно.

Solitude
02-08-2008, 01:59
Подскажите, можно ли средставми AutoIt изменять резрешения к определенному разделу реестра ?

Maza Faka
02-08-2008, 08:29
Babullika
как можно средствами AutoIT определить что программа зависла ?
$hWnd = WinGetHandle("Документ1 - Microsoft Word")

$aRet = DllCall("user32.dll", "int", "IsHungAppWindow", "hwnd", $hWnd)

If $aRet[0] = 1 Then MsgBox(64, "Внимание", "Приложение не отвечает")
Проверил на MS Word-e, "вешаем" его вот этой строчкой: уточнение наличия запасов м.с.;, и хотя в официальном описании (http://msdn.microsoft.com/en-us/library/ms633526(VS.85,printer).aspx) сказано, "Ghost windows always return TRUE", тем не менее функция работает правильно :)

Babullika
02-08-2008, 13:47
2 Maza Faka СПАСИБО огомное !
Щас появилась ещё одна проблемма , делаю ProcessClose на прогу у которой есть иконка в трее и иконка непропадает пока на неё не наведёшь мышкой , можно как-нибудь сделать чтоб она сразу пропадала ?

Maza Faka
02-08-2008, 14:08
Babullika
SystemTray_Refresh (http://www.autoitscript.com/forum/index.php?showtopic=66629&view=findpost&p=493629)

Positiv
05-08-2008, 16:48
Подскажите пожалйста примерчик следующего скрипта: скрипт проверяет соединение с интернетом, если таковое отсутствует то подключает подключение по умолчанию. Буду премного благодарен!!!

Wu-Tang
05-08-2008, 18:17
Хочу поделиться закомпиленным скриптом, взятым в FAQ-е по автоустановке, подредактированного мной, для авторебута компьютера, после первого логона в систему:

BrAWo
05-08-2008, 19:27
Народ помогите
есть задачка:
нужно узнать какие основной dns и альтернативный dns использует пользователь и если они не правильные то поменять их на правильные.

пример:
основной dns: 192.168.0.1
альтернативный dns: 192.168.0.2

надо поменять на
основной dns: 192.168.0.254
альтернативный dns: 192.168.0.253

при этом надо учитывать что само соединение может называться по разному:
Local Area Connection
или Local Area Connection2
....
Local Area Connection10
или
Подключение по локальной сети
.....
Подключение по локальной сети3
...

amel27
06-08-2008, 08:07
Wu-Tang
ОФФТОП: эта тема для обсуждения открытого кода, а не "закрытых" приложений

BrAWo
если они не правильные то поменять их на правильные »может не заморачиваться лишними строчками кода и сразу вбивать без проверки?Dim $aDNSList[2]=["192.168.0.1","192.168.0.2"]

$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$colNetCards = $objWMIService.ExecQuery ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For $objNetCard In $colNetCards
$intErrorSetDNSServerSearchOrder = $objNetCard.SetDNSServerSearchOrder($aDNSList)
Next

Maza Faka
06-08-2008, 08:09
Positiv
скрипт проверяет соединение с интернетом
Подключение Dial-UP?

Positiv
06-08-2008, 10:33
Maza Faka, нет, подключени высокоскоростное(DSL). А разве это важно. Подключение в точности такое же как и у диалапа.

Maza Faka
06-08-2008, 13:51
Positiv
А разве это важно
Да, что бы наверняка определить состояние, вот для начала, проверь какие строки возвращаются при подключенном и отключенном соеденении:
Global Const $INTERNET_CONNECTION_MODEM = 0x1
Global Const $INTERNET_CONNECTION_LAN = 0x2
Global Const $INTERNET_CONNECTION_PROXY = 0x4
Global Const $INTERNET_CONNECTION_MODEM_BUSY = 0x8
Global Const $INTERNET_RAS_INSTALLED = 0x10
Global Const $INTERNET_CONNECTION_OFFLINE = 0x20
Global Const $INTERNET_CONNECTION_CONFIGURED = 0x40

Dim $State, $val

$InetStruct = DllStructCreate("int")

DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "dword", 0)

$val = DllStructGetData($InetStruct, 1)

If BitAND($val, $INTERNET_CONNECTION_MODEM) Then $State &= "Modem connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_LAN) Then $State &= "LAN connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_PROXY) Then $State &= "Proxy connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_MODEM_BUSY) Then $State &= "Modem bussy" & @LF
If BitAND($val, $INTERNET_RAS_INSTALLED) Then $State &= "RAS installed" & @LF
If BitAND($val, $INTERNET_CONNECTION_OFFLINE) Then $State &= "Offline connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_CONFIGURED) Then $State &= "Connection configured"

MsgBox(0, "Connection", $State)

Подключение в точности такое же как и у диалапа
А как дозваниваешься? У меня dial-up подключение, поэтому все тонкости ADSL подключения я не знаю.

Positiv
06-08-2008, 22:26
Maza Faka, при отключенном соединении выдает в одном окне следующее: LAN connection, Proxy connection, RAS installed, Connection configured.
При подключенном же: Modem connection, RAS installed, Connection configured. А
дозвон так же как и на диалапе, в окне вводишь имя и пароль и жмешь кнопочку подключение.

BrAWo
07-08-2008, 06:38
может не заморачиваться лишними строчками кода и сразу вбивать без проверки? »

Спасибо огромное

можно еще небольшой вопрос:
если указано:

основной dns: 192.168.0.1
альтернативный dns: 192.168.0.2

а нужно оставить только:
основной dns: 192.168.0.1

Maza Faka
07-08-2008, 09:14
Positiv
Попробуй так:
If _GetConnectState() = 1 Then Exit

Global Const $INTERNET_AUTODIAL_FORCE_UNATTENDED = 0x02

$ConNumber = DllStructCreate("int")
DllStructSetData($ConNumber, 1, 0)

DllCall("wininet.dll", "int", "InternetDial", "hwnd", 0, _
"ptr", 0, _
"int", $INTERNET_AUTODIAL_FORCE_UNATTENDED, _
"ptr", DllStructGetPtr($ConNumber), _
"int", 0)

Func _GetConnectState()
Local Const $INTERNET_CONNECTION_MODEM = 0x1
Local $InetStruct = DllStructCreate("int")

DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "dword", 0)

If BitAND(DllStructGetData($InetStruct, 1), $INTERNET_CONNECTION_MODEM) Then Return 1
EndFunc

amel27
07-08-2008, 09:41
BrAWo
нужно оставить только:
основной dns: 192.168.0.1 »
хоть один, хоть десять - первая строка:Dim $aDNSList[1]=["192.168.0.1"]

trash1
07-08-2008, 12:54
Подскажите, как отправить Alt+<русская буква> в какое-нибудь приложение? Например Alt+Ф в блокнот.

Перепробовал кучу вариантов, в том числе:
Send(!Ф)
Send({ALT}ф)
Send({ALT}{ф})
и т.п.

Ничего не работает. Приходится иметь дело с русскими менюшками, лучшего способа, чем посылать шорткаты, нет. Autoit юзается как activex из ruby, возможностей заюзать "дополнительные" функции нет.

Вопрос проскакивал в топике, но ответа не было.

Если кто знает решение - напишите пожалуйста.




© OSzone.net 2001-2012