Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Эмуляции нажатия клавиш в неактивном окне

Ответить
Настройки темы
[решено] Эмуляции нажатия клавиш в неактивном окне

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток.

Необходим скрипт который будет удерживать/нажимать (в неактивном окне) клавишу. Имя процесса не меняется, изменяется лишь "Handle" заметил через AutoIt Window Info
Буду рад любой помощи

Отправлено: 18:37, 04-01-2011

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Примерно так:
Код: Выделить весь код
ControlSend("Title", "", "", "{ShiftDown}")

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:58, 04-01-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


А что если нужных процесса 2? Как не ошибиться в выборе?

Последний раз редактировалось ZARG-X, 05-01-2011 в 01:04.


Отправлено: 23:25, 04-01-2011 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата ZARG-X:
А что если нужных процесса 2? »
Тогда нужна функция получения Handle окна по процессу:

Код: Выделить весь код
$hWindow = _ProcessGetWindow("Proc.exe", 1)
ControlSend($hWindow, "", "Scintilla1", "{ShiftDown}")

Func _ProcessGetWindow($iPID, $iRet = -1)
    Local $aWinList = WinList(), $aRet[2]

    If IsString($iPID) Then
        $iPID = ProcessExists($iPID)
    EndIf

    For $i = 1 To UBound($aWinList)-1
        If BitAND(WinGetState($aWinList[$i][1]), 2) And WinGetProcess($aWinList[$i][1]) = $iPID Then
            $aRet[0] = $aWinList[$i][0] ;Title
            $aRet[1] = $aWinList[$i][1] ;WinHandle

            If $iRet = 0 Then
                Return $aRet[0]
            EndIf

            If $iRet = 1 Then
                Return $aRet[1]
            EndIf

            Return $aRet
        EndIf
    Next

    Return SetError(1, 0, $aRet)
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:39, 04-01-2011 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ковыряя код всё выглядит красиво, но вот не работает ничего. (даже кнопки рабочими сделать не могу)
Creat0R, поможешь еще раз?

Собственно вот что нужно..

Думаю с окнами понятно, разве что хотелось бы указывание какое окно выбрано (Handle). А вот под "Старт" и "Стоп" залипание клавиши.

Реально такое оживить?

Отправлено: 02:25, 05-01-2011 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата ZARG-X:
Думаю с окнами понятно »
Нет. Я вообще не понял что нужо делать.

Цитата ZARG-X:
хотелось бы указывание какое окно выбрано (Handle) »
Handle имеет свойство меняться (после перезапуска приложения), это уникальный идентификатор, на него полагаться нельзя (в смысле на тот что заранее “подсмотрен” в AutoIt Window Info).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 02:35, 05-01-2011 | #6


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Handle имеет свойство меняться (после перезапуска приложения) »
Но ведь и программу можно перезапустить. В дальнешем придется снова выбирать окно (тоже после перезапуска).
Хотя это уже не важно, можно обойтись.

Цитата Creat0R:
Я вообще не понял что нужо делать. »
Прошу прощения. Мой мозг уже спит без меня.

1. Залипание клавиши.
Нажимаешь кнопку "старт" залипание включено (допустим клавиша f1), нажимаем "стоп" залипание клавиши выключено. Скрипт кнопок тоже нужен.
Можно такое слепить?

2. Выбор окна.
Нажимаем кнопку "окно" и используя этот код
Код: Выделить весь код
$hWindow = _ProcessGetWindow("Proc.exe", 1)
ControlSend($hWindow, "", "Scintilla1", "{ShiftDown}")

Func _ProcessGetWindow($iPID, $iRet = -1)
    Local $aWinList = WinList(), $aRet[2]

    If IsString($iPID) Then
        $iPID = ProcessExists($iPID)
    EndIf

    For $i = 1 To UBound($aWinList)-1
        If BitAND(WinGetState($aWinList[$i][1]), 2) And WinGetProcess($aWinList[$i][1]) = $iPID Then
            $aRet[0] = $aWinList[$i][0] ;Title
            $aRet[1] = $aWinList[$i][1] ;WinHandle

            If $iRet = 0 Then
                Return $aRet[0]
            EndIf

            If $iRet = 1 Then
                Return $aRet[1]
            EndIf

            Return $aRet
        EndIf
    Next

    Return SetError(1, 0, $aRet)
EndFunc
выбираем нужное нам окно в котором будет залипание клавиши.
Это самое сложное пожалуй.

С моими кривыми руками тут самому ничего не сделать...

Отправлено: 03:17, 05-01-2011 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата ZARG-X:
Но ведь и программу можно перезапустить »
Я не понял, а как на счёт...
Цитата ZARG-X:
Имя процесса не меняется »
?

Цитата ZARG-X:
Нажимаешь кнопку "старт" залипание включено (допустим клавиша f1), нажимаем "стоп" залипание клавиши выключено »
Залипание в целом, или для выбранного окна?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 10:54, 05-01-2011 | #8


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Цитата Creat0R:
Залипание в целом, или для выбранного окна? »
Для выбранного окна

Отправлено: 13:26, 05-01-2011 | #9


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Неужели это не осуществить? Очень жаль...

Отправлено: 23:48, 05-01-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Эмуляции нажатия клавиш в неактивном окне

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - Восстановление данных после нажатия клавиш Shift+Delete berk2030 Накопители (SSD, HDD, USB Flash) 7 24-12-2010 22:35
[решено] эмуляция нажатия клавиш с помощью Autoit lekivanv AutoIt 5 18-11-2010 02:35
Вирус имитирующий нажатия клавиш и другие проблемы с компом skit99 Лечение систем от вредоносных программ 12 01-02-2010 09:34
[решено] Эмуляция ввода с клавиатуры или клик мышки на кнопку в неактивном окне Иск AutoIt 5 28-02-2009 12:30
Двойные нажатия клавиш ivank Железо в Linux 8 09-06-2003 09:24




 
Переход