ich habe hier eine DLL die eine Pause machen soll… Eigentlich ganz einfach, mit Sleep… Das geht aber leider nicht, da dadurch irgendwie Programm wie Installshield und einige Datenbanken nicht mehr funktionieren:frowning:
Am besten wäre eine TTimer. Ich schaffe es jedoch nicht, dem Ereignis OnTimer eine Prozedur zuzuweisen, da ich kein Formular habe…
Vielleicht hat ja jemmand noch eine besserer Idee, ein Programm anzuhalten, ohne das andere Applikationen oder die Recourcen behindert werden.
Hi Sebastian,
Du kannst auch ohne Formular mit der TTimer-Komponente von Delphi arbeiten, da sie ja keine sichtbare Komponente ist. Du mußt sie nur in der DLL zur Laufzeit erzeugen und auch zur Laufzeit ein OnTimer-Ereignis zuweisen. Das tust Du in irgendeiner Prozedur, die von Deiner DLL zum Anfang aufgerufen wird bzw. im Initialization-Teil der Unit. Beispiel:
var
MyTimer : TTimer;
procedure Irgendwas;
begin
MyTimer := TTimer.Create(Self); // bzw. nil
if Assigned(MyTimer) then
MyTimer.OnTimer := MyTimerEvent;
end;
procedure MyTimerEvent(Sender: TObject);
begin
// mach was...
end;
Das Ganze geht natürlich auch mit API-Funktionen, dann kannst Du Dir das Einbinden der ExtCtrls-Unit sparen…Vergiß übrigens nicht, die Komponente am Schluß wieder freizugeben, Du hast ja kein Formular, das das für Dich erledigt :o)
Gruß Thomas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]