Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Grammaton Cleric
25-11-2008, 01:58
И небольшое дополнение к сообщению Maza Faka,
If ProcessExists ( "ps.exe" )<>0 Then
ProcessClose
ProcessWaitClose
Дело в том, что это процесс программы "Punto Switcher" - переключателя языка ввода с клавиатуры. Эта программа следит за тем, что ты вводишь и смотрит, правильно ли у тебя выбрана раскладка клавиатуры. Если использовать команду Send () или ControlSend (), то отправляется просто указанный кусок строки, и если в это время будет запущен "Punto Switcher" - он может переключить раскладку и введется не то, что тебе надо, а, возможно, набор символов.
Подскажите пожалуйста, как можно в 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
DImaN!, как можно в VBScript получить путь к текущей директории и zip-архиву »
А как это связано с данной темой?
Вам скорее сюда (http://forum.oszone.net/showthread.php?t=106528).
Frost_Imp
27-11-2008, 17:00
Товарищи, подскажите пожалуйста, можно ли каким-нибудь образом посылать клавиатурные команды (send) в НЕАКТИВНОЕ окно?
Frost_Imp, можно ли каким-нибудь образом посылать клавиатурные команды (send) в НЕАКТИВНОЕ окно? »
См. ControlSend() в справке.
Frost_Imp
27-11-2008, 17:46
См. ControlSend() в справке. »
Да, но...
Из справки:
Выслать строку символов управляющему элементу окна.
А если нет управляющего элемента?
Ну то есть, на конкретном примере: я отправлял нажатие определенной клавиши в активное окно с игрой. Естесственно, речь не идет об управляющих элементах. Как быть теперь тут?
Frost_Imp,
Естесственно, речь не идет об управляющих элементах »
Не естественно. Управляющие элементы это классы/идентификаторы контролов (элементов). Если это поле ввода, то можно пробовать по разному, например:
ControlSend("Заголовок приложения (игры?)", "", "Edit1", "Строка")
Хотел сделать АвтоЛогин...
Но не работает((... подскажите где косяк
#include <IE.au3>
$oIE = _IECreate ("http://ogame.ru")
$oForm = _IEFormGetObjByName ($oIE, "loginForm")
$oLogin = _IEFormElementGetObjByName($oForm, "login")
_IELoadWait ($oIE)
_IEFormElementSetValue($oLogin, "Master")
_IEFormSubmit($oForm)
Доброго времени посетители форума подскажите пожалуста как можно реализовать такой код чтобы был перехват гарячих клавиш. К примеру нажимаем клавиши "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" в свернутое или неактивное окно с игрой.
А нельзя ли его развернуть\сделать активным?
Потому что так врядли что-то получиться...
Если етбе необязательно нажимать определённую кнопку, а можно и мышкой клацнуть - можешь использовать
>>>> 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"
Экспериментально выяснил, как сделать проверку на ключ командной строки:
If $CmdLine[$CmdLine[0]] == '-run' Then
MsgBox(0, "o", "o")
EndIf
Ребята подскажите новечку, как сделать неактивное окно активным ??? Я пытаюсь сделать автоматическую установку программы (Fox video converter) так вот там в конце этот инстолятор ставит какието дполнения и после чего главное окно инсталятора становится неактивным. Мож кто знает выход из положения???
Ребята подскажите новечку, как сделать неактивное окно активным ??? Я пытаюсь сделать автоматическую установку программы (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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.