Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запретить выключение компа 
:(
    Опции темы
mspuz
Дата 19.12.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



Мне нужно отследить, когда пользователь выберит пункт - "Завершение работы" и вместо этого ("Завершения работы") запустить программу резервного копирования, которая по окончанию сама вырубит комп - КАК?????
PM MAIL   Вверх
_hunter
Дата 19.12.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



по завершению смысла нет -- по истечению срока, отпущенного на завершение работа сыстема выведет диалог с запросом на убийство программы, тормозящей процес...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mspuz
Дата 19.12.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



_hunter Тоесть по завершению сделать нельзя?????
PM MAIL   Вверх
_hunter
Дата 19.12.2005, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



почему нельзя? -- можно. только смысла нет.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
azesmcar
Дата 19.12.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Еще как можно smile

Перехватываешь WM_QUERYENDSESSION и отвечаешь на него вместо своей программы что ты занят очень важной работой и сам дашь знать когда закончишь smile Примерно так на словах...

Цитата
If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.


http://msdn.microsoft.com/library/default....yendsession.asp

Это сообщение отредактировал(а) azesmcar - 19.12.2005, 14:29
PM   Вверх
Poseidon
Дата 19.12.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Код

  private
    procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;

{...}

function SetPrivilege(PrivilegeName: String; AEnabled: Boolean): Boolean;
var
  TPPrev, TP: TTokenPrivileges;
  Token: THandle;
  dwRetLen: DWORD;
begin
  Result := False;
  if OpenProcessToken(GetCurrentProcess,
    TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
  try
    if LookupPrivilegeValue(nil, PChar(PrivilegeName),TP.Privileges[0].LUID) then
    begin
      TP.PrivilegeCount := 1;
      if AEnabled then
        TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
      else
        TP.Privileges[0].Attributes := 0;
      dwRetLen := 0;
      Result := AdjustTokenPrivileges(Token, False, TP,
        SizeOf(TPPrev), TPPrev, dwRetLen);
    end;
  finally
    CloseHandle(Token);
  end
  else
    RaiseLastOSError;
end;

procedure TForm1.FormCreate(Sender: TObject);
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
  if not SetPrivilege(SE_SHUTDOWN_NAME, True) then
    RaiseLastOSError;
end;

procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
  inherited;
  Message.Result := 0;
  AbortSystemShutdown(nil);

  // тут делаешь свое резервное копирование

   InitiateSystemShutdown(nil, nil, 0, True, False); // вырубаешь винду

end;


Скажу честно, постил "вслепую" (т.е. код не проверял), поэтому могут быть мелкие очепятки.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.