Войти

Показать полную графическую версию : [Архив - Часть 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

Creat0R
05-06-2008, 11:04
DENoszone, в поле сообщения ввести определеный текст. »
Примерно так:

#include <GuiConstants.au3>
#include <IE.au3>

$oIE = _IECreate("http://odnoklassniki.km.ru/my/mail/message.asp?iduser=1200000")

$oForm = _IEFormGetCollection($oIE, 1)
$oQuery = _IEFormElementGetCollection($oForm, 0)
_IEFormElementSetValue($oQuery, "определеный текст")

_IEFormSubmit($oForm)

DENoszone
05-06-2008, 11:20
а как в цикл?
и как +1 к ссылке?
и ксатти не отправляет вроде...
может другой браузер надо:

Creat0R
05-06-2008, 11:30
DENoszone, а как в цикл?
и как +1 к ссылке? »

См. For ... Next...

$iCounter = 0

For $i = 0 To 10
$URL = "http://odnoklassniki.km.ru/my/mail/message.asp?iduser=120000" & $i
Next

не отправляет вроде »
Нет, у меня это не получилось :( , я с _IE* функциями особо не сталкивался, смотри примеры в справке.

DENoszone
05-06-2008, 11:41
та я просто...до этого так же как и ты сделал...оно и не пахало..во тчего написал...

Белтон
07-06-2008, 01:42
Подскажите пожалуйста, у меня есть exe файлик в редакторе ресурсов написано что он создан с помощью "AutoIt v3 Script : 3, 2, 2, 0" я хотел бы узнать как и чем его можно открыть и посмотреть какие команды он выполняет, это возможно? Извините если не по теме.

Creat0R
07-06-2008, 03:09
Белтон, как и чем его можно открыть »
Старые версии AutoIt'а можно было декомпилировать (если не установлен пароль, или если он известен :) ), для этого есть в пакете с AutoIt инструмент Exe2Aut.

KKulik
09-06-2008, 12:21
подскажите пожалуйста как в скрипте получить входные параметры, переданные при запуске скрипта.

Пример вызова

C:\script>input.exe параметр

Пример скрипта

MsgBox (0,"Example", "параметр" )

Maza Faka
09-06-2008, 12:24
KKulik
Help (http://www.autoitscript.com/autoit3/docs/intro/running.htm#CommandLine)

KKulik
09-06-2008, 12:25
спасибо

DENoszone
09-06-2008, 20:25
ну что не как не получится моё сделать?

HORRIBLE
10-06-2008, 17:01
Подскажите пожалуйсто, как узнать URL странички которая уже открыта ? Т.е. мне нужно узнать адрес странички на которой сейчас находится пользователь.


Давно тут приводился пример мониторинга нажатия клавиш на клавиатуре,

#include <DllCallBack.au3>

Global Const $WH_KEYBOARD_LL = 13
Global $hHook, $pStub_KeyProc
Global $pStub_KeyProc = _DllCallBack ("_KeyProc","int;ptr;ptr")
Global $hmod = DllCall("kernel32.dll","hwnd","GetModuleHandle","ptr",0)
Global $hHook = DllCall("user32.dll","hwnd","SetWindowsHookEx","int", _
$WH_KEYBOARD_LL,"ptr",$pStub_KeyProc,"hwnd",$hmod[0],"dword",0)
Global $buffer = ""

MsgBox(4096,"","Type anything anywhere and it will appear in the top left corner of the screen.")


While 1
Sleep(10)
WEnd

Func EvaluateKey($keycode)
If (($keycode > 22) And ($keycode < 91)) _
Or (($keycode > 47) And ($keycode < 58)) Then
$buffer &= Chr($keycode)
ToolTip($buffer,0,0)
ElseIf ($keycode > 159) And ($keycode < 164) Then
Return
EndIf
EndFunc

Func _KeyProc($nCode, $wParam, $lParam)
Local $ret,$KEYHOOKSTRUCT
If $nCode < 0 Then
$ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _
"int",$nCode,"ptr",$wParam,"ptr",$lParam)
Return $ret[0]
EndIf
If $wparam = 256 Then
$KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr",$lParam)
EvaluateKey(DllStructGetData($KEYHOOKSTRUCT,1))
EndIf
$ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _
"int",$nCode,"ptr",$wParam,"ptr",$lParam)
Return $ret[0]
EndFunc

Func OnAutoItExit()
DllCall("user32.dll","int","UnhookWindowsHookEx","hwnd",$hHook[0])
EndFunc
, но у меня почему то выпадает ошибка.... #include <DllCallBack.au3> (ошибка открытия файла) из -за чего это может быть, стоит последняя версия AUTO IT.

DENoszone, можно изголиться вот так ))(т.к. по нормальному не получилось написать, вечно спрашивал заблочить ли ему пользователя или нет),
#include <IE.au3>
for $i =0 to 10
$oIE = _IECreate("http://odnoklassniki.km.ru/my/mail/message.asp?iduser=120000"&$i)
WinSetState($oIE, "",@SW_SHOWMAXIMIZED)
_IELoadWait ($oIE,1000,60000)
MouseClick("LEFT",440,485)
Send("SPAM SPAM")
MouseClick("LEFT",870,571)
_IELoadWait ($oIE,1000,60000)
_IEQuit ($oIE)
Next

, только одно но, отправляются одни латинские буквы нормально, русские идут кракозяброй и иногда пролетает с нажатием на кнопку.

Maza Faka
10-06-2008, 17:42
пример мониторинга нажатия клавиш на клавиатуре »
Начиная с версии 3.2.10.0 DllCallBack функции включены в AutoIt по умолчанию (так сказать стали нативными), соответсвенно нужно немного исправить скрипт:
Global Const $WH_KEYBOARD_LL = 13
Global $hHook, $pStub_KeyProc
Global $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
Global $hmod = DllCall("kernel32.dll","hwnd","GetModuleHandle","ptr",0)
Global $hHook = DllCall("user32.dll","hwnd","SetWindowsHookEx","int", _
$WH_KEYBOARD_LL,"ptr",DllCallbackGetPtr($pStub_KeyProc),"hwnd",$hmod[0],"dword",0)
Global $buffer = ""

MsgBox(4096,"","Type anything anywhere and it will appear in the top left corner of the screen.")

While 1
Sleep(10)
WEnd

Func EvaluateKey($keycode)
If (($keycode > 22) And ($keycode < 91)) _
Or (($keycode > 47) And ($keycode < 58)) Then
$buffer &= Chr($keycode)
ToolTip($buffer,0,0)
ElseIf ($keycode > 159) And ($keycode < 164) Then
Return
EndIf
EndFunc

Func _KeyProc($nCode, $wParam, $lParam)
Local $ret,$KEYHOOKSTRUCT
If $nCode < 0 Then
$ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _
"int",$nCode,"ptr",$wParam,"ptr",$lParam)
Return $ret[0]
EndIf
If $wparam = 256 Then
$KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr",$lParam)
EvaluateKey(DllStructGetData($KEYHOOKSTRUCT,1))
EndIf
$ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _
"int",$nCode,"ptr",$wParam,"ptr",$lParam)
Return $ret[0]
EndFunc

Func OnAutoItExit()
DllCall("user32.dll","int","UnhookWindowsHookEx","hwnd",$hHook[0])
EndFunc

Creat0R
10-06-2008, 17:57
HORRIBLE,
нужно узнать адрес странички на которой сейчас находится пользователь »
Это зависит от того какой браузер используется. С IE всё просто:

$URL = ControlGetText("[CLASS:IEFrame]", "", "Edit1")

:)

HORRIBLE
11-06-2008, 16:32
Можно ли вернуть список запущенных процессов ПОЛЬЗОВАТЕЛЕМ ?

Creat0R
11-06-2008, 20:30
HORRIBLE, Можно ли вернуть список запущенных процессов ПОЛЬЗОВАТЕЛЕМ ? »
Можно:

#include <Array.au3>

$aProcessInfo = _ProcListByUserName(@UserName)
_ArrayDisplay($aProcessInfo)

Func _ProcListByUserName($sUserName = @UserName)
Local $oColItems, $objWMIService, $objItem, $cI_Compname = @ComputerName
Local $aProcessList[1]

$objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
$oColItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL")

If Not IsObj($oColItems) Then Return SetError(1, 2, 0)

For $objItem In $oColItems
If $objItem.CSName <> $sUserName Then ContinueLoop

$aProcessList[0] += 1
ReDim $aProcessList[$aProcessList[0] + 1]
$aProcessList[$aProcessList[0]] = $objItem.Name
Next

Return $aProcessList
EndFunc

HORRIBLE
12-06-2008, 12:55
Creat0R, возвращает массив пустой, хотя у меня запущено некое кол-во программ от пользователя.

Maza Faka
12-06-2008, 13:48
Вышла версия 3.2.12.1
Изменений мало, только фиксы:
http://www.autoitscript.com/autoit3/downloads.shtml

3.2.12.1 (12th June, 2008) (Release)

AutoIt:
- Fixed #309: RunAs() and RunAsWait() now use @SystemDir as the working directory instead of @WorkingDir when a user-supplied working directory is not specified.
- Fixed #325: contextmenuitem not firing events.
- Fixed #282: Icon transparency refresh when on tab regression.
- Fixed #360: RunAs() under Windows 2000.


As the 3.2.12.x branch will be the last version compatible with NT4 and 9x we have backported a few of the most important recent fixes into this release.

Creat0R
HORRIBLE
возвращает массив пустой, хотя у меня запущено некое кол-во программ от пользователя
У меня тоже не работает.

Creat0R
12-06-2008, 17:58
HORRIBLE,
возвращает массив пустой »
Можно ещё так:

#include <Array.au3>

$aProcessInfo = _ProcListByUserName(@UserName)
_ArrayDisplay($aProcessInfo)

Func _ProcListByUserName($sUserName = @UserName)
Local $oColItems, $objWMIService, $objItem, $cI_Compname = @ComputerName
Local $aProcessList[1]

$objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
$oColItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL")

If Not IsObj($oColItems) Then Return SetError(1, 2, 0)

For $objItem In $oColItems
If _GetExtProperty($objItem.ExecutablePath, 8) <> $sUserName Then ContinueLoop

$aProcessList[0] += 1
ReDim $aProcessList[$aProcessList[0] + 1]
$aProcessList[$aProcessList[0]] = $objItem.Caption
Next

Return $aProcessList
EndFunc

Func _GetExtProperty($sPath, $iProp)
Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
$iExist = FileExists($sPath)
If $iExist = 0 Then Return SetError(1, 0, 0)

$sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
$sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, "\", 0, -1)))
$oShellApp = ObjCreate("shell.application")
$oDir = $oShellApp.NameSpace($sDir)
$oFile = $oDir.Parsename($sFile)

If $iProp = -1 Then
Local $aProperty[35]

For $i = 0 To 34
$aProperty[$i] = $oDir.GetDetailsOf($oFile, $i)
Next

Return $aProperty
Else
$sProperty = $oDir.GetDetailsOf($oFile, $iProp)

If $sProperty = "" Then Return 0
Return $sProperty
EndIf
EndFunc

Хотя тоже не надёжно, но я других методов не знаю :(

Deep2007
12-06-2008, 20:04
Помогите разобраться. Открываю AutoIt 3, копирую туда текст из файла справки по автоустановке Windows:

ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
For $i = 1 to 99 step 3.3
$j=$j-1
sleep(1000)
ProgressSet( $i, "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
Next
ProgressSet(-1 , "Шеф! Все пропало. Прощайте.")
Shutdown(2)

sleep(5000)

сохраняю это все как 12.au3, запускаю его, выскакивает окно:
Line 1 (...)
ProgressOn("Пожалуйста, подождите..."....
......................................................................
Error: Variable used without begin declared.


Что делаю неверно?

Creat0R
13-06-2008, 02:44
Deep2007, Что делаю неверно? »
Это не полный код примера, полный есть тут (http://wiki.oszone.net/index.php/Перезагрузка_компьютера).

Вот немного поправлены пример:

BlockInput(1)

$j = 30

ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", _
StringFormat("Система обнаружила использование нелегальной\n" & _
"копии Windows. Через %i сек. все данные\n" & _
"на ваших дисках будут уничтожены.", $j))

For $i = 1 To 99 Step 3.3
$j -= 1

Sleep(1000)

ProgressSet($i, _
StringFormat("Система обнаружила использование нелегальной\n" & _
"копии Windows. Через %i сек. все данные\n" & _
"на ваших дисках будут уничтожены.", $j))
Next

ProgressSet(100, "Шеф! Все пропало. Прощайте.")

Shutdown(2)
Sleep(5000)




© OSzone.net 2001-2012