Toon posts:

[Delphi] Hoe zien of mijn delphi app not active is

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
Ik ben bezig met een applicatie waarin een timer zit verwerkt. Om de x minuten vuurt ie een procedure af. Nu is het zo dat als ik in een ander programma bezig ben en mijn delphi app dus ergens op de achtergrond draait de procedure niet mag beginnen.
De mannier van If Form.Active=True then ..
werkt iig niet. Zijn er andere mannieren om te zien of mijn app de applicatie is waar de user in zit te werken of dat de user in een ander programma bezig is?
BVD.

  • Sponz
  • Registratie: Juni 2001
  • Niet online

Sponz

nul nest parfait saif moi

Ik gok dat het iets is als winapi getforgroundwindow(..)
Je krijgt een handle terug, en als die gelijk is aan application.handle, dan ben je de aktieve app.

Verwijderd

Topicstarter
en hoe roep ik een window API aan?(sorry voor dat ik zelf niet allemaal ga uitzoeken, heb namelijk redelijk snel nodig)

  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 14-09 13:24
Je kunt zien of je app al eerder draait door deze functie:

var Hwnd: THandle;

Hwnd := FindWindow ('<FORMNAAM>', nil);


Als de resultvalue ongelijk is aan 0 dan draait de app al eerder.

"If you don't know where you are going, any road will take you there"


  • Sponz
  • Registratie: Juni 2001
  • Niet online

Sponz

nul nest parfait saif moi

Op woensdag 05 december 2001 15:45 schreef turbop het volgende:
en hoe roep ik een window API aan?(sorry voor dat ik zelf niet allemaal ga uitzoeken, heb namelijk redelijk snel nodig)
code:
1
uses windows;

dan kun je ze gebruiken, zie de help.

Verwijderd

Topicstarter
bedankt alvast. zal es in delphi gaan duiken om te proberen!

Verwijderd

Topicstarter
Op woensdag 05 december 2001 15:51 schreef THEF_Pino het volgende:
Je kunt zien of je app al eerder draait door deze functie:

var Hwnd: THandle;

Hwnd := FindWindow ('<FORMNAAM>', nil);


Als de resultvalue ongelijk is aan 0 dan draait de app al eerder.
hier kijk je toch alleen of je app al geopend is toch niet of de app juist de active app is van alle apps die je hebt draaien

  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 14-09 13:24
Shit, sorry, verkeerde functie :)

Heb nog ff geen Delphi geinstalleerd, maar je kunt met SetForeGroundWindow (Hwnd); de window op de voorgrond zetten, zoek daar eens op, er zal dan ook wel een functie bijstaan om te zien of ie al op de voorgrond staat.

"If you don't know where you are going, any road will take you there"


Verwijderd

Topicstarter
gelukt :)
gebruik nu GetForeGroundWindow;.. werk goed

Verwijderd

Je moet dan reageren op de WM_ACTIVATE Message.

Je kan dan de timer aan/uit zetten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    procedure WMActivate(var Msg: TWMActivate); message WM_ACTIVATE;


procedure TForm1.WMActivate(var Msg: TWMActivate);
begin
  if Msg.Active <> WA_INACTIVE then
  begin
    { Applicatie is het actieve scherm }

  end
  else
  begin
    { Applicatie is NIET meer het actieve scherm }

  end;
end;
Pagina: 1