Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Timer in App feststellen möglich ? (https://www.delphipraxis.net/70547-timer-app-feststellen-moeglich.html)

turboPASCAL 31. Mai 2006 19:20


Timer in App feststellen möglich ?
 
Hi,

gibt es eine Möglichkeit festzustellen ob und ggf. wie viele Timer ein Programm hat bzw. verwendet ?

mkinzler 31. Mai 2006 20:15

Re: Timer in App feststellen möglich ?
 
Wie meinst du das? Die Anzahl von Instanten von TTimer?

turboPASCAL 31. Mai 2006 20:26

Re: Timer in App feststellen möglich ?
 
Nein, angenommen ein Prg. hat 5 Timer am laufen, kann man das feststellen ?

mkinzler 31. Mai 2006 20:28

Re: Timer in App feststellen möglich ?
 
Ich versteh es immer noch nicht ganz, was du meinst. Dich interessiert die Anzahl von Timern, die gerdae aktiv sind?

turboPASCAL 31. Mai 2006 20:35

Re: Timer in App feststellen möglich ?
 
Jupp. Bzw. Wie viele ein Programm gerade benutzt.

mkinzler 31. Mai 2006 20:42

Re: Timer in App feststellen möglich ?
 
Delphi-Quellcode:
   for i := 0 to self.ComponentCount-1 do
   begin
   self.Components[i].ClassName = 'TTimer' then
      if (self.Components[i] as TTimer).Enabled then
         inc(anz);
Liefert dir die Anzahl aktiver Timer
Und dieses dann für alle Forulare um die Timer aller fenster zu bekommen.

turboPASCAL 31. Mai 2006 20:48

Re: Timer in App feststellen möglich ?
 
Äh, ja für eine Zählung der Timer in einer App. (intern), mich iteressiert aber die Anzahl der Timer die zB. der Windows Explorer "verbraucht".

mkinzler 31. Mai 2006 20:50

Re: Timer in App feststellen möglich ?
 
Ob du da rankommst? Wär doch ne Frage an Olli oder Luckie.

Olli 1. Jun 2006 00:40

Re: Timer in App feststellen möglich ?
 
Also mir ist nichts bekannt, was das ermöglichen würde - außer natürlich unser allseits beliebtes API-Hooking. Eine Anwendung ala "ApiSpy" könnte da von Nutzen sein, indem sie die Anzahl von SetTimer()-Aufrufen zählt.

himitsu 1. Jun 2006 12:36

Re: Timer in App feststellen möglich ?
 
Na ja, man könnte sich ja erstmal eine Liste aller Fenster (welcher zur Anwendung gehören) besorgen
und dann bei jedem Fenster alle TimerIDs testen, ob auch ein entsprechender Timer existiert.

Es würde halt nur etwas dauern :roll:

Wobei dort dann jeder Timer, der gefunden wird auch aktiv ist.
(TTimer erstellt ja auch nur einen, wenn es aktiv ist und beim Deaktivieren wird der Timer wieder freigegeben)

Vjay 1. Jun 2006 15:08

Re: Timer in App feststellen möglich ?
 
Zitat:

Zitat von Olli
Also mir ist nichts bekannt, was das ermöglichen würde - außer natürlich unser allseits beliebtes API-Hooking. Eine Anwendung ala "ApiSpy" könnte da von Nutzen sein, indem sie die Anzahl von SetTimer()-Aufrufen zählt.

Hat nur den Nachteil, dass man die bereits erstellten nicht zählen kann.
Die WM-Timer zu hooken und warten und zählen... naja ne, gibt es nicht ;)

Olli 1. Jun 2006 15:13

Re: Timer in App feststellen möglich ?
 
Zitat:

Zitat von Vjay
Hat nur den Nachteil, dass man die bereits erstellten nicht zählen kann.

Stimmt allerdings ...

Da hilft dann nur Neustart der Anwendung als Kindprozeß des ApiSpy.

Vjay 1. Jun 2006 15:30

Re: Timer in App feststellen möglich ?
 
Um nochmal etwas anzumerken, falls du das wirklich vor haben solltest, beachte:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 settimer(handle, 1, 1000, NIL);
 settimer(handle, 1, 5000, NIL);
end;

procedure TForm1.WMTimer(var Message: TMessage);
begin
 killTimer(handle, Message.wparam);
 showmessage('Ping');
end;
Erzeugt nur ein "Ping" nach 5 Sekunden. Du musst also doppelte IDs "herausfiltern".

turboPASCAL 1. Jun 2006 15:33

Re: Timer in App feststellen möglich ?
 
Zitat:

Zitat von Olli
Also mir ist nichts bekannt, was das ermöglichen würde ...

Ich dächte das ich mal was darüber gelesen hätte, ist leider schon eine Weile her.

Zitat:

Zitat von Olli
- außer natürlich unser allseits beliebtes API-Hooking. Eine Anwendung ala "ApiSpy" könnte da von Nutzen sein, indem sie die Anzahl von SetTimer()-Aufrufen zählt.

In diese Richtung hatte ich gedacht.

Die Sache hat aber einen Hacken wenn ein Programm einen Timer setzt oder deakt. für eine bestimmte Funktion. :gruebel:




Zitat:

Zitat von Olli
Zitat:

Zitat von Vjay
Hat nur den Nachteil, dass man die bereits erstellten nicht zählen kann.

Stimmt allerdings ...

Da hilft dann nur Neustart der Anwendung als Kindprozeß des ApiSpy.

Währe für mich eine Lösung.
Werde mir das mal anschauen.

thx.

Olli 1. Jun 2006 15:37

Re: Timer in App feststellen möglich ?
 
Zitat:

Zitat von turboPASCAL
Die Sache hat aber einen Hacken wenn ein Programm einen Timer setzt oder deakt. für eine bestimmte Funktion. :gruebel:

Was meinst du? Spielst du auf Timer mit Callbacks (also ohne Fensterbindung) an?

turboPASCAL 1. Jun 2006 15:52

Re: Timer in App feststellen möglich ?
 
Mit Fenstebindung.

Delphi-Quellcode:
 if Bedingung then SetTimer() else KillTimmer();
Einfach wenn ein Programm einen Timer je nach Erforderlichkeit an oder abschaltet also nicht ständig in "Betrieb" ist.
Dann würde dieser den "Timerzähler" erhöhen. :gruebel:

himitsu 2. Jun 2006 10:30

Re: Timer in App feststellen möglich ?
 
Zitat:

Zitat von Olli
Zitat:

Zitat von turboPASCAL
Die Sache hat aber einen Hacken wenn ein Programm einen Timer setzt oder deakt. für eine bestimmte Funktion. :gruebel:

Was meinst du? Spielst du auf Timer mit Callbacks (also ohne Fensterbindung) an?

Wenn man die API (SetTimer) hook, dann ist das doch egal ... jedenfalls werden die Timer, egal ob an ein Fenter angebunden, oder mit 'ner CallBackFunktion, oder beidem, oder ach garnichts (ja, dat is och möglich, auch wenn ich noch nicht weiß wofür) über die selbe API erstellt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz