PDA

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

Maza Faka
13-06-2008, 12:43
HORRIBLE
Creat0R

Нашёл таки, как вернуть список запущенных процессов ПОЛЬЗОВАТЕЛЕМ :)
#include <Array.au3> ; Нужно только для фунции _ArrayShow() :)

$aOwnerList = _ProcessOwnerList() ; получаем список всех процессов и их владельцев
_ArrayDisplay($aOwnerList, "List of processes owner`s")

$aProcOwner = _ProcessGetOwner(@UserName) ; а здесь получаем список всех процессов и их владельцев
; +и создаём новый на основе имени пользователя
_ArrayDisplay($aProcOwner, "List of processes owner by " & @UserName)

Func _ProcessOwnerList()
Local $objWMIService, $colProcessList, $objProcess, $iUser, $aList[1][2]

$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
$colProcessList = $objWMIService.ExecQuery("Select * from Win32_Process")

For $objProcess In $colProcessList
$colProperties = $objProcess.GetOwner($iUser)

If $colProperties <> 0 Then ContinueLoop

$aList[0][0] += 1
ReDim $aList[$aList[0][0] + 1][2]
$aList[$aList[0][0]][0] = $objProcess.Name
$aList[$aList[0][0]][1] = $iUser
Next

If UBound($aList) = 1 Then Return SetError(1, 0, 0)

Return $aList
EndFunc

Func _ProcessGetOwner($sUser)
Local $aOwnerList = _ProcessOwnerList()
If @error Then Return SetError(1, 0, 0)

Local $aUserProc[1][2], $i

For $i = 1 To $aOwnerList[0][0]
If $aOwnerList[$i][1] = $sUser Then
$aUserProc[0][0] += 1
ReDim $aUserProc[$aUserProc[0][0] + 1][2]
$aUserProc[$aUserProc[0][0]][0] = $aOwnerList[$i][0]
$aUserProc[$aUserProc[0][0]][1] = $aOwnerList[$i][1]
EndIf
Next

If UBound($aUserProc) = 1 Then Return SetError(2, 0, 0)
Return $aUserProc
EndFunc

ARBUZ
14-06-2008, 10:09
Люди!! кто разбирается в скриптах!! помогите сделать скрипт который автоматом будет создавать PPPoE соеденение!! плиз!! очень очень нуна!!!!

SyDr
14-06-2008, 20:00
Func DOWNKEY()
$D = $D + 1
Send("{DOWN DOWN}")
$D = $D - 1
if $D < 1 then Send("{DOWN UP}")
EndFunc

Как с помощью HotkeySet реализовать зажимание клавиши и отпускание клавиши?
То есть: я зажал на клавиатуре W - игра думает, что я зажал вверх. Отпустил - отпустил вверх.
1) Пока получается сделать только так, что игруха реагирует на это, как будто я постоянно клацаю вверх.

2) Подержал допустим секунд 10. Отпустил. AutoIt ещё какое-то время обрабатывает и отсылает нажатия.

SyDr
15-06-2008, 09:29
ARBUZ, тебе случаем не rasphone.exe нужно?
Запуск: rasphone.exe -d <Имя подключения>.
Только нужно, чтобы галочка Сохранять имя пользователя и пароль была отмечена (или вводить придётся).

Вот скрипт:

Run ("rasphone.exe -d <Имя подключения>")
WinWait("Подключение")
ControlSend("Подключение","<Кусок текста из окна>",1590,"{ENTER}")

Только лучше больше информации "впихивать". Т.е. не Подключение, а Подключение: GUEST


Аа... Понял. Тебе настройка соединения нужна.
Напиши, какие настройки нужно указывать, а то мало ли.
То есть такой код у меня спокойно работает:
Run ("rasphone.exe")
WinWait("Сетевые подключения")
ControlClick("Сетевые подключения","",1459)
WinWaitActive("Мастер новых подключений")
ControlClick("Мастер новых подключений","",1491)
ControlClick("Мастер новых подключений","",12324)
ControlSend("Мастер новых подключений","",1114,"<Имя подключения>")
ControlClick("Мастер новых подключений","",12325)
WinWaitActive("Сетевые подключения")
ControlClick("Сетевые подключения","",1449)
WinWaitActive("Подключение: <Имя подключения>")
ControlSend("Подключение: <Имя подключения>","",1104,"<Имя пользователя>")
ControlSend("Подключение: <Имя подключения>","",1103,"<Пароль пользователя>")
ControlClick("Подключение: <Имя подключения>","",1101)
ControlClick("Подключение: <Имя подключения>","",1623)
ControlClick("Подключение: <Имя подключения>","",1590)

ARBUZ
15-06-2008, 11:56
подскажите еще ммомент, когда подключение уже создалось, как сделать что бы еще и настраивались свойства безопасности????

SyDr
15-06-2008, 12:23
Run ("rasphone.exe")
WinWait("Сетевые подключения")
ControlClick("Сетевые подключения","",1459)
WinWaitActive("Мастер новых подключений")
ControlClick("Мастер новых подключений","",1491)
ControlClick("Мастер новых подключений","",12324)
ControlSend("Мастер новых подключений","",1114,"<Имя подключения>")
ControlClick("Мастер новых подключений","",12325)
WinWaitActive("Сетевые подключения")

ControlClick("Сетевые подключения","",1460) ;клик по свойствам
WinWaitActive("<Имя подключения> Свойства");ждём активности окна
ControlCommand ( "<Имя подключения> Свойства", "", 12320, "TABRIGHT","");перемещаемся на вкладку
ControlCommand ( "<Имя подключения> Свойства", "", 12320, "TABRIGHT","");безопасность

Далее всё, как обычно. ControlClick, ControlSend
Выбор из выпадающего списка - ControlCommand ( "<Имя подключения> Свойства", "", 12320, "SetCurrentSelection","<текст пункта выпадающего списка>");

Узнать ID отдельных элементов можно с помощью Au3Info.exe

Кстати, все настройки (кроме имени пользователя и пароля) хранятся в
C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk

ARBUZ
15-06-2008, 13:05
слушай Sylver Dragon можешь мне в аську написать??? я вижу ты понимаешь у меня есть пару вопросиков. 6584016

Maksimkama
16-06-2008, 06:41
Первый раз запустил AutoIt запустил пример из папки examples и сразу возник вопрос есть скрипт notepad1.au3 почему он не хотел у меня набирать текст я понял, название окошка у меня на русском а там на английском. Но затем я немогу осуществить выход из блокнота, т.к. немогу послать !ф и ы для выхода. Помему то скрипт в этом случае русские буквы передаёт как ôû "ô" это ф и "û" это ы. Соответсвенно он их пишет в поле ввода текста, и всё. не пашет таким образом.

Maza Faka
16-06-2008, 07:54
Maksimkama
В шапке есть FAQ, в котором есть примеры переключения раскладки клавиатуры.

Maksimkama
16-06-2008, 09:40
Спасиб. не помогло. кодировка стоит 1251 всё верно, если в 866 кодировке то показывает äë а не ôû :-) блин что за фигня даж не пойму. Хотя по русски тоже не пишет. Перепробовал переключать раскладку. либо не догнал чего то. писать по русски он тоже не пишет.

Maza Faka
16-06-2008, 11:12
Maksimkama
Я писал не про кодировку, а про языковую раскладку:
Run("notepad.exe")

WinWait("[Class:Notepad]")

$hWnd = WinGetHandle("[Class:Notepad]")

_SetKeyboardLayout("00000419", $hWnd)

Send("Привет мир!")

Func _SetKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $ret[0])
EndFunc


Дополнительные языки.

"00000407" Немецкий (стандартный)
"00000409" Английский (США)
"0000040C" Французский (стандартный)
"0000040D" Финский
"00000410" Итальянский
"00000415" Польский
"00000419" Русский
"00000422" Украинский
"00000423" Белорусский
"00000425" Эстонский
"00000426" Латвийский
"00000427" Литовский

tyrty_a
16-06-2008, 13:07
Стоит такая задача: отслеживать в реальном времени идет ли закачка файла через Download Master. Файл и адрес ссылки могут быть любые. Если в данный момент закачка не идет, то предпринять некий набор действий.

Как я представляю, необходимо использовать RawSocket. Кто-нибудь реализовывал подобное? Может у кого есть примеры работы с сокетами на AutoIt?

Maza Faka
16-06-2008, 15:39
tyrty_a
Самый простой способ это возвращать размер скачиваемого файла и если по истечении определённого времени размер не меняется, то предпринять некий набор действий.

tyrty_a
16-06-2008, 15:47
Maza Faka,
Самый простой способ это возвращать размер скачиваемого файла

К сожалению, этот вариант не пройдет. Download Master создает временный файл, который по размеру совпадает с закачиваемым файлом. Его размер в процессе закачки не меняется. Это сделано для резервирования места на диске, чтобы в процессе закачки не кончилось место.

Maksimkama
17-06-2008, 04:23
Maza Faka, странно вставлял вчера из примера тоже самое, не переключалось. счас переключается, пишет на русском, но не срабатывает

Send("!ф")
Send("ы")

что по идее должно посылать ALT+Ф и Ы для выхода из блокнота. Что не так?

Ну собственно я конечно не для того, чтобы с блокнотом баловаться взял AutoIt.
Хочу автоматизировать процесс записи телеперадач и перекодировки видео в divx. Запись уже происходит сама (встроенный в программ планировщик), но мощности компа не хватает писать сразу в divx сначала пишу в mpeg потом надо перетащить файлы в converter который идёт в комплекте с divx-ом затем после окончания обработки нужно узнать перекодировался ли файл (не нулевой ли у него размер) и поудалять mpeg файлы, которые мы посылали на перекодировку. я конечно понимаю что есть люди которые эту фигнюшку за пять минут напишут :-)
хотел бы именно узнать как реализовать перетаскивание, сравнение названий файлов без расширения, узнать размер файла.

Maza Faka
17-06-2008, 08:48
Maksimkama
для выхода из блокнота
Не проще ли использовать функцию WinClose()? :)

Maksimkama
17-06-2008, 12:26
Maza Faka, ну я прост разбирал как работает скрипт, и выяснил что alt+русская буква почему то не работают :-(

HiGH_ZeRO
18-06-2008, 00:53
сделал через koda

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Управление нетом", 256, 71, 193, 125)
GUISetBkColor(0x000000)
$Button1 = GUICtrlCreateButton("Подключитися к нету", 0, 8, 131, 25, 0)
$Button2 = GUICtrlCreateButton(Отключитися", 0, 40, 131, 25, 0)
$Label1 = GUICtrlCreateLabel("HiGH_ZeRO", 136, 24, 117, 27)
GUICtrlSetFont(-1, 14, 400, 0, "Book Antiqua")
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd

теперь хочу назначить на $Button1 Run ('cmdow rasdial NET USER Pass','','')
а на $Button2 Run ('cmdow rasdial /d','','')
но незнаю как

Котяра
18-06-2008, 01:02
Case $GUI_EVENT_CLOSE Exit »
заменить на
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Run("winver.exe")
Case $Button2
Run("calc.exe")

Естественно, вместо winver.exe и calc.exe прописать нужные команды.

HORRIBLE
18-06-2008, 17:08
Подскажите.
Есть файл в нем есть английские буква их нужно преобразовать в русские. Тут был примерчик преобразовывающий русские в английские и обратно буквы, но у меня не получается сделать чтобы преобразование шло с английского на русский.




© OSzone.net 2001-2012