Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Адресная строка в IE / 8 сообщений из 8, страница 1 из 1
07.05.2014, 12:43
    #38635436
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
Нужно получить адресную строку из Internet Explorera.
Вот этот код возвращает название (Title), а не линк.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
function uint    GetDesktopWindow() library "user32.dll"
function ulong   FindWindowExA(ulong hParent, ulong hChildAfter, string sClass, string sWindow) library "user32.dll" alias for "FindWindowExA;Ansi"
function long    SendMessageA(long hwnd, long wMsg, long wParam, ref string sParam) library "user32.dll" Alias For "SendMessageA;Ansi"

Boolean      lb_rc 
Long         ll_Desktop, ll_child, ll_frame_ie, ll_save, ll_found, ll_frame_tab
ULong        lul_currentThread, lul_targetThread, lul_null, ll_loops
String       ls_url, ls_null

string	 as_find_title = 'WWW.'

SetNull(ls_null)
SetNull(lul_null) 

ll_Desktop = GetDesktopWindow()

ll_frame_ie = FindWindowExA(ll_Desktop, 0, 'IEFrame', ls_null)

DO WHILE (ll_frame_ie > 0 AND ll_loops < 100)
	ll_loops ++
	ll_frame_tab = 0
	ll_frame_tab = FindWindowExA(ll_frame_ie, 0, 'Frame Tab', ls_null)

	DO WHILE ll_frame_tab > 0
		ll_child = FindWindowExA(ll_frame_tab, 0, 'TabWindowClass', ls_null)			
		IF ll_child > 0 THEN
			// get the URL
			ls_url = Space(512)
			sendMessageA(ll_child, 13, 512, ls_url) // Вот здесь, возможно, вместо "13" нужен другой параметр
		MESSAGEBOX('', LS_URL)
			IF Pos(Lower(ls_url), Lower(as_find_title)) > 0 THEN
				lb_rc    = True
				ll_found = ll_frame_ie
				EXIT
			END IF
		END IF
		ll_frame_tab = FindWindowExA(ll_frame_ie, ll_frame_tab, 'Frame Tab', ls_null)
	LOOP
	IF ll_found > 0 THEN EXIT
	ll_frame_ie = FindWindowExA(ll_Desktop, ll_frame_ie, 'IEFrame', ls_null)
LOOP 


Кто-нибудь знает, как получить адрес?
...
Рейтинг: 0 / 0
07.05.2014, 13:24
    #38635487
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
см.свойства:
LocationName - Возвращает имя отображаемого в данный момент ресурса (строка). Только чтение. Если отображается HTML-страница, имя ресурса - заголовок этой страницы. Если отображается папка или файл, имя ресурса - полный путь в UNC-формате.
LocationURL - Возвращает URL отображаемого в данный момент ресурса (строка). Только чтение. Если отображается папка или файл, URL ресурса - полный путь в UNC-формате.

а также см.аргумент URL в событиях IE, например:
BeforeNavigate2 - Перед началом навигации.
NavigateComplete2 - Когда документ объявляется найденным, его URL попадает в стек навигации и становится доступным для проверки.
DocumentComplete - Когда какой-либо документ полностью загружен и в строке состояния браузера появляется слово "Готово". При открытии страницы с фреймами событие может возникнуть многократно: в процессе разметки с пустым URL для каждого фрейма, затем с непустым URL для каждого фрейма, и наконец, для всего документа с URL, указанным при вызове метода Navigate. Поэтому в обработчике события следует проверять URL (который передаётся туда как аргумент).
NewWindow2 - Когда создаётся новое окно, например, при открытии ссылки в новом окне. Возможна отмена навигации.
...
Рейтинг: 0 / 0
07.05.2014, 14:21
    #38635586
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
AIS,
Я плохо объяснил задачу.
Мне нужно узнать, открыта ли НА МОЕМ КОМПЕ (НЕ в Microsoft Web Browsere PB) страница.
Вышеперечисленные функции/события относятся к PowerBuilder-oвскому Microsoft Web Browserу.
...
Рейтинг: 0 / 0
09.05.2014, 20:54
    #38637508
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
Ниже пример на базе Вашего варианта, который выводит URLы только активных вкладок всех запущенных IE, т.е. БЕЗ прохода по всем открытым владкам:
Пример РВ
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Long         ll_Desktop, ll_child, ll_child1, ll_child2, ll_child3, ll_frame_ie
String       ls_url, ls_null, ls_msg=""

SetNull(ls_null)
ls_url = Space(512)

ll_Desktop = GetDesktopWindow()
ll_frame_ie = FindWindowExA(ll_Desktop, 0, 'IEFrame', ls_null)

DO WHILE (ll_frame_ie > 0)
    ll_child = FindWindowExA(ll_frame_ie, 0, 'WorkerW', ls_null)
    IF ll_child > 0 THEN
	ll_child1 = FindWindowExA(ll_child, 0, 'ReBarWindow32', ls_null)
	IF ll_child1 > 0 THEN
		ll_child2 = FindWindowExA(ll_child1, 0, 'Address Band Root', ls_null)
		IF ll_child2 > 0 THEN
			ll_child3 = FindWindowExA(ll_child2, 0, 'Edit', ls_null)
			IF ll_child3 > 0 THEN
				sendMessageA(ll_child3, 13, 512, ls_url)
				ls_msg += ls_url + "~n"
			END IF
		END IF
	END IF
     END IF
     ll_frame_ie = FindWindowExA(ll_Desktop, ll_frame_ie, 'IEFrame', ls_null)
LOOP
MESSAGEBOX('', ls_msg)



Вот есть пример, который должен вывести по идее всё, но не знаю работает или нет (ну и + как на РВ перевести ;)
Пример Visual Basic .NET
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Try
    ListBox1.Items.Clear()
    For Each IE As InternetExplorer In New ShellWindows()
         ListBox1.Items.Add(IE.LocationURL.ToString)
    Next
Catch
End Try

...
Рейтинг: 0 / 0
24.05.2014, 16:21
    #38650965
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
Riska, ты огласи полную задачу. И мы дельный совет дадим.
...
Рейтинг: 0 / 0
28.05.2014, 09:39
    #38654090
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
mayton,
Клиент в РВ нажимает на кнопочку и открывает некую страницу "www.mmm.ru" в IE.
Затем добавляет в этот открытый браузер еще одну вкладку, например, "www.microsoft.ru".
Теперь он минимизирует IE и нажимает еще раз на кнопку в РВ.

Нужно пройтись по всем IE и по всем вкладкам. Если нашли "www.mmm.ru", то открыть этот IE (желательно нужную вкладку).
У меня получилось это сделать, но поиск шел по Titly вкладки, а не по адресу. Проблема в том, что на сайте "www.mmm.ru" клиент может куда-нибудь зайти и Title поменяется.
Поменяется и адрес, но начало "www.mmm.ru/..." останется постоянным.

Кажется понятно объяснил.
Нужно добраться до адреса в каждой вкладке.
...
Рейтинг: 0 / 0
28.05.2014, 12:11
    #38654301
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
А если у клиента альтернативные браузеры?
...
Рейтинг: 0 / 0
28.05.2014, 12:45
    #38654358
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Адресная строка в IE
mayton,
То это не наш клиент :)
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Адресная строка в IE / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]