Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 5
1

Вставить текстовые данные в Edit дочернего окна стороннего приложения

24.02.2016, 00:37. Показов 1708. Ответов 5

Author24 — интернет-сервис помощи студентам
В общем имеется строковая переменная и окно стороннего приложения, имеющее дочернее окно класса Edit (класс узнал экспериментально с помощью EnumChildWindows()). Дескриптор этого окна (Edit) получен. Необходимо, собственно, вставить текст из переменной в окно. Пробовал так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hWnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        LParam As Any) As Long
Public Const WM_SETTEXT = &HC
 
Sub InsertText()
'...  здесь нашли Handle необходимого окна
SendMessage Handle, WM_SETTEXT, 0, "привет" 'текст просто для примера
End Sub
И так:
Visual Basic
1
2
3
 ' текст предварительно скопирован в буфер
SendMessage Handle, WM_COMMAND, WM_PASTE, 0 ' константы объявил: WM_COMMAND = &H111, _
 WM_PASTE = &H302
В результате ничего не происходит.
Окно это открывается другим макросом.
Visual Basic
1
SendKeys "^v"
пробовал, но в лучшем случае работает через раз, в зависимости от раскладки клавиатуры, положения звезд на небе и т. д. . А хотелось бы хоть какой-то надежности.

Уже неделю мучаюсь. Перечитал всевозможные форумы , но не нашел работающего варианта. Помогите пожалуйста, кто разбирается))

P. S. Скриншот окна во вложении. Не знаю зачем, но вдруг кому-то интересно. Окно похоже на стандартное виндусовское,но слегка видоизмененное
Миниатюры
Вставить текстовые данные в Edit дочернего окна стороннего приложения  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 00:37
Ответы с готовыми решениями:

Как непрерывно считывать данные с окна стороннего приложения?
Подскажите пожалуйста как можно непрерывно считывать данные с окна стороннего приложения? Мне...

Ввод информации в текстовые поля стороннего приложения
Здравствуйте уважаемые форумчане! Столкнулся с такой проблемкой: Нужно в чужом...

У дочернего окна не доступен Edit
Всем привет,нужна помощь. Вообщем недавно мне тут помогли с созданием дочернего окна.Вот код: ...

Процедура обработки дочернего окна (ListView и Edit)
Для начала в кратце опишу что есть в моём проэкте. 1.Обработчик "главного окна": LRESULT...

5
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,068
26.02.2016, 19:33 2
Из VBA не вставлял тест. Вставлял только из проги, написанной на ассемблере, используя ту самую SendMessage. Там работает на все 100%, невзирая на звёзды

В качестве предположения, вот тут чуть иначе синтаксис Ctrl+V, может в этом дело.
1
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 5
29.02.2016, 13:23  [ТС] 3
Спасибо за ответ Kubuntovod. Ваш вариант с Sendkeys пробовал - результат тот же

Решил проблему так:
Visual Basic
1
2
3
4
5
6
7
8
9
'...
Dim MyText as string : MyText = "привет" 'текст для примера
'скопировали данные из переменной в буфер 
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
       .SetText MyText
End With
'...
'вставили из буфера в текстовое окно
Sendmessage(Handle, WM_PASTE,0,0)
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,068
29.02.2016, 13:59 4
Хз почему так происходит. Вот такой вариант (о котором я говорил выше) работает, как с добрым утром:
Assembler
1
2
3
4
5
6
7
8
9
10
11
    call    FindWindowA,0,offset szTitle
    test    eax,eax
    jz  @@error
    mov h1,eax
    call    FindWindowExA,h1,0,offset szClass,0
    mov h2,eax
    call    FindWindowExA,h1,0,offset szClass1,offset szCapt
    mov h3,eax
    call    SendMessageA,h2,WM_SETTEXT,0,offset szPass
    call    SendMessageA,h3,WM_LBUTTONDOWN,1,1
    call    SendMessageA,h3,WM_LBUTTONUP,1,1
Но это ассемблер ...
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
29.02.2016, 14:21 5
Должен сработать AutoIt. А скрипт можно запустить макросом.
0
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 5
03.03.2016, 04:34  [ТС] 6
Теперь возник другой вопрос. Как проследить, что в окно был вставлен текст?
0
03.03.2016, 04:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2016, 04:34
Помогаю со студенческими работами здесь

Создание дочернего окна приложения
Как создать дочернее окно при нажатии на кнопку??? Не получается создать дочернее окно, чтобы оно...

Скриншот окна стороннего приложения
Добрый день! Подскажите, как сделать фото участка программы, зная не хэндл, а полный путь к...

Закрепление окна стороннего приложения
Пожалуйста подскажите, а лучше с примером. Как реализовать следующее: 1.жму на Form1...

Развёртывание окна стороннего приложения
Мне необходим метод, который будет разворачивать окно скайпа. ИЛи скажите что я не так написал...

Перемещение окна стороннего приложения
Среда - WindowsXP Программе известен дескриптор окна стороннего приложения. Как переместить...

Изменить размер окна стороннего приложения
Как изменить размер окна стороннего приложения. На данный момент есть доступ к Process. В каком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru