Войти

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

Grammaton Cleric
25-11-2008, 01:58
И небольшое дополнение к сообщению Maza Faka,
If ProcessExists ( "ps.exe" )<>0 Then
ProcessClose
ProcessWaitClose
Дело в том, что это процесс программы "Punto Switcher" - переключателя языка ввода с клавиатуры. Эта программа следит за тем, что ты вводишь и смотрит, правильно ли у тебя выбрана раскладка клавиатуры. Если использовать команду Send () или ControlSend (), то отправляется просто указанный кусок строки, и если в это время будет запущен "Punto Switcher" - он может переключить раскладку и введется не то, что тебе надо, а, возможно, набор символов.

DImaN!
26-11-2008, 16:11
Подскажите пожалуйста, как можно в VBScript получить путь к текущей директории и zip-архиву. К примеру, на диске С в папке folder находится какой-то file.zip, нужно его распаковать средствами VBScript.
Но нужно, чтобы сам файл скрипт искал в той же директории, где и он сам находится (+ желательно, чтобы он искал все архивы и их распаковывал).
Вот пример моего кода, который как я написал распаковывает только указанный файл в указанной директории:

strZipFile = "c:\folder\file.zip"
outFolder = "c:\folder"

Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions

Creat0R
27-11-2008, 00:41
DImaN!, как можно в VBScript получить путь к текущей директории и zip-архиву »
А как это связано с данной темой?

Вам скорее сюда (http://forum.oszone.net/showthread.php?t=106528).

Frost_Imp
27-11-2008, 17:00
Товарищи, подскажите пожалуйста, можно ли каким-нибудь образом посылать клавиатурные команды (send) в НЕАКТИВНОЕ окно?

Creat0R
27-11-2008, 17:06
Frost_Imp, можно ли каким-нибудь образом посылать клавиатурные команды (send) в НЕАКТИВНОЕ окно? »
См. ControlSend() в справке.

Frost_Imp
27-11-2008, 17:46
См. ControlSend() в справке. »
Да, но...
Из справки:
Выслать строку символов управляющему элементу окна.
А если нет управляющего элемента?
Ну то есть, на конкретном примере: я отправлял нажатие определенной клавиши в активное окно с игрой. Естесственно, речь не идет об управляющих элементах. Как быть теперь тут?

Creat0R
27-11-2008, 21:51
Frost_Imp,
Естесственно, речь не идет об управляющих элементах »
Не естественно. Управляющие элементы это классы/идентификаторы контролов (элементов). Если это поле ввода, то можно пробовать по разному, например:

ControlSend("Заголовок приложения (игры?)", "", "Edit1", "Строка")

MastOfD
27-11-2008, 22:45
Хотел сделать АвтоЛогин...
Но не работает((... подскажите где косяк

#include <IE.au3>

$oIE = _IECreate ("http://ogame.ru")
$oForm = _IEFormGetObjByName ($oIE, "loginForm")
$oLogin = _IEFormElementGetObjByName($oForm, "login")

_IELoadWait ($oIE)

_IEFormElementSetValue($oLogin, "Master")

_IEFormSubmit($oForm)

litus
28-11-2008, 01:09
Доброго времени посетители форума подскажите пожалуста как можно реализовать такой код чтобы был перехват гарячих клавиш. К примеру нажимаем клавиши "Control + Q" и запускаеться определёный процес.

Maza Faka
28-11-2008, 07:11
перехват гарячих клавиш »

HotKeySet("^q", "_ProcessStart")
HotKeySet("^e", "_Exit")

While 1
Sleep(100)
WEnd

Func _ProcessStart()
Run("notepad.exe")
EndFunc

Func _Exit()
Exit
EndFunc

Maza Faka
28-11-2008, 12:25
Хотел сделать АвтоЛогин »
Попробуй так:
#include <IE.au3>

$sURL = "http://ogame.ru"

$oIE = _IECreate($sURL)

$oName = _IEGetObjByName($oIE, "login")
$oPass = _IEGetObjByName($oIE, "pass")
$oForm = _IEFormGetObjByName($oIE, "button")

_IEFormElementSetValue($oName, "MyLogin")
_IEFormElementSetValue($oPass, "Secret")
_IEFormSubmit($oForm)

Frost_Imp
28-11-2008, 13:39
Не естественно. Управляющие элементы это классы/идентификаторы контролов (элементов). Если это поле ввода, то можно пробовать по разному, например:
Код:
ControlSend("Заголовок приложения (игры?)", "", "Edit1", "Строка") »
А если нет поля ввода? В том то и проблема. Если есть контрол (его нет, но рассмотрим эту ситуацию), то это не стандартный виндовый контрол, так ведь? Окно игры - какие там контролы? Мне не важно. Важно, что если при активном окне я нажму кнопку, например, "1" - произойдет какое-то событие. Так вот мне и нужно - послать сигнал о нажатии на клавишу "1" в свернутое или неактивное окно с игрой.

SyDr
28-11-2008, 13:54
А нельзя ли его развернуть\сделать активным?
Потому что так врядли что-то получиться...
Если етбе необязательно нажимать определённую кнопку, а можно и мышкой клацнуть - можешь использовать

>>>> Window <<<<
Title: Warlords IV
Class: Sage7Window
Position: 0, 0
Size: 1030, 795
Style: 0x14CA0000
ExStyle: 0x00000100
Handle: 0x00410460

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:

>>>> Mouse <<<<
Position: 364, 351
Cursor ID: 0
Color: 0x090B09

>>>> StatusBar <<<<

>>>> Visible Text <<<<


>>>> Hidden Text <<<<


----------------------

В моём случае сработало так:
ControlSend( "Warlords IV", "", "", "{ESC}")

Maza Faka
28-11-2008, 14:03
послать сигнал о нажатии на клавишу "1" в свернутое или неактивное окно с игрой. »
А если попробовать без указания контрола? Иногда срабатывает:

ControlSend("Заголовок приложения (игры?)", "", "", "Строка")

Frost_Imp
28-11-2008, 17:32
А нельзя ли его развернуть\сделать активным? »
Да в том то и дело, что не хочется его разворачивать. При развернутом окне и SEND замечательно работает

CrazyNNM
28-11-2008, 21:16
Попробуй так:
Код:
#include <IE.au3>
$sURL = "http://ogame.ru"
$oIE = _IECreate($sURL)
$oName = _IEGetObjByName($oIE, "login")
$oPass = _IEGetObjByName($oIE, "pass")
$oForm = _IEFormGetObjByName($oIE, "button")
_IEFormElementSetValue($oName, "MyLogin")
_IEFormElementSetValue($oPass, "Secret")
_IEFormSubmit($oForm) »


а как найти имена этих контролов?
которые у тебя сейчас "login" и "pass"

Котяра
28-11-2008, 23:17
Экспериментально выяснил, как сделать проверку на ключ командной строки:

If $CmdLine[$CmdLine[0]] == '-run' Then
MsgBox(0, "o", "o")
EndIf

araneon
28-11-2008, 23:46
Ребята подскажите новечку, как сделать неактивное окно активным ??? Я пытаюсь сделать автоматическую установку программы (Fox video converter) так вот там в конце этот инстолятор ставит какието дполнения и после чего главное окно инсталятора становится неактивным. Мож кто знает выход из положения???

6757439
28-11-2008, 23:56
Ребята подскажите новечку, как сделать неактивное окно активным ??? Я пытаюсь сделать автоматическую установку программы (Fox video converter) так вот там в конце этот инстолятор ставит какието дполнения и после чего главное окно инсталятора становится неактивным. Мож кто знает выход из положения??? »
WinActivate("заголовок нужного окна", "")

Maza Faka
29-11-2008, 08:21
а как найти имена этих контролов? »
Используя бесплатную утилиту debugbar (http://www.debugbar.com/softwaredata/install-debugbar-v5.1.1.exe) :)

Экспериментально выяснил, как сделать проверку на ключ командной строки: »
А если ключей несколько? :)

WinActivate("заголовок нужного окна", "") »
А затем неплохо было бы дождаться момента, когда окно станет активным

WinWaitActive("заголовок нужного окна")




© OSzone.net 2001-2012