begin process at 2008 05 16 06:47:18
1 173 219 membres
61 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Pb de Thread [ Système / Mémoire ] (lo_63)

Pb de Thread le 12/05/2007 13:32:00

lo_63
Bonjour

j'ai une petit question sur les threads.

voila je suis en train de cherché un moyen pour executé une fontion qui ce trouve dans un autre thread.

Exemple :
Mon appli a le thread 2501 et le pointeur $11d457 de la fonction sur la deuxieme appli avec thread 5401.

Quand je fais sur mon appli

type
 toto : function (x,y):longint;stdcall;
var
callback : toto;

begin
@callback := $11d457;
messagebox(0,callback(x,y),'',mb_ok);
end;

Donc apres execution il y a une erreur fatal, je crois que c'est normal puisque au niveau l'appel de la fonction le call se fait sur le meme thread 5401.

Donc je cherche a savoir si c'est possible de changer de thread avant le call de la fonction.

voila j'espere que ma question n'est pas trop nulos :)

A Bientot .....

Re : Pb de Thread le 15/05/2007 19:06:19

rt15
Membre Club
Salut,

executé une fontion qui ce trouve dans un autre thread

Pour moi, ça ne veut pas dire grand chose...

Un thread ça ressemble à un contexte d'execution (Adresse de la prochaine instruction à executer, etat de la pile, état des registres...) Tous les thread d'un même processus ont accès à la même mémoire, et aux mêmes fonctions.

Un thread c'est en quelques sorte un chemin suivie par le processeur dans le code. Avec deux trhead, on obtient deux chemins qui sont executés simultanéments dans le code (En apparence seulement vu que le processeur ne peut executé qu'un thread à la fois. Du moins les vieux proces.).

Tu peux pas préciser un peu svp ?

Re : Pb de Thread le 15/05/2007 19:16:31

rt15
Membre Club
Je crois que j'ai saisie : tu veux executer un code se trouvant dans un autre processus.

Tes deux applis ne partagent pas la même mémoire. Autrement dit, à l'adresse x dans le processus 1, il n'y a pas la même chose qu'à l'adresse x dans le processus 2.

Une technique d'execution de thread dans un processus différent est détaillé dans un des deux bouquns sur cette page (JR4 ou CP5), je sais plus. Mais en anglais et en C...

Un execute remote thread dans google peut donner du résultat aussi je pense.

Re : Pb de Thread le 15/05/2007 19:17:17

rt15
Membre Club
J'ai oublié le lien...

http://brunews.free.fr/brunews/index.htm

Re : Pb de Thread le 15/05/2007 22:42:45

lo_63

bonsoir rt15

Tout d'abord merci pour les réponses.

je vais regarder le JR4. mais je pense que tu as compris mon probleme.

je vais etre peut etre plus clair.

j'ai une application qui load une dll pour les hook et je mets en parametre le pointeur de ma fonction qui est dans mon application 1 et le handle d'une application ou j'applique une demande de hook sur les evenements souris.

Donc quand le handle sur ma form, la dll fait un call sur ma fonction sans posé de probleme, puisque on utilise la meme memoire.

mais si le handle est sur une autre application le call fait une erreur fatal sur l'application ou le hook etait installé.

Apres verification c'est bien ce que tu disait il n'utilise pas la meme memoire et donc le call envoie sur un pointeur memoire de applcations avec le hook.

Le test maintenant c'est d'essayé un CreateRemoteThread mais j'en suis pas sur ;), ca va etres de la haute voltige looll. enfin je vais voir si je crash pas mon pc ;)

Je metterait des infos si cela fonctionne

Merci Encore








Classé sous : fonction, pb, appli, thread, callback

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS