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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отправить в TextBox другого приложения из VB, В TextBox другого приложения из VB 
:(
    Опции темы
I_Am_Rock
Дата 7.4.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

Private Const WM_SETTEXT = &HC


В прикрепл. файле моя прога. С помощью "Найти мышью" найди этот текстбокс. Нажми "Скрыть" и "Показать", чтобы убедиться, что это он. Потом с помощью "Опред. родительский" определяй его родительские объекты до главного окна.
В своей программе ищи его по классу. Класс можно опред. с помощью InqSoft Sign 0f Misery (ищи в инете)

P.S. Вообще разные чудеса с этими объектами бывают. Например, панель меню в проводнике не явл. обычным меню, как в др. прогах (напр., в блокноте), а явл. объектом...

Это сообщение отредактировал(а) I_Am_Rock - 7.4.2008, 12:32

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  UpravlenieObjectami.rar 17,47 Kb
PM MAIL WWW   Вверх
20071231
Дата 7.4.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 26.5.2007
Где: Россия, Белая Кал итва

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



хотелось бы сказать большое спасибо I_Am_Rock, очень полезную тему разобрали. у меня вот вопрос, с помощью этой проги "InqSoft Window Scanner" я легко нахожу имена классов любых окон. мне понадобилось отправлять сообщения в окно браузера, в чате на майле, но "InqSoft Window Scanner" определяет, что все что идет под панелью как бы одно окно, все что там имеет одно имя класса, и отправляя в него сообщения ничего не проиходит, не подскажите что можно сделать? 

может можно какими либо способами передать фокус этому окошку, проблема в том что само это маленькое окошко не имеет своего собственного имени класса

еще хотел спросить у I_Am_Rock, каким методом ты делаешь окна активными, неактивными, скрыть показать, и получить текст окна?

Это сообщение отредактировал(а) 20071231 - 7.4.2008, 14:53
PM MAIL   Вверх
I_Am_Rock
Дата 7.4.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



С чатом на мэйле я, наверное, не смогу тебе помочь...(

Активным/неактивным
Код

Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
EnableWindow g, 0
EnableWindow g, 1


Показать/Спяртать
Код

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
ShowWindow g, 0
ShowWindow g, 5
'значения от 1 до 4 тоже, кажется, как-то показывают. Точно не знаю - как...


Узнать заголовок окна
Код

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

'Не помню, где взял эту функцию
Private Function GetCaption(ByVal lhWnd As Long) As String
Dim sA As String, lLen As Long
lLen& = GetWindowTextLength(lhWnd&)
sA$ = String(lLen&, 0&)
Call GetWindowText(lhWnd&, sA$, lLen& + 1)
GetCaption$ = sA$
End Function

GetCaption(g)

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


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 26.5.2007
Где: Россия, Белая Кал итва

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



Большое спасибо))  smile 
PM MAIL   Вверх
20071231
Дата 7.4.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 26.5.2007
Где: Россия, Белая Кал итва

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



все работает кроме этой функции

Код

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

'Íå ïîìíþ, ãäå âçÿë ýòó ôóíêöèþ
Private Function GetCaption(ByVal lhWnd As Long) As String
Dim sA As String, lLen As Long
lLen& = GetWindowTextLength(lhWnd&)
sA$ = String(lLen&, 0&)
Call GetWindowText(lhWnd&, sA$, lLen& + 1)
GetCaption$ = sA$
End Function


на GetWindowTextLength гугается, м, мож я прост не догнал чво, ее в форму веть вставлять?

PM MAIL   Вверх
I_Am_Rock
Дата 7.4.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это мой косяк...

вместо 1 строчки в твоем последнем коде...

Код

Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long


Добавлено через 33 секунды
А! Нет - Та чтрочка тоже нужна...)

Добавлено через 1 минуту и 21 секунду
Вот так...smile

Код

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long


Private Function GetCaption(ByVal lhWnd As Long) As String
Dim sA As String, lLen As Long
lLen& = GetWindowTextLength(lhWnd&)
sA$ = String(lLen&, 0&)
Call GetWindowText(lhWnd&, sA$, lLen& + 1)
GetCaption$ = sA$
End Function


Добавлено через 6 минут и 39 секунд
А потом...

Код

h = GetCaption(g)


, где h - Заголовок окна...
PM MAIL WWW   Вверх
suvorr
Дата 8.4.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



I m Rock-y   Поюзал Вашу прогу. Во первых, если интересен отзыв юзера, позвольте пару технических комментов.
 -Если не ставить "Поверх всех окон" то при запуске обьекта (ФайрФокса например) прога прячется и непонятно как ее зажечь! В панели то задач ее нет! 
- Если же поставить "Поверх.." то прога закрывает собой свои собственные меседжбоксы ("дочерних окон нет") и при этом не перетаскивается и ни на что не реагирует!
То есть мне пришлось ее гасить через таскменеджер, да и тот еще каким-то образом завис! _Кашмааар!
  Ну ладно -это лирика. Теперь по сути. Я нашел след семейство окон   860
                                                                                                                     362
                                                                                                                     712-934-650-816
860 это окно проги с заголовком
362 - выдается с помощью "найти мышью" но на скрыть\показать никак не реагирует
712 -не знаю
934 -это ЗНАЧОК В ИНТЕРЕСУЮЩЕМ МЕНЯ ПОЛЕ ВВОДА!!(реагирует на скрыть\показать)
650 и 816 -это уже там следующие окна которые меня не интересуют
И что дальше? Изменеие текста никак на экране не отражается. SendMessage - кому и какое ?


PM MAIL WWW Skype   Вверх
I_Am_Rock
Дата 8.4.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужно найти главное окно с помощью FindWindow, и потом по очереди дочерние с помощью FindWindowEx. Даже если объект не реагирует на скрыть/показать, то его нельзя игнорировать.
Найденному нужному окну посылается СендМесседж, как в примерах на первой странице

з.ы. А разве значок моей проги не отображается в трее? smile Иначе я бы не убрал его с панели задач... Др. замечания запомню и постараюсь исправить...smile
PM MAIL WWW   Вверх
I_Am_Rock
Дата 8.4.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Объекты лучше искать по классу... Класс опред. в программе, о которой я, наверное, уже раз сто сказал - повторяться не буду...smile
PM MAIL WWW   Вверх
suvorr
Дата 8.4.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



-Значок в трее есть. Но при клике по нему Ваше окно не всплывает!  А при правом клике вообще пропадает с концами и приходится опять юзать таскменеджер.

-Я нашел главное окно. Это окно проги с заголовком FireFox .№ ..860. Не вопрос.
- Я перебрал с помощью Вашей проги все дочерние окна. Не вопрос
-Но  ни одно из них видимо не является тем полем ввода которое мне надо! Вот вопрос!
Но, впрочем, меня это никак не держит. Чисто так любопытно было разобраться. Посмотрите если будет интересно. FireFox вещица не безъизвестная.



PM MAIL WWW Skype   Вверх
I_Am_Rock
Дата 8.4.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Окей - найду ФайрФокс, попытаюсь сделать - и если получится, то напишу об этом здесь...smile

з.ы. У меня всплывает (от двойного клика)... Странно...:(
PM MAIL WWW   Вверх
20071231
Дата 9.4.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 26.5.2007
Где: Россия, Белая Кал итва

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



Спасибо, все работает, но у мня еще такой вопрос, это чтобы узнать заголовок, а если мне нужен непосредственно текст в текстовом окне, этим кодом он не определяется, низнаите как?
PM MAIL   Вверх
I_Am_Rock
Дата 9.4.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(20071231 @  9.4.2008,  16:00 Найти цитируемый пост)
Спасибо, все работает, но у мня еще такой вопрос, это чтобы узнать заголовок, а если мне нужен непосредственно текст в текстовом окне, этим кодом он не определяется, низнаите как? 

Этот способ не только, для того, чтобы узнать заголовок, но и текст с надписи, кнопки и т.п. А вот текст с текстового окна и прочих текстбоксов так действительно не узнать.

Этот вопрос мучил меня самого, пока я не нашел ответ на форуме (в какой-то старой-старой теме).
Я могу ошибаться (призабыл уже), но по-моему надо делать так:

Код

'напишу через 5-10 минут

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


Опытный
**


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

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



не... к сожалению, не могу сказать как это делается...:(
PM MAIL WWW   Вверх
suvorr
Дата 13.4.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да! От двойного всплывает! Не додумал. Всегда в трее пользовал правый. Бывает.....
PM MAIL WWW Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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