Une question pour les pros de delphi ?

Fredelphi Messages postés 34 Date d'inscription mercredi 26 juin 2002 Statut Membre Dernière intervention 1 décembre 2002 - 20 sept. 2002 à 18:41
tamanio Messages postés 2 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 13 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 ?

Merci d'avance
Frederic

5 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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).

May Delphi be with you.
Delphi advanced
0
Fredelphi Messages postés 34 Date d'inscription mercredi 26 juin 2002 Statut Membre Derniè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 ?

Merci
Frederic
0
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 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
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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) ---
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tamanio Messages postés 2 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 13 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 ! ;-)
0
Rejoignez-nous