Une question pour les pros de delphi ?

Signaler
Messages postés
34
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
1 décembre 2002
-
Messages postés
2
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
13 janvier 2005
-
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

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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
Messages postés
34
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
1 décembre 2002

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
Messages postés
214
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
14 mai 2004

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
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
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) ---
Messages postés
2
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
13 janvier 2005

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 ! ;-)