| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > И снова чужие окна |
| Автор: dee63 7.1.2008, 00:35 | ||
| Доброго времени, друзья. У меня тут вопросец возник в связи с одной проблемой. Значит задача такая-надо узнать входит ли слово в заголовок окна, и если входит, то убить процесс пораждающий окно. чтение слов идет из строкового массива. я вот как делаю
и вот в if pos(s[i],string(title))<>0 then //проверка вхождения слова из массива в строку возникает ошибка обращения к памяти Eacces Violation. скажите пожалуйста что я делаю не так? |
| Автор: Yanis 7.1.2008, 00:57 |
Ошибка точно возникает в этой строке? Или оладчик на этой строке останавливается при возникновении AV? |
| Автор: dee63 7.1.2008, 22:19 |
| Да я сейчас вообще нифига не пойму. стоит таймер которому передаются значения времени при нажатии кнопки, а он зараза срабатывает уже приоткрытии формы.... |
| Автор: Yanis 8.1.2008, 01:57 |
| Enabled значит выставлено в True. Что по поводу основного вопроса… Посмотри как это http://www.yandex.ru/yandsearch?text=%CA%E0%EA+%ED%E0%E9%F2%E8+%EE%EA%ED%EE+%EF%EE+%ED%E5%EF%EE%EB%ED%EE%EC%F3+%ED%E0%E7%E2%E0%ED%E8%FE%3F. |
| Автор: dee63 8.1.2008, 20:11 | ||||
| Yanis, на счет таймера и ссылки-спасибо. Я вот нарыл там функцию вот какую:
то что было в исходнике я пометил, остальное я правил. вот только что то странное с этой функцией. я ее использую след образом:
функция Find прост не находит НИКОГДА(!) идетификатор моего окна(т.е. при использовании ее в виде "Как было"). и приложение его пораждающее, соответственно, не закрывается Может я не правильно в чем то ее использую? |
| Автор: MetalFan 8.1.2008, 20:27 |
что-то я не понял этого бреда... |
| Автор: dee63 8.1.2008, 20:31 |
| та ну ето что б он не все что угодно просматривал а ток конрентый диапазон. прост в исходной версии он слиииишком долго думает и потом завершается+для трассироки удобнее такие значения маленькие брать. |
| Автор: dee63 9.1.2008, 13:51 | ||
MetalFan, просто даже если брать просмотр по окнам т.е
то функция эта все равно не находит окно ИЕ с ключевым словом в заголовке... я не утверждаю что хэндлы именно в том диапазоне были. прост использовал эти значения при трассировке чтоб посмотреть как выполныется функция. Щас вот еще кое чего выдумал-попробую, может исправлю. |
| Автор: MetalFan 9.1.2008, 17:05 |
| возможно заголовок длиннее 128 символов... |
| Автор: Yanis 9.1.2008, 20:00 | ||
а возможно потому что:
|
| Автор: source777 9.1.2008, 20:51 | ||||||||
Добавлено через 6 минут и 7 секунд
|
| Автор: dee63 9.1.2008, 21:05 | ||||
| Yanis, вообщем оказалось что длина строки 511 подошла больше=) а вообще фигня какая то получается
обращение к ней
при выполнении результативность равна 0, а загрузка проца=100% что ж я не пральна организовываю? |
| Автор: Magik 10.1.2008, 16:36 | ||||
При таком коде не все окна просматриваются. Только окна одного уровня. Окна следующего уровня вызываются функцией GetWindow(HWND, GW_CHILD). То есть сначала я бы нашёл окна первого уровня через GetWindow(HWND, GW_HWNDNEXT) (пока HWND<>0), затем перешёл на следующий (через GetWindow(HWND, GW_CHILD), и далее через GetWindow(HWND, GW_HWNDNEXT) просмотрел все окна этого уровня . И так, пока GetWindow(HWND, GW_CHILD) не станет равной нулю. Но, хочу заметить то, что и среди окон одного (не первого) просматриваемого уровня могут быть дочерние. Но это всё можно зациклить. А вообще, для идентификации окон лучше всего использовать специальный софт типа SPY. Там можно узнать все параметры нужного окна и провести навигацию до родительского. |
| Автор: dee63 13.1.2008, 14:44 | ||
а можно поподробнее на эту тему? |
| Автор: source777 13.1.2008, 16:12 | ||
|
| Автор: dee63 19.1.2008, 19:15 |
| source777, пасиба тебе! не знаю конечно что я в своей функции не так написал, мо твоя работает на ура, даже груз проца микроскопический) |
| Автор: source777 19.1.2008, 21:26 | ||
dee63, рад помочь.
|