Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нажатие клавиши в определённое окно 
:(
    Опции темы
qweqwe
Дата 4.2.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



осьаточно хобы сделать так чтобы перед началом точка добавлялась =)

Сможешь -)
PM MAIL   Вверх
I_Am_Rock
Дата 4.2.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Разницы нет - точка или символ... Главное до ярлыков добраться! smile Этого я никогда не пробовал... Вот этим вечером (может ближе к ночи) и попробую...

З.Ы. Если бы неделю назад мне кто-нибудь сказал, что я буду переименовывать ярлыки, чтобы послать символ из одной проги в другую - не поверил бы...
PM MAIL WWW   Вверх
I_Am_Rock
Дата 4.2.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Решение найдено!
Слава Богу, обошлось без переименовывания ярлыков (возможно, это и не помогло бы)...
Главное, об этом (SetForegroundWindow) уже писали на 1 странице темы...

Напиши, как проверишь. Мне, интересно - у тебя будет работать или нет. По идее, должно... У меня ведь работает - больше ярлыки не выделяются...

Код

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const VK_Q = &H51
Const KEYEVENTF_KEYUP = &H2
Dim g As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Command1_Click()
g = FindWindow(vbNullString, "Game")
If g = 0 Then GoTo 1
SetForegroundWindow g
SetWindowPos g, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
keybd_event VK_Q, 0, 0, 0
keybd_event VK_Q, 0, KEYEVENTF_KEYUP, 0
SetWindowPos g, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
1
End Sub

PM MAIL WWW   Вверх
cardinal
Дата 5.2.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



I_Am_Rock, qweqwe, написали бы темку для FAQ'а чтоли, раз столько работы проделано...  smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
qweqwe
Дата 5.2.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Да с ярлыками всё нормал но я заметил что если открыть пуск в то он сворачивается , ф также нажатие неотрпавляется в свёрнутое окно.
Ты молодца smile  но кодик надо ещё доработать.
PM MAIL   Вверх
I_Am_Rock
Дата 5.2.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



С пуском понял, а вот со свернутым окном не очень - у меня посылается даже если оба окна (и с этим кодом и окно-цель) свернуты...

Но я, конечно, буду еще думать...

Кстити, в моем-то коде символ посылается через нажатие Command1... Чтобы проверить со свернутыми окнами я вставляю этот код в Timer1... А ты как делаешь?..

Еще вот что - если ты скажешь, зачем тебе посылать символ (и вообще зачем такая программа), я возможно найду какой-нибудь другой способ, более удобный... Если, конечно, не секрет...smile
PM MAIL WWW   Вверх
I_Am_Rock
Дата 5.2.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Что-то не пойму!..:(

У меня не возникает проблем ни с пуском, ни со свернутыми окнами...
Символ посылается всегда...
PM MAIL WWW   Вверх
qweqwe
Дата 6.2.2008, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Ну незнаю быть может у меня китайская англофицированая винда....
PM MAIL   Вверх
qweqwe
Дата 6.2.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Я пишу программу для онлайн игры где спомощью неё можно автоматизировать AFK.
PM MAIL   Вверх
I_Am_Rock
Дата 6.2.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Понятно. Ну, других способов, кроме выбранного тобой, предложить не могу...:(
PM MAIL WWW   Вверх
LawYard
Дата 12.2.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Ребят, может есть где-то тема, но я не нашел. Интересует следующая вещь:

Нажатие сочетания клавиш (напр. alt+R) в окне с названием например WINDOW и клики по заданным точкам этого приложения при нажатии кнопки.  С одной кнопко вроде что-то понятно и с кликом мыши просто по экрану, но надо чтобы кликало и нажималось по свернотому приложению с определенным заголовком.  Сможете помочь?
PM MAIL   Вверх
I_Am_Rock
Дата 12.2.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Чуть попозже посмотрю, что можно сделать...
PM MAIL WWW   Вверх
I_Am_Rock
Дата 12.2.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Alt+R...

Код

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const VK_R = &H52
Const VK_MENU = &H12
Const KEYEVENTF_KEYUP = &H2

keybd_event VK_MENU, 0, 0, 0
keybd_event VK_R, 0, 0, 0
keybd_event VK_R, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0



...чтобы это делалось в окне WINDOW

Код

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Dim g

g = FindWindow(vbNullString, "WINDOW")
SetForegroundWindow g



С нажатием мыши должно помочь это...

Код

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10

PM MAIL WWW   Вверх
LawYard
Дата 12.2.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Что-то с комбинацией клавиш не оч выходит. Забил вот это:

Код

Public Class Form1
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    Dim g
    Const VK_R = &H52
    Const VK_MENU = &H12
    Const KEYEVENTF_KEYUP = &H2


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        g = FindWindow(vbNullString, "WINDOW")
        SetForegroundWindow(g)
        keybd_event(VK_MENU, 0, 0, 0)
        keybd_event(VK_R, 0, 0, 0)
        keybd_event(VK_R, 0, KEYEVENTF_KEYUP, 0)
        keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0)
    End Sub
End Class


тобишь при нажатии на кнопку жолжно посылать в окно WINDOW комбинацию клавиш. Однако ничего не происходит. Вообще. Если убать Альт, а посылать просто R, то оно посылается только, если окно WINDOW развернуто на экране, если же оно свернуто, то ничего не посылается ((

Это сообщение отредактировал(а) LawYard - 12.2.2008, 20:02
PM MAIL   Вверх
I_Am_Rock
Дата 12.2.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15




Попробуйте временно вывести окно на передний план (см. самый верхний код на этой странице)...

Код

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2

'Здесь идет SetForegroundWindow g
SetWindowPos g, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
'Здесь "нажатие" клавиш
SetWindowPos g, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE

PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.