Программно напечатать в неактивный блокнот слово

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ghepard
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.01.2015 (Вс) 11:13

Программно напечатать в неактивный блокнот слово

Сообщение Ghepard » 14.06.2015 (Вс) 20:09

Каков принцип этого действия?
Находим открытый блокнот, и посылаем в него текст?
Подскажите какие операторы используются, если можно код.

Ghepard
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.01.2015 (Вс) 11:13

Re: Программно напечатать в неактивный блокнот слово

Сообщение Ghepard » 14.06.2015 (Вс) 20:42

получил хэндл текущего блокнота, как применить эти цифры для отправки в него текста?
Код: Выделить всё
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function PostMessage Lib "user32" _
                Alias "PostMessageA" (ByVal hwnd As Long, _
                                      ByVal wMsg As Long, _
                                      ByVal wParam As Long, _
                                      ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10
Private Sub Command1_Click()
Dim hWndActive As Long
Dim EndTime As Date
MsgBox "2 sek viberete okno"

EndTime = DateAdd("s", 2, Now)
Do Until Now > EndTime
    DoEvents
Loop
 

hWndActive = GetForegroundWindow()
Text1.Text = hWndActive

End Sub

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: Программно напечатать в неактивный блокнот слово

Сообщение Diamock » 16.06.2015 (Вт) 10:46

Обязательно сразу в блокнот?
Не проще, записать в файл и открыть в блокноте?
In der Beschrankung zeigt sich erst der Meister
Графоманю...

Ghepard
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.01.2015 (Вс) 11:13

Re: Программно напечатать в неактивный блокнот слово

Сообщение Ghepard » 16.06.2015 (Вт) 13:20

блокнот как пример и видимо неудачный) послать нажатия клавиш клавиатуры либо мышки в неактивную программу

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.06.2015 (Вт) 13:54

SendMessage же. Можно узнать, в чём вообще проблема?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Программно напечатать в неактивный блокнот слово

Сообщение Debugger » 16.06.2015 (Вт) 14:15

Qwertiy писал(а):SendMessage же. Можно узнать, в чём вообще проблема?

Судя по примеру кода, человеку не получить хендл нужного окна.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Программно напечатать в неактивный блокнот слово

Сообщение ger_kar » 16.06.2015 (Вт) 15:25

Вообще можно воспользоваться утилитой Spy++ из состава Visusl Studio 6 и посмореть, хендл окна через него сравнивая с тем, что возвращает код приложения на VB, а заодно и посмотреть доходят ли оконные сообщения в нужное окно.
Бороться и искать, найти и перепрятать

Ghepard
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.01.2015 (Вс) 11:13

Re: Программно напечатать в неактивный блокнот слово

Сообщение Ghepard » 17.06.2015 (Ср) 14:43

а что с кодом не так? 2 секунды есть чтобы выделить нужное окно и после считывается его хэндл, может что-то и не так, но цифарки менялись на разных окнах.

"SendMessage" можно пример с использованием хендла?
допустим хендл 1234567, а послать проге неактивной надо букву "t"

kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Re: Программно напечатать в неактивный блокнот слово

Сообщение kiber_punk » 17.06.2015 (Ср) 22:36

Как вариант, можете не заморачиваться, а использовать, например, метод ControlSend библиотеки AutoitX3.dll.
Mea culpa

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Программно напечатать в неактивный блокнот слово

Сообщение bon818 » 17.06.2015 (Ср) 22:37

Ghepard писал(а):а что с кодом не так? 2 секунды есть чтобы выделить нужное окно и после считывается его хэндл, может что-то и не так, но цифарки менялись на разных окнах.


Код вернет хэндл диалогового окна, и посланные в него символы попадут в заголовок этого окна.

Ghepard писал(а):"SendMessage" можно пример с использованием хендла?
допустим хендл 1234567, а послать проге неактивной надо букву "t"


Отправить текст в окно можно так
Код: Выделить всё
Declare Function SendMessageW Lib "User32.dll" _
    (ByVal hWnd As Long, ByVal dwMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Const WM_SETTEXT = &HC
......
sTxt AS STRING = Привет Вася
SendMessageW хэндл_окна, WM_SETTEXT, 0, StrPtr(sTxt)
ИЛИ
bTxt() AS BYTE = Привет Вася
SendMessageW хэндл_окна, WM_SETTEXT, 0, VarPtr(bTxt(0))
......

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Программно напечатать в неактивный блокнот слово

Сообщение Хакер » 18.06.2015 (Чт) 2:25

Он хочет допечатать, а не заменить.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Ghepard
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.01.2015 (Вс) 11:13

Re: Программно напечатать в неактивный блокнот слово

Сообщение Ghepard » 20.06.2015 (Сб) 19:30

да действительно используется шапка блокнота, а не поле ввода( и заменяется на пустоту а не на то что ввел.
про AutoitX3.dll почитал скачал, пока не знаю как пользоваться
прочитал в инструкции к программе uoPilot(програмка кликер для игр) следующее: "Примечание: если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2. Учтите, что проверка цвета в определенных координатах корректно работает только при развернутом окне ультимы." И сразу натолкнуло меня это на мысль, что это очень не просто. Можно ли получить средствами VB6 скрин игрушки, которая свёрнута?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Программно напечатать в неактивный блокнот слово

Сообщение Mikle » 20.06.2015 (Сб) 20:15

Ghepard писал(а):Можно ли получить средствами VB6 скрин игрушки, которая свёрнута?

А ты уверен, что вообще корректно говорить про скриншот свёрнутого окна?

Ghepard
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.01.2015 (Вс) 11:13

Re: Программно напечатать в неактивный блокнот слово

Сообщение Ghepard » 20.06.2015 (Сб) 21:59

нет, а как бы вы это назвали?
в инете есть темка, называют именно так http://www.cyberforum.ru/delphi/thread1242100.html

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Программно напечатать в неактивный блокнот слово

Сообщение bon818 » 20.06.2015 (Сб) 22:16

Ghepard писал(а):заменяется на пустоту а не на то что ввел.

заменяется на содержимое перемененной sTxt
Ghepard писал(а):про AutoitX3.dll почитал скачал, пока не знаю как пользоваться

метод ControlSend библиотеки AutoitX3.dll, это та же SendMessage только в виде функции\макроса для Autoit.

kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Re: Программно напечатать в неактивный блокнот слово

Сообщение kiber_punk » 20.06.2015 (Сб) 22:22

Например, так:
Код: Выделить всё
Set oAutoIt = CreateObject
("AutoItX3.Control")
oAutoIt.ControlSend "Безымянный - Блокнот",
"", "Edit1", "Строка текста"
Mea culpa


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList