begin process at 2012 05 29 14:35:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme Dans DLL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme Dans DLL

jeudi 29 décembre 2005 à 18:08:44 | Probleme Dans DLL

Joky

Membre Club
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 ?

if(!Meilleur("Joky")) return ERREUR;<

jeudi 29 décembre 2005 à 18:19:08 | Re : Probleme Dans DLL

vecchio56

Administrateur CodeS-SourceS
FileMapping est sans doute la meilleure solution (une source de BruNews la dessus)
jeudi 29 décembre 2005 à 18:26:21 | Re : Probleme Dans DLL

poppyto

Membre Club Administrateur CodeS-SourceS

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)

#pragma comment(linker, "/SECTION:.joky,RWS")
#pragma data_seg(".joky") 
      static char *szData[MAX_WORD];
#pragma data_seg()

Bonne chance et attention aux accès concurrentiels ;o)

Poppyto
http://www.poppyto.net
 LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#

jeudi 29 décembre 2005 à 18:33:27 | Re : Probleme Dans DLL

vecchio56

Administrateur CodeS-SourceS
Les pointeurs, ca pose pas de problème?
jeudi 29 décembre 2005 à 18:40:20 | Re : Probleme Dans DLL

poppyto

Membre Club Administrateur CodeS-SourceS
A priori non ? un pointeur n'est qu'un entier sur 32 bits .
En tout cas le compilateur accepte sans broncher. Je laisse joky tester

Poppyto
http://www.poppyto.net
 LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
jeudi 29 décembre 2005 à 19:05:15 | Re : Probleme Dans DLL

vecchio56

Administrateur CodeS-SourceS
Oui le pointeur est OK, mais la zone ou il pointe n'est pas valable pour tous les processus
jeudi 29 décembre 2005 à 20:28:00 | Re : Probleme Dans DLL

poppyto

Membre Club Administrateur CodeS-SourceS
Exact.

Poppyto
http://www.poppyto.net
 LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
vendredi 30 décembre 2005 à 01:05:22 | Re : Probleme Dans DLL

Joky

Membre Club
Re les gens ;) désolé pour le retard, y'en a qui bosse lol :) (McDo d'hénin près de lens si vous voulez me rendre visite ;) )
Donc voilà, j'ai déjà essayé la mémoire partagée avec #pragma data_seg()
mais sans succès, donc je vais essayer avec le FileMapping mais j'vais quand même essayé avant avec le GlobalAlloc pour voir ce que ça donne ;)

En tout cas merci pour vos réponses
(k)(k)(k)

if(!Meilleur("Joky")) return ERREUR;<

vendredi 30 décembre 2005 à 09:57:17 | Re : Probleme Dans DLL

DeAtHCrAsH

Le Data_seg marche nickel, je l'ai fait pour une dll qui bloque des appli.
Je partage la liste des appli cans mon data_seg.

Montre ton code ou il y a la data_seg, et l'importation des var du data_seg si tu bosses avec des fichier autre que le Main.

Shell
vendredi 30 décembre 2005 à 11:10:22 | Re : Probleme Dans DLL

poppyto

Membre Club Administrateur CodeS-SourceS
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 ....

Poppyto
http://www.poppyto.net
 LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#


Cette discussion est classée dans : application, probleme, dll, coller, szdata


Répondre à ce message

Sujets en rapport avec ce message

C# probleme d'exportation d'exe [ par golum ] voila g écrit un prog en C# mais bon si je fait mon exe il me manque une dll de base pour l'écécuter (cette dll est payante).suis-je oubligé de faire OPENGL.DLL introuvable ??? [ par dominiquox ] Je me suis fait un petit programme sous VC++ 6.0,Je mets les libraries glut.lib, glut32.lib et opengl32.lib (Disponibles dans http://prografix.free.fr OPENGL.DLL introuvable ??? [ par dominiquox ] Je me suis fait un petit programme sous VC++ 6.0,Je mets les libraries glut.lib, glut32.lib et opengl32.lib (Disponibles dans http://prografix.free.fr Probleme D'ordi [ par Ben-J ] J'ai un Probleme...Suite a une erreur de manip j'ai un prob avec les dll de mon ordi , la plupart des app bug a cause d'une exportation manquante NTDL chargement de dll [ par juliol ] bonjour, j'ai un probleme...j'utilise une dll avec loadlibrary(), lorsque je lance mon programme dans VC++il n'y a aucun probleme, elle se chargeil en probleme avec GetTcpTable de iphlpapi.dll [ par NikatorS ] Voila je cherche a utiliser GetTcpTable de iphlpapi.dll. J'ai trouver sur ce site une source mais en vb alors voulu la convertir. mais bien que je n'e comment relier des dll à un seul projet ? [ par ilimo ] bonjour,j'ai trois projets :P1 : est une dllP2 : est une dllP3 : c'est le exeje peux relier les .lib de P1 et P2 au programme exede cette façon quand Probleme de fenetrage avec MFC VC++ [ par MaDC ] Salut tlm!J'dois faire une fenetre (identification) qui s'ouvre a l'initialisation de mon application MFC dans le constructeur de mon appliView. Pour Probleme de Dialog VC++ [ par anaya ] Bonjour,J'espere bien que vous allez m'aider, voila mon probleme:Mon programme marche a merveille avec Domodal(); mais moi je dois utiliser autre cho application multilanguage [ par laxave ] Salut tlm!Voilà, je voudrai réaliser une application multi langue français - anglais dans un premier temps.Je sais que le mieux est d'exporter mes res


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales