• 8 odgovora
  • 5.989 pregleda
Presretanje shutdowna 15.10.2003. u 20:45 · pre 280 meseci #1
Problem je sljedeći, treba na neki način presresti signal za gašenje kompjutera, znači kad se odabere opcija shutdown iz start menija ili na bilo koji drugi način (npr. iz nekog drugog programa), moj program treba presresti taj signal i poništiti ga ako neki dani uvjet nije zadovoljen ili dozvoliti gašenje ako uvjet je zadovoljen. Kako ovo najjednostavnije izvesti (je li uopće moguće??)? Tnx
Potpis
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Re: Presretanje shutdowna 16.10.2003. u 15:12 · pre 280 meseci #3
Nisam siguran da sam baš najbolje shvatio. Kad moja aplikacija primi WM_QUERYENDSESSION naredbu, ona bi se trebala isključiti. To mogu spriječiti da ubacim:

Code:

 ...

type
   private
  { Private declarations } 
  procedure WMQueryEndSession(
var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
  public
    { Public declarations }
  end;

  ...

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


Dakle, ovime ću spriječiti gašenje moje aplikacije, a time i cijelog sistema, ali će se sve ostale pokrenute aplikacije isključiti. A u tome i je problem, jer se ni jedan drugi program ne smije zagasiti, znači, svi ostali pokrenuti programi moraju također ostati pokrenuti i dalje. E kako sad to izvesti?
Potpis
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Re: Presretanje shutdowna 16.10.2003. u 19:01 · pre 280 meseci #4
Phu, nisi tako definisao problem na pocetku - trazio si da presretnes shutdown; e sad, problem je sto ne mozes spreciti ostale aplikacije da dobiju WM_QUERYENDSESSION i da ga hendluju po defaultu - gasenjem. U principu, treba skroz spreciti mogucnost shutdowna. Prvo sto mi pada na pamet je to da shutdown zahteva permission - sto ne probas da zabranis aktivnom useru (koji u svojoj sesiji vozi tvoj program) mogucnost shutdowna, a po izlasku iz programa (uz zadovoljen uslov) ponovo vratis? Mislim da informacije o tako necemu mogu da se nadju vrlo blizu onog linka gore.
Re: Presretanje shutdowna 17.10.2003. u 13:08 · pre 280 meseci #5
Ajd da još malo pojasnim problem, moguće je da sam ga pokušavao riješiti na krivi način. Sve što meni treba je da kad se pritisne tipka POWER na kućištu (ATX napajanje) windowsi ne odrade shutdown/standby (ili šta je već podešeno u Control Panelu) nego da moj program detektira da je ta tipka pritisnuta. Znači, neko pritisne tipku power, moj program dobije informaciju da je tipka pritisnuta i izvršava određeni komad koda.
Potpis
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Re: Presretanje shutdowna 17.10.2003. u 16:30 · pre 280 meseci #6
Što se tiče POWER dugmeta na tastaturi, ti možeš u podešavanjima sistema (Control Panel/Power Options/Advanded) da podesiš da windows ne reaguje na POWER dugme...

Dalje pri pokretanju programa (može i u FormCreate), pozoveš funkciju ReisterHotKey, koja će za paramater vk imati vrednost 255.

Napraviš handler za WM_HOTKEY poruke, i u njemu napišeš kod koji će se izvršavati.

Evo, ovako:
Code:

unit Unit1;

...

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMHotkey(var msg:TMessage);message WM_HOTKEY;
  public

...

procedure TForm1.WMHotkey(var msg:TMessage);
begin
// Ovde upisi kod koji hoces da izvrsis...
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(handle,0,0,255);
end;

...
Potpis
Sad ja znam zašto sam vam ovo ispričao, ovo će sigurno nekome koristiti....
Re: Presretanje shutdowna 17.10.2003. u 18:04 · pre 280 meseci #9
Ježim se na riječ MSDN! Nema šta, pun je informacija, svaka čast, ali nije namijenjen početnicima/naprednim početnicima/običnim smrtnicima već profijima. Dok ja nešto skužim iz MSDN-a treba mi pola godine!
Potpis
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme