Fredelphi
Messages postés34Date d'inscriptionmercredi 26 juin 2002StatutMembreDernière intervention 1 décembre 2002
-
20 sept. 2002 à 18:41
tamanio
Messages postés2Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention13 janvier 2005
-
13 janv. 2005 à 19:36
Bonjour,
Est-il possible d'influencer une variable ou un controle d'une application à partir d'une autre application ??
Je m'explique : Je lance le programme A et B.
B étant mon programme fait sous D6, et A une quelquonque application.
Est-ce que le programme B peut changer le contenu d'une variable qui est dans le programme A ? En sachant que je connais déjà le style de variable du programme A...
Et est ce que le programme B peut changer un controle dans le programme A (mettre à false un visible par ex d'un controle) ?
Si cela est possible d'après vous, pourriez-vous me donner une idée de départ ?
Peut-etre avec des API ?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 20 sept. 2002 à 19:08
Sous Win32, chaque application a sa propre zone mémoire réservée, empêchant ainsi une application qui plante d'interférer sur les autres. Il n'est donc pas possible de modifier une variable d'une autre application (ou alors avec de grands risques de tout planter).
En revanche, pour changer l'état d'un contrôle d'une autre appli, c'est "plus facile".
Il suffit de connaître le handle du contrôle et de lui envoyer un message (via SendMessage, voir aide sur les API).
Fredelphi
Messages postés34Date d'inscriptionmercredi 26 juin 2002StatutMembreDernière intervention 1 décembre 2002 20 sept. 2002 à 19:50
merci pour ta réponse.
Encore une question..
Comment insères-tu dans sendmessage, la possiblité de mettre à faus un Visible ?
Je pense qu'il doit y avoir un code spécial ?
Connaitrais-tu un site qui explique en détail cette manipulation ?
Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004 21 sept. 2002 à 14:58
Pour changer le contenu de la variable du programme A, pourquoi ne pas utiliser le contrôle Winsock ( je pense qu'il doit exister en Delphi ) car j'ai fait stage l'an passé et mon prog devait changer l'etat de la form suivant le message reçu.
Donc pour toi il suffirait d'envoyer la nouvelle valeur à partir du prog B
ex :
Winsock1.SendData('12');
et dans ton prog A :
Winsock1.DataArrival(....)
begin
VarA := StrToInt(Winsock1.GetData());
end;
En tout cas c'est comme ça que je faisais en Visual Basic mais il doit avoir le même principe en Delphi. Je pense que j'avais vu sur source sur ça sur le site.
Peut-être que DelphiProg ou Nono40 pourrons t'aider sur le propos maintenant que je leur ai montré l'idée.
En espérant que cela t'aide :
;) Bruto --- Le p'tit belge --- pour vous servir
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 21 sept. 2002 à 18:12
C'est plus compliqué que ça. Car A n'est pas forcement faite avec Delphi, ni même une application faite par Fredelphi. A n'est donc pas prévue à l'origine pour être modifiée par B. Les messages de windows sont alors le seul moyen de modifer A par B.
WinSock existe avec Delphi : voir les composants ClientSocket et ServerSocket.
--- :sleepy) Nono du Moulin :sleepy) ---
Vous n’avez pas trouvé la réponse que vous recherchez ?
tamanio
Messages postés2Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention13 janvier 2005 13 janv. 2005 à 19:36
Si tu connait les éléments segment:offset de A alors tu peux modifier sa valeur.
Il suffit en faite de connaitre l'adresse mémoire où est stoké pour pouvoir le modifer.
j'ai un code exemple qui fait sa, je le mettrais ici quand j'aurais plus de temps ! ;-)