Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15

CppWebBrowser - работа в фоне

05.12.2012, 17:20. Показов 1322. Ответов 14

Студворк — интернет-сервис помощи студентам
на С++ Builder 6.0 написал программку-бот для некого сайта - делается все средствами CppWebBrowser... проблема собственно в следующем - программа свернута в трей - дабы не мешать юзеру заниматься своими делами, НО... при обработке страницы происходит перехват фокуса... в результате - текущее окно (чем бы оно не было) становится неактивным, и как результат - фоновая задача перестает быть фоновой... прочитал о CppWebBrowsere немеряно сообщений на разнообразнейшие темы - но пока нигде не видел подобного бага и способов борьбы с ним... Может кто знает хотя бы в какую сторону рыть - буду очень признателен за наводочку.
Спасибо. С уважением..)))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2012, 17:20
Ответы с готовыми решениями:

Работа формы в фоне, вне фокуса (работа с раскладкой клавиатуры)
Как заставить это работать в фоне? Даный код работает пока форма в фокусе, как только ее отпускаем - она не реагирует. Public...

Работа жесткого диска в фоне.
Обычно люди жалуются, что у них постоянно мигает желтая лампочка. Я же, наоборот, обеспокоен тем, что когда жесткий диск некоторое время не...

Работа приложения в фоне. Например: таймер
Пишу приложение таймер. Отсчитывает время до нуля и пищит об этом. Проблема при работе таймера в фоне. Приложение замораживается и...

14
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
05.12.2012, 17:46
А как ты её в трей сворачиваешь?
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
05.12.2012, 18:44  [ТС]
сворачиваю - обычно - кинул компонент TIconTray - и все через него... минимизирование, восстановление...
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
06.12.2012, 01:04
Я обычно визибл\инвизибл использую. По идее никаких проблем быть не должно тогда
C++
1
2
3
4
5
void __fastcall TMainForm::TrayIcon1Click(TObject *Sender)
{
MainForm->Visible=true;
 
}
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
06.12.2012, 09:50  [ТС]
Да проблема-то не в минимизации...(((... это как раз работает на ура... не понятно, почему программка фокус на себя хватает?... я лично грешу на сам компонент CppWebBrowser... но понят, где и что подкрутить что бы избежать сего досадного бага не могу..(
Кстати, замечено, если программу в трей не сворачивать - она все время на передний план лезет...(
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.12.2012, 10:00
FormStyle проверь - если стоит fsStayOnTop, то поменяй...
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
06.12.2012, 10:46  [ТС]
Со стилем формы тоже в порядке... проблема в чем-то другом...
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
06.12.2012, 10:53
Цитата Сообщение от BMonk Посмотреть сообщение
Со стилем формы тоже в порядке... проблема в чем-то другом...
Измени прицип работы сворачивания в трей. На действие ОнИконТрэйКлик поставиь изменение видимости формы. И тогда никаких проблем не должно быть.
Потому что неизвестно как у тебя реализована функция сворачивания в трей.
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
06.12.2012, 11:01  [ТС]
void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
if (TrayIcon1->RestoreOn == imNone)
{
Application->Minimize();
ShowWindow(Application->Handle, SW_HIDE);
TrayIcon1->RestoreOn = imClick;
}
else TrayIcon1->RestoreOn = imNone;
}

вот так реализована процедура клика по иконке трея... код не мой, взят с другого источника - на других программах работает без особых замечаний... проблема собственно даже не в трее... попытка засунуть программу в трей была произведена дабы избежать постоянного выскакивания окна программы на передний план...(((.. т.е. проблема с перехватом фокуса присутствовала в модуле еще до манипуляций с TrayIcon
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
06.12.2012, 11:03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
 if (TrayIcon1->RestoreOn == imNone)
 {
 Application->Minimize();
 Form1->Visible=false;
 TrayIcon1->RestoreOn = imClick;
 }
 else
 {
    TrayIcon1->RestoreOn = imNone;
    Form1->Visible=true;
 }
}
Как минимум так можно
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
06.12.2012, 11:23  [ТС]
Огромное спасибо!... переделал код - вроде как помогло..))).. ну, первые 15 минут теста прежних багов не выявили...
Возвращаясь к написанному - что в моем коде (т.е. в спёртом коде;-)..) было не так?..))).. извините за настырность - но хотелось бы таки понять причину..))))
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
06.12.2012, 11:34
Ну видимо просто у Api функции
C++
1
ShowWindow(Application->Handle, SW_HIDE);
есть какие то свои приколы. Я не разбирался еще, просто сам недавно делал, и сделал именно через параметр Visible, потому что ShowWindow меня чем то не устраивал.

Добавлено через 3 минуты
Код вообще можно написать много проще им еньше. Я не знаю, как опытные люди к такому относятся, но работает же

C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
 if (Form1->Visible==true)
 {
 Form1->Visible=false;
 }
 else
 {
    Form1->Visible=true;
 }
}
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
06.12.2012, 11:48  [ТС]
гм... что-то странное происходит конечно... откомпилированное приложение (с исправленной функцией визуализации) перенес на другую машину - и все прекрасно срослось... пытаюсь запустить это же приложение на своей рабочей машине - получаю те же грабли...(((.. т.е. фокус уходит из текущего окна...(((
0
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
06.12.2012, 11:57
Цитата Сообщение от BMonk Посмотреть сообщение
гм... что-то странное происходит конечно... откомпилированное приложение (с исправленной функцией визуализации) перенес на другую машину - и все прекрасно срослось... пытаюсь запустить это же приложение на своей рабочей машине - получаю те же грабли...(((.. т.е. фокус уходит из текущего окна...(((
Надо код смотреть, такие вещи бывают, да. А может у вас виирусы
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 15
06.12.2012, 12:35  [ТС]
Какой именно код?... ибо вариантов - немеряно...
- минимизации приложения?
- отработки событий CppWebBrowser-а?
- работы с файлами?
что вообще может вызывать такой эффект?

замечена еще одна особенность:
- на другой машине если окно НЕ сворачивать в трей, а просто переключится на другое, то происходит моргание заголовка окна в таск-баре... немножко раздражает, но так, в целом, - вариант приемлемый, при сворачивании в трей - через какую-то секунду происходит как бы потеря фокуса текущим окном, но повторный клик на окне решает проблема - выхода фокуса больше не наблюдается...
- на текущей же машине при попытке переключится на другое окно переключение как-бы происходит, но при каком-то событии (каком?!) окно программы просто вылезает на передний план, заслоняя текущее окошко... ну и с треем так же...(
вот такие грабли..(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2012, 12:35
Помогаю со студенческими работами здесь

Работа в фоне. Отобразить картинку по url
Добрый вечер! Не получается решить две ситуации, уже обгуглился, голова пухнет... 1)есть маяк Beacon, когда я запускаю приложение...

Работа в фоне(без захода на страницу)
Вопрос, наверное, ну нереально нубский.. у меня в БД есть пара событий.. там есть даты, когда они завершатся. Как мне смотреть эту БД и...

Запуск скрипта и его работа в фоне
Здравствуйте уважаемые форумчане. Нужен совет. Есть у меня ...

Сворачивание приложений и работа в фоне (service)
Добрый день. Готовлю ТЗ для одного приложения. Мне необходимо выяснить некоторые принципиальные моменты. А я плохо ориентируюсь в правах...

Может ли работать приложение в фоне на IOS, работа со вспышкой камеры
Собственно вопрос в названии темы. Задача в том, что бы один раз запустив прогу на телефоне, при получении смс задняя вспышка, медленно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru