begin process at 2012 05 29 03:43:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

GETITEMDATA


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

GETITEMDATA

samedi 8 janvier 2005 à 01:51:04 | GETITEMDATA

NeoUmbrella

Salut,
 alors voila j'utilises LB_GETITEMDATA poure récuperer une valeure
 que j'utilises ensuite dans ReadMemoryProcess pour lire ce que contient
 la listbox d'une autre application car GETITEMTEXT ne marche pas..
Je dois faire la meme chose avec une listeview mais LVM_GETITEMDATA
 n'existe pas :/

Comment puis je faire ?

Merci

NeoUmbrella Corp.
samedi 8 janvier 2005 à 02:21:51 | Re : GETITEMDATA

aardman

Membre Club

Salut,
Envois le message LVM_GETITEM a la listview,
Dans la structure LVITEM tu remplis iItem, iSubItem et tu met le flag LVIF_PARAM pour recuperer le lparam de l'item.

samedi 8 janvier 2005 à 14:58:49 | Re : GETITEMDATA

NeoUmbrella

LVITEM LvItem;
 LvItem.mask=LVIF_PARAM;
 LvItem.state=0;
 LvItem.stateMask=0;
 LvItem.iSubItem=0;
 LvItem.iItem=1;
 itmHold = SendMessage(syslistview,LVM_GETITEM,0,(LPARAM)&LvItem);
 cout << itmHold << '\n';

Comme ca ?
Sais tu pourquoi ca me renvoit toujours 0 ?

NeoUmbrella Corp.
samedi 8 janvier 2005 à 18:15:03 | Re : GETITEMDATA

aardman

Membre Club
Salut,
Si la listview est dans un autre processus c'est normal que ca marche pas.
Sinon, si SendMessage retourne 1, on recupere le param dans LvItem.lParam.
samedi 8 janvier 2005 à 20:09:03 | Re : GETITEMDATA

NeoUmbrella

Effectivement, la listview est dans un autre processus.
Comment dois-je procéder ?
samedi 8 janvier 2005 à 20:15:44 | Re : GETITEMDATA

aardman

Membre Club

Salut,

La structure LVITEM doit etre valide dans le contexte du processus qui a créé la listview, donc pour allouer, remplir & lire la structure LVITEM dans l'autre processus il faut utiliser VirtualAllocEx, WriteProcessMemory, ReadProcessMemory, VirtualFreeEx.

samedi 8 janvier 2005 à 20:30:55 | Re : GETITEMDATA

NeoUmbrella

Oula je sais que utilisé GetWindowThreadProcessId et OpenProcess
Sais tu si il y'a une source qui explique ces fonctions ?
Parce que la MSDN j'y pige pas grand chose..

Merci pour ton aide

samedi 8 janvier 2005 à 20:40:33 | Re : GETITEMDATA

aardman

Membre Club
Salut,
Voila une source qui utilise cette technique pour lire des infos sur une toolbar dans le processus d'explorer:
http://www.cppfrance.com/code.aspx?ID=24855
samedi 8 janvier 2005 à 20:51:34 | Re : GETITEMDATA

NeoUmbrella

Oki merci bien aardman, jvais étudier cette source .

Bonne soirée


NeoUmbrella Corp.
samedi 8 janvier 2005 à 23:48:35 | Re : GETITEMDATA

NeoUmbrella

Salut aardman,
 voila, j'ai commencer comme ca :

syslistview = FindWindowEx(aoltabpage, 0, "syslistview32", NULL);
 cout << "Handle : " << (long)syslistview << '\n';

 GetWindowThreadProcessId(syslistview, &pid);
 cout << pid << '\n';

 hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, pid);
 cout << (long)hProc << '\n';

 ptrVM = VirtualAllocEx(hProc, NULL, sizeof(LvItem), MEM_COMMIT, PAGE_READWRITE);
 cout << (long)ptrVM << '\n';

 ReadProcessMemory(hProc, ptrVM, (LPVOID)&LvItem, sizeof(LVITEM), &ret);
 cout << ret << '\n';

Suis je sur la bonne voie ?


1 2 3 4

Cette discussion est classée dans : utilises, getitemdata


Répondre à ce message

Sujets en rapport avec ce message



Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,421 sec (4)

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