cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
29 déc. 2005 à 18:08
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011
-
30 déc. 2005 à 11:10
Salut les gens :)
Donc voilà, je réalise encore mon Hook sur les fonctions copier coller etc...
et je rencontre un certain problème ;)
J'ai comme variable globales un tableau de chaîne de caractère
static char *szData[MAX_WORD];
à chaque copie, il stock le contenu du clipboard dans mon tableau et incrémente l'index (Sauvegarde du clipboard en faite)
Ensuite j'ai fais une fonction Coller qui m'affiche szData[0] juste
pour voir comment ça se déroule, et donc, quand je fait plusieur Ctrl+C
dans une application et que je colle, il m'affiche la message box avec
le premier Ctrl+C que j'ai effectué, donc comme voulu,
Mais si pour coller, je change d'application, szData[0] ne contient rien :(
J'ai bien essayer de le mettre avant data_seg() mais rien :(
Donc comment partager ma variable pour plusieur application ?
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 29 déc. 2005 à 18:26
Alala la mémoire partagée. Il y a plusieurs techniques. Perso, j'ai pas opté pour le couple (CreateFileMapping/MapViewOfFile) . C'est pas le simple mais ça fonctionne et j'en avais besoin car je devais utiliser les SECURITY_DESCRIPTOR :
const int SHMEMSIZE = 2048;
HANDLE hMapObject = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // no security attributes
PAGE_READWRITE, // read/write access
0, // size: high 32-bits
SHMEMSIZE, // size: low 32-bits
"MemoirePartageeJoky"); // name of map object
// obtient un pointeur sur la mémoire partagée
void * lpvMem = MapViewOfFile(
hMapObject, // object to map view of
FILE_MAP_ALL_ACCESS, // read/write access
0, // high offset: map from
0, // low offset: beginning
0); // default: map entire file
Une autre technique beaucoup plus simple qui te conviendra beaucoup mieux ;o)
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 30 déc. 2005 à 11:10
DeAtHCrAsH -> comme le disais vecchio, le problème ne vient pas du tableau mais des pointeurs que joky veut stocker.
En effet si une appli A alloue de la mémoire et stocke le pointeur dans le fameux tableau partagé, l'appli B ne pourra pas avoir accès à la mémoire même si elle a accès à l'adresse de celle-ci.
Après on peut faire ça en utilisant la technique SeDebugPrivilege/OpenProcess/VirtualQueryEx mais bon ça c'est plus des trucs de bidouilles donc autant développer politiquement correct ....