WebBrouser и вызов окна поиска

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

WebBrouser и вызов окна поиска

Сообщение natcap » 01.06.2004 (Вт) 14:23

Срочно помощь нужна, видимо из-за простуды мозги ушли лечиться :)
В общем ситуация такая:
На форме webbrouser, по Ctrl-F поиск нормально поднимается, но вот вызвать его по нажатию кнопки на форме - не могу сообразить как.
Через ExecWB пыталась - посылает нафиг :((((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.06.2004 (Вт) 14:52

А если сделать по примитивному, SendKeys "^F", True ?
Lasciate ogni speranza, voi ch'entrate.

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 14:54

Ой, а можно полной строкой, плииииииииииз... ну совсем ничего сейчас не соображаю :((((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 15:07

Точнее даже не полной строкой, а как мне сказать, что посылаю я иенно webbrauser'у?
Я пишу
WebBrowser1.SetFocus
SendKeys "^F"

Реакции ноль :(
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.06.2004 (Вт) 15:23

И правда...
Надо подумать
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 15:55

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

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 16:03

так о том и речь, что я эту ошибку с утра "кушаю" вопрос как решить другим путем?
Send KEy или что-то типа этого делать надо, только как сказать программе, что сендю я именно веббраузеру?????

Либо же если совсем никак, то как сделать поиск свой? ОЧЕНЬ не хочется - это мороки в моем понимании дня 3 после того как голова пройдет... (искать то придется по тексту, а выделять в ШТМЛ-е :((( ) а дел с прогрй еще вагон и состав дополнительный :(((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 16:15

Ха
Ха-ха
Ха-ха-ха

Привет мелкософту. Большой и горячий.
"^F" действительно не работает. А ты попробуй "^f".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 16:17

Да, и раскладка должна быть английской.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 16:18

УРАААААААА!!!!
Ой, как мат на язык просится то.....
Спасибо вам, ОГРОМНОЕ :))))))
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 16:20

А что делать с русской???? Проверила - действительно при русской все отдыхают :(
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 16:23

natcap писал(а):Ой, как мат на язык просится то.....


А ты думаешь, это что?
GSerg писал(а):Ха
Ха-ха
Ха-ха-ха

Привет мелкософту. Большой и горячий.


Только после прохода через внутреннюю цензуру :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 16:28

ха... это она и есть.. но у нас тут клиенты сидят... даже тихо про себя не поругаешься :((( ;)))

А что все же делать в переключенной на русский клавиатурой??? это как бы левить? я бы пошла путем сохранения состояния раскладки, переключение на инглиш, сразу по нажатию - обратно, но КАК ЭТО СДЕЛАТЬ???? подозреваю, что через АПИ, но в нем я не ноль... пониже гдет-то :)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 16:44

В общем вопрос решила, не красиво, тупо на пролом и в лоб, но другое решение я пока не вижу...

WebBrowser1.SetFocus
SendKeys "^f"
SendKeys "^а" (а- русская)


НЕНАВИЖУ МИКРОСОФТ!!!!
А как хочется найти красивое решение....
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 01.06.2004 (Вт) 16:49

Кстати, насчёт "своего поиска".. :-)

Project - References - Microsoft HTML Object Library

Код: Выделить всё
Dim a As IHTMLTxtRange

Private Sub Command1_Click()

Set a = WB.Document.selection.createRange

a.findText "test"
a.Select

End Sub


Правда, ищет только первое совпадение, но, я думаю, поиграться с флагами можно..

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 16:53

Нет, я не могу... Мелкософт рулит он даже не представляет как...
А русской раскладке нужно посылать "^а". Буква русская :)

Короче. Всё это ерунда и фигня.

SendMessage WebBrowser1.HWND, &H111, &H10043, ByVal 0&


Угадайте, в чём теперь проблема? Правильно! HWND не находится :) И FindWindowEx не помогает, потому что нулевой caption.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 01.06.2004 (Вт) 16:57

Насчёт раскладки клавиатуры:

Код: Выделить всё
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long

Function KBD(Lang As String)

Dim KeybLayoutName As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName

If Lang = "RUS" Then
If Mid(KeybLayoutName, 1, 8) = "00000409" Then ActivateKeyboardLayout 0, 0
End If

If Lang = "ENG" Then
If Mid(KeybLayoutName, 1, 8) = "00000419" Then ActivateKeyboardLayout 0, 0
End If

End Function

Private Sub Command1_Click()

'Переключить на русскую раскладку
KBD ("RUS")

End Sub

Private Sub Command2_Click()

'Переключить на английскую раскладку
KBD ("ENG")

End Sub

Private Sub Command3_Click()

'Показать текущую раскладку

Dim KeybLayoutName As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName

If Mid(KeybLayoutName, 1, 8) = "00000409" Then MsgBox "ENG" Else MsgBox "RUS"

End Sub

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 17:02

У.. как запущено :)
Про ^а я уже так и сделала,

Поиск нормальный видимо напишу, но ПОТОМ!!!! Нефиг перед сдачей апроекта время на фигню тратить :)

На насчет посделнего варианта, у меня все круче - у меня ВБ SendMessage не хочет понимать :)))

В общем, ну его... на фиг, пусть работает так как работает :((( Лучше уж я действительно серьезные и интересные вещи дорабатывать буду :) Типа экспотра произвольного прайслиста из екселя в мой конструктор :)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 01.06.2004 (Вт) 17:08

На насчет посделнего варианта, у меня все круче - у меня ВБ SendMessage не хочет понимать

:-) Ну так ты ему объясни, что SendMessage - это:

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


Но всё равно бесполезно заморачиваться.. У WB действительно HWND не найдёшь..

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 17:08

Код: Выделить всё
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


А в немецкой раскладке? Французской? Китайской, наконец? sendmessage универсальна, ибо сразу постит то, что запостил бы translatemessage, будь он вызван. Но вот как hwnd-то определить :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 17:34

В общем, не ищем мы простых путей :) Вот мой изврат, пока окончаетльный (предпологается что у людей 2 раскладки - англ. и еще что-то:

Код: Выделить всё

Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long

--------------------------------------

WebBrowser1.SetFocus
Dim KeybLayoutName As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName
a = KeybLayoutName
If a <> "00000409" Then
ActivateKeyboardLayout 0, 0
End If

GetKeyboardLayoutName KeybLayoutName
SendKeys "^f"


If a <> KeybLayoutName Then
ActivateKeyboardLayout 0, 0
End If
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.06.2004 (Вт) 18:02

Ну а вот мой изврат, наверное уже окончательный :)

Код: Выделить всё
SendMessage FindWindowEx(FindWindowEx(FindWindowEx(Me.hwnd, 0, "Shell Embedding", vbNullString), 0, "Shell DocObject View", vbNullString), 0, "Internet Explorer_Server", vbNullString), &H111&, &H10043, ByVal 0&
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 01.06.2004 (Вт) 18:14

А у меня на это решение комп (вместе в веббраузером) почемцу-то плюют с выссссссссокой колокольни... И ошибки нет и результат нулевой...

(функции АПИ задекларировала)
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.06.2004 (Ср) 1:02

Другая версия контрола, что ли?
me.hwnd - это hwnd формы, на которой расположен wb.
Ну ладно, не работает и фиг с ним :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.06.2004 (Ср) 5:15

Во! :)
Код: Выделить всё
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Sub Command2_Click()
  WebBrowser1.SetFocus
  SendKeys "^" & LCase$(Chr$(MapVirtualKey(vbKeyF, 2)))
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.06.2004 (Ср) 9:31

Шаман! :)
Только вот представь какую-нибудь залокализованную донельзя версию винды, в которой поиск вызывается не Ctrl+F, а Ctrl+S.
По идее, самым правильным было бы web.ExecWB OLECMDID_FIND, OLECMDEXECOPT_DODEFAULT, но ведь не работает, зараза... Вернее открывает поиск файлов, а не поиск текста.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.06.2004 (Ср) 9:56

Вот зачем ты это сказал :)
Сейчас ведь полезу определять, где там в ресурсах акселератор на VK_F, какой у него код и как узнать, на что он локализован :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.06.2004 (Ср) 10:16

Ну всё :)
Уж этот-то вариант от перевода не зависит :)
Код: Выделить всё
Private Declare Function GetFocus Lib "user32.dll" () As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Command2_Click()
  WebBrowser1.SetFocus
  SendMessage GetFocus, &H111&, &H10043, ByVal 0&
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 02.06.2004 (Ср) 14:00

Это было бы смешно, если не было бы так грустно :((((
у меня варианты с сендмесаджем вообще не проявляют признаков жизни :((((( КАК КЛАСС!

Окна 2000про, Вб 6, ИЕ 6. В какое место его пнуть, чтобы заработала - фиг знает, а главное, если это не работает у меня, то где гарантия, что заработает у пользователя????
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.06.2004 (Ср) 14:09

А MapVirtualKey работает? :)

А в какое место пнуть - это ясно... Запускаем прогу, запускаем spy++ и смотрим, чего получает wb при нажатии ctrl+f.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

След.

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

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

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

    TopList