C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как блокировать открытие окна?
Stan
Отправлено: 02.08.2005, 14:13


Ученик-кочегар

Группа: Участник
Сообщений: 10



Есть программка,которая открывает на сервере окно с двумя парметрами,когда таких окон много то сервак забивается!как перехватить открытие окна!?!!??
Заранее спасибо!!!!!!
Doga
Отправлено: 02.08.2005, 14:30


Мастер участка

Группа: Участник
Сообщений: 575



Если эта ссылка не поможет:

https://rxlib.ru/forums/index.php?ac...91fdd9e7f41455a

,то вот Вам другая:

http://www.cbuilder.ru/faqs/faq2.html

Ответ № 18.

Отредактировано Doga — 02/08/2005, 14:31
Stan
Отправлено: 03.08.2005, 12:56


Ученик-кочегар

Группа: Участник
Сообщений: 10



а можно ли блокировать через Fork()???
Stan
Отправлено: 03.08.2005, 14:41


Ученик-кочегар

Группа: Участник
Сообщений: 10



я подумал,что надо уточнить,а то все заходят и выходят!
у меня есть Dos окно,которое надо перехватить,чтобы оно вообще не открывалось!
Stan
Отправлено: 04.08.2005, 11:43


Ученик-кочегар

Группа: Участник
Сообщений: 10



Нашел в Инете код на перехват оконных сообщений:

Заголовочный файл:

class TForm1 : public TForm
{
__published: // IDE-шные компоненты
TMemo *Memo1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // Пользовательские объявления

public: // Пользовательские объявления
__fastcall TForm1(TComponent* Owner);

WNDPROC OldWindowProc;
};

CPP file:

LRESULT CALLBACK NewWindowProc(HWND hWnd, UINT msg, WPARAM w,
LPARAM l)
{

//Обрабатываем нужное нам сообщение
if (msg == WM_VSCROLL)
ShowMessage("The vertical scrollbar is scrolling!");

//Если нам необходимо прекратить дальнейшую обработку сообщения,
//то выходим и возвращаем ноль

//Вызываем старую оконную процедуру,
//которая обработает сообщение.
return CallWindowProc((FARPROC)Form1->OldWindowProc, hWnd, msg, w, l);
}
//----------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldWindowProc = (WNDPROC)SetWindowLong(Memo1->Handle,
GWL_WNDPROC, (long)NewWindowProc);
}
//----------------------------------------------------------------------
void __fastcall TForm1::

когда я его компилирую,он выдает мне ошибку в этой строке:
LRESULT CALLBACK NewWindowProc(HWND hWnd, UINT msg, WPARAM w,
LPARAM l),ошибка следующая:[C++ Error]File1.cpp(1):E2141 Declaration syntax error!
Vlad
Отправлено: 04.08.2005, 14:16


Машинист паровоза

Группа: Участник
Сообщений: 231



QUOTE
у меня есть Dos окно,которое надо перехватить,чтобы оно вообще не открывалось!

Ну и пусть себе не закрывается. Тебе нужно просто закрывать его , если оно висит скажем более N минут или часов.
Можно сделать и по другому. Я бы написал просто скрипт (vbs or js), который запускал бы эту прогу с парамтрами и смотрел бы свой файл лога, где было бы время запуска и указател на окно(pid или еще что)
и если прошло более N минут, грохалбы его и все! Можно и на борланде это же сделать, следилку запущенных приложений и или процессов, с принудительным убиванием.
Stan
Отправлено: 04.08.2005, 14:40


Ученик-кочегар

Группа: Участник
Сообщений: 10



ты не совсем правильно понял!!эти окна сами закрываются,но когда их много,тогда сервак глючит!!просто надо чтобы вообще не открывалось!!
значит мне надо,когда окно попытается открыться использовать функцию pid?!
Vlad
Отправлено: 04.08.2005, 15:26


Машинист паровоза

Группа: Участник
Сообщений: 231



Нет! Тогда тебе ни что не поможет. Винда выделяет память, ресурсы под каждое твоё приложение, тем более они досовые. Что ты их свернешь, что развернешь, хоть спрачь их, сколько они лопали ресурсов, столько и будут. Здесь можно попробывать написать прогу (можно скрипт) , которая не позволит запустить ну допустим более 25 или 50 приложений, а 51 не даст активизироваться, запустится. Мне просто интересно, сколько их у тебя запускается? И что за сервак. Например терминальный сервер ( 2 процовый с 8 гигами мозгов) спокойно держит поболее 50 rdp клиентов — терминалов. И не че хватает.
Stan
Отправлено: 04.08.2005, 15:48


Ученик-кочегар

Группа: Участник
Сообщений: 10



честно я не считал...smile.gif
просто,эти окна-это платежки в банке,которые высвечиваются в виде dos окна!и вот когда они приходят,то начинает тормозить...так что тут не 2 процессорный с 8 гигами,к сожалению!smile.gif
Vlad
Отправлено: 04.08.2005, 15:54


Машинист паровоза

Группа: Участник
Сообщений: 231



Стучись в Асю. Просто дальше разговор про банк-клиенты, это не тема для этого форума. Могу тебе хороший вариант подсказать, если конечно подойдет
Stan
Отправлено: 04.08.2005, 15:55


Ученик-кочегар

Группа: Участник
Сообщений: 10



а номер какой?!
Vlad
Отправлено: 04.08.2005, 15:59


Машинист паровоза

Группа: Участник
Сообщений: 231



кликни на нике, там страница с данными
Stan
Отправлено: 04.08.2005, 16:02


Ученик-кочегар

Группа: Участник
Сообщений: 10



ок!вечером тебе стукну,если будешь!
Vlad
Отправлено: 04.08.2005, 16:05


Машинист паровоза

Группа: Участник
Сообщений: 231



Не ко мне только в рабочее время. Я дома пока без инета. вообщем до 18-00 мск можно стучаться
Stan
Отправлено: 04.08.2005, 16:08


Ученик-кочегар

Группа: Участник
Сообщений: 10



Хреново!я тоже на работе где то до 5-6,но я ограничен в "правах"...аську я даже скачать не могу,на мыло вообще не заходит!!на все ТАБУ!!!
Vlad
Отправлено: 04.08.2005, 16:11


Машинист паровоза

Группа: Участник
Сообщений: 231



если ты в Мск, можно созвониться. Если нет, то давай по почте.
Stan
Отправлено: 04.08.2005, 16:13


Ученик-кочегар

Группа: Участник
Сообщений: 10



я миранду скачал,она с асей коннектится?!
Vlad
Отправлено: 04.08.2005, 16:34


Машинист паровоза

Группа: Участник
Сообщений: 231



Лучше Jaber у него есть шлюзы на асю, а пойдет он по пути интернетэксплорера. Пофугу ему будут все препоны сисадминов, если ты в инет ходиш, он пролезет

Вернуться в Вопросы программирования в C++Builder