Как запретить закрытие компаса пользователю?

Автор AndreySt, 15.03.07, 08:36:15

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

AndreySt

Открываю документ с помощью компасAPI и нужно чтобы компас закрывался только моей программой :)

Lito 2

если только Компас, то можно использовать функции из ShellAPI

var hMenuHandle : HMenu;

hMenuHandle := GetSystemMenu(GetHWindow(), False);
if (hMenuHandle <>0) then DeleteMenu(hMenuHandle, SC_Close, MF_BYCOMMAND);// убирает команду закрыть из системного меню и одновременно делает серой кнопку Закрыть в заголовке формы.

Правда, все же можно закрыть через диспетчер задач и клавишами Alt+F4 :fly:

AndreySt


bmiho

А еще можно отслеживать события и, соответственно, не давать Компасу закрываться...

AndreySt


bmiho

А примерчик можно посмотреть в теме Подписка на события Компас несколькими строчками ниже.... Надо использовать событие BeginCloseAllDocument и вернуть вместо TRUE - FALSE... Надо аналогично подключиться к событиям документа и использовать событие BeginCloseDocument и в нем вернуть FALSE, после всех приведенных манипуляций Компас, в котором открыт хотябы один документ нельзя будет закрыть (и этот документ тоже не закроется), пока подключена библиотека, отслеживающая события. Правда, если документов никаких не открыто, то Компас легко закроется... Но зачем нам Компас без документов? :)

AndreySt

а это для какого компаса?
у меня компас 5.11 и пишу на Delphi есть что-нибуть по этому поводу

bmiho

Я использовал это под 7+, думаю, что под 5.11 то же самое... Пример дан на С++, на Дельфи смысл абсолютно тот же, разница только в синтаксисе...

AndreySt

Цитата: bmiho от 27.03.07, 11:55:37
Я использовал это под 7+, думаю, что под 5.11 то же самое... Пример дан на С++, на Дельфи смысл абсолютно тот же, разница только в синтаксисе...

тас нет интерфейса  ksKompasObjectNotify и ничего на эту тему

bmiho

Действительно, в API 5.11 событий еще не было... :( Переходите на старшую версию... :)