Mxbug
Messages postés47Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention 9 janvier 2006
-
6 nov. 2005 à 00:04
Mxbug
Messages postés47Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention 9 janvier 2006
-
6 nov. 2005 à 16:17
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
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 6 nov. 2005 à 10:01
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és436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 6 nov. 2005 à 15:27
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
Mxbug
Messages postés47Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention 9 janvier 2006 6 nov. 2005 à 00:12
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;
Mxbug
Messages postés47Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention 9 janvier 2006 6 nov. 2005 à 13:48
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 .
Vous n’avez pas trouvé la réponse que vous recherchez ?