Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Open/save


ATLANTIDO ©   (2002-03-04 15:02:00) 

Может кто знает, как контролировать окна open/save для
ограничения действий пользователя, или вообще их тупо закрывать.


VuDZ   (2002-03-10 22:54:00) [1]

оп-с, вопросы перепутал :>

RegisterClass()

Windows NT/2000 or later: No window classes registered by a .dll are unregistered when the .dll is unloaded. A .dll must explicitly unregister its classes when it is unloaded.

Так что можно попробовать :>

Но где-то был флажок, не помню в какой ф-ии, который указывает винде, что эта либа содержит классы окон, которые надо загружать автоматически - найду - напишу


VuDZ   (2002-03-10 22:48:00) [2]

а ты прямо по своей теме ищи, только не обязательно для ХР, по-моему, было для win2k


ATLANTIDO   (2002-03-10 22:40:00) [3]

ого нифигасебе ! В форуме это не обсуждалось ? В каком направлении копать ?


VuDZ   (2002-03-10 22:30:00) [4]

нет, под винтукеем можно зарегистрировать свои типы стандыртных окон - EDIT И пр., и перекрыть стандартные.


ATLANTIDO   (2002-03-10 22:20:00) [5]


> есть один извращённый метод, но не уверен, что прокатит
> под win9x - надо переопределить шаблоноткрытия/сохранения
> глобально и всё.

Ты имееш в виду библиотеки свои подставить ?


VuDZ   (2002-03-10 21:58:00) [6]

есть один извращённый метод, но не уверен, что прокатит под win9x - надо переопределить шаблоноткрытия/сохранения глобально и всё.

для win9x надо подправить ресурсы, а вот под win2k можно просто свою либу зарегистрировать.


ATLANTIDO   (2002-03-10 15:53:00) [7]

Придумал 2 варианта:
Вариант1:

procedure TForm1.Timer2Timer(Sender: TObject);
var
H: THandle;
Buffer: array [0..255] of Char;
begin
H := GetForegroundWindow;
GetWindowText(H, Buffer, SizeOf(Buffer));
if (Pos("Открытие", Buffer)<>0) or (Pos("Сохранение",Buffer) >0) or (Buffer="Microsoft Internet Explorer") then
PostMessage(FindWindow(Nil, Buffer), WM_QUIT, 0, 0); //(1)
end;

Диалоговые окна находит, закрывает, + вешает программу, которая их открыла. Как быть ?
Вариант 2:

procedure KillProgram(const AHandle: THandle);
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle: THandle;
ProcessID: Integer;
begin
GetWindowThreadProcessID(AHandle, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, False, ProcessId);
TerminateProcess(ProcessHandle, 4);
end;

В варианте 1 вместо PostMessage делаем KillProgram
(строка выделеная "1"). Теперь вместе с диалоговым окном
убивает и окно "родитель". Тоже непорядок !


ATLANTIDO   (2002-03-07 00:04:00) [8]


> Используй
> OFNHookProc

А что это такое ?


ted   (2002-03-06 11:53:00) [9]

Используй
OFNHookProc


ted   (2002-03-06 11:43:00) [10]

>ATLANTIDO
У меня по сути такой же вопрос.......
Найду ответ напишу......


Fellomena   (2002-03-06 10:48:00) [11]

см.
GetTopWindow
WM_CLOSE
WS_HIDE
hooks

Вариантов тьма 8)


Наверх

Титульная страница Поиск, карта сайта Написать письмо