|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.01.2016, 05:49 | #1 |
Регистрация: 10.06.2014
Сообщений: 3
|
Не верная работа GetWindowText с google Chrome - Delphi WinAPI
Имеется прекрасный софт, который ищет название всех заголовков окон открытых в системе, а так же кусок кода который говорит hwnd окна в слуае если имеется с таким названием . Суть проблемы такова : поэкспериментировав с гугл хромом и апи функцией GetWindowText обнаружилась проблема, которую по крайней мере я , не могу исправить, так как не понимаю в чем собственно проблема.
Для демонстрации бага была эмулирована работа по таймеру апи функции GetWindowText. При открытии новой вкладки в браузере гугл хром, именно не пустой вкладки а вкладки с имеющейся информацией, к примеру с любого поисковика, в момент ее создания при вызове функции GetWindowText происходят проблемы которые крашут приложение. Это Access Violation Write at adress .... после чего Stack OverFlow. Программа написана на Embarcadero Rad Studio XE7. Подскажите в чем может быть проблема и как ее решить? PHP код:
|
25.01.2016, 06:24 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,881
|
Ну, например, сперва можно бы увеличить размер буфера
Код:
Потом я бы проконтролировал Char и следовательно SizeOf(Buff) - на юникодных дельфи чар длиной 2 байта и сайзоф от массива лучше вообще переделать на Length(Buff) * SizeOf(Char), ну и юникодные ли версии винапишных функций вызываются. Последнее - проконтролировал верно ли работает StrPas с таким буфером - хотя бы по справке, может стоит посмотреть в сторону простого каста, т.к. мемо себе юник строку создаст всё равно, а не будет брать ссыль на буфер. |
25.01.2016, 09:11 | #3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Для узнавания размера требуемого буфера есть GetWindowTextLength, а у самой GetWindowText есть Return value, исходя из которого можно вызвать ShowMessage с GetLastError.
И наконец последнее, для Winodws, Google Chrome это одно окно, внутри которого нет других компонент, т.е. браузер все внутренности сам рисует. |
26.01.2016, 10:51 | #4 |
Регистрация: 10.06.2014
Сообщений: 3
|
Проблема была решена добавлением слипа в 40 ms перед GetWindowText.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Google Chrome | Crystal Matrix | Софт | 21 | 22.05.2015 07:39 |
GetWindowText WinApi | Lokki23 | Win Api | 2 | 20.11.2013 17:49 |
WinApi и Google Chrome | V1S | Общие вопросы Delphi | 1 | 12.11.2011 20:29 |
Google Chrome | Syltan | Операционные системы общие вопросы | 1 | 16.04.2010 08:18 |
Не верная работа автофильтра | DsXack | Microsoft Office Excel | 2 | 06.11.2009 08:50 |