Variable required [Résolu]

Signaler
Messages postés
47
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
9 janvier 2006
-
Messages postés
47
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
9 janvier 2006
-
Yop
j'ai une procedure :
procedure Monitor ;
Begin
If (Handle <> ActiveHandle) Then
If (Window <> ActiveCaption) Then
Begin
Window := ActiveCaption;
If Window = ActiveCaption then
Begin
SendKeys(Pchar(IMessage + #13));
End;
End;
End;

puis ds le form create :
procedure TForm1.FormCreate(Sender: TObject);
begin
SetTimer(0, 0, 3000, @Monitor);

While true Do Begin
If Not GetMessage(msg, 0, 0, 0) Then
Break;
TranslateMessage(msg);
DispatchMessage(msg);
End;
end;

j'ai une erreur :variable required dans : SetTimer(0, 0, 3000, @Monitor);

mais quand je fais cela sur une application console ca marche tres bien :( .
Merci
A voir également:

5 réponses

Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

j'ai pas essayé ton code, mais je te donne un exemple de SetTimer....c'est p'têt de là que venait ton problème...

<HR>
var
Form1: TForm1;
nide:cardinal;

implementation

{$R *.DFM}
function TimerFunc (H: hwnd;uMsg : UINT;idEvent : UINT;dwTime : DWORD ): BOOL; stdcall;
begin
{tu mets ton événement périodique ici par exemple :}
form1.color:=not form1.color;//c'est un exemple

Result:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
nide:=123456;//j'ai mis ce qui me passait par la tête comme valeur...tu te la choisis...
SetTimer(handle,nide,1000{délai en millisecondes de ton Timer},@TimerFunc);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
KillTimer(handle,123456)
end;

end.
<HR>

N'oubliez pas de cliquer sur Réponse acceptée si c'est OK

DrJerome
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

ben...oui c'est ce que je te disais, il faut redéfinir ta procédure "Monitor"

Utilise ma fonction "TimerFunc" que tu appeles "Monitor" si tu veux...et à la place de "form1.color:=not form1.color;" (qui était un exemple) tu mets :

If (Handle <> ActiveHandle) Then
If (Window <> ActiveCaption) Then etc...

bien sûr ... tu règles ton timer à 3000 j'avais mis 1000 pour mon exemple.
Il ne faut pas oublier de faire le "KillTimer"

Remarque : je ne comprends pas pourquoi tu utilises un SetTimer, le composant Timer de Delphi suffit. L'avantage du SetTimer est que tu accèdes à son handle...après pour le reste c'est pareil....

N'oubliez pas de cliquer sur Réponse acceptée si c'est OK

DrJerome
Messages postés
47
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
9 janvier 2006

desolé je remet le code :

procedure Monitor ;
Begin
If (Handle <> ActiveHandle) Then
If (Window <> ActiveCaption) Then
Begin
Window := ActiveCaption;
If Window = ActiveCaption then
Begin
SendKeys(Pchar(IMessage + #13));
End;
End;
End;

puis ds le form create :
procedure TForm1.FormCreate(Sender: TObject);
begin
SetTimer(0, 0, 3000, @Monitor);
While true Do Begin
If Not GetMessage(msg, 0, 0, 0) Then Break;
TranslateMessage(msg);
DispatchMessage(msg);
End;
end;
Messages postés
47
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
9 janvier 2006

Yop
merci pour ta reponse
mais ma procedure :
procedure Monitor ;
Begin
If (Handle <> ActiveHandle) Then
If (Window <> ActiveCaption) Then
Begin
Window := ActiveCaption;
If Window = ActiveCaption then
Begin
SendKeys(Pchar(IMessage + #13));
End;
End;
End;

ne va pas trop dans la fonction timerfunc :s .
Messages postés
47
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
9 janvier 2006

C'est Reglé merci a toi