cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014
-
12 mars 2006 à 06:02
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
12 mars 2006 à 18:54
Salut,
J'ai un problème avec la fonction GetOpenFileName()
Voilà, parfois pendant que la fenêtre est ouverte j'obtient un plantage de l'application (avant de cliquer sur OK).
Exception non gérée à 0x7ca614ae dans Client trojan v2.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x01384f90
C'est très bizarre, car ça se passe de façon aléatoire on dirait. Souvent c'est après un deuxième appel de la fonction que ça plante. Je n'ai pas encore une grande connaissance du C alors je me demandais si vous auriez une explication, ou peut-être qu'une chose pareil vous serait déjà arrivé (l'expérience quoi). J'ai regardé partout dans l'appli je n'ai pas trouver de mémoire qui semble empiéter.
Aussi je voudrais une info, la fonction GetOpenFileName() étant autoblocante, comment ce fait-il que je peux continuer à utiliser mon programme (y compris la fenêtre qui a lancé le get) sans qu'il bloque ? Et même appeler une deuxième fenêtre d'ouverture (en mettant hwndOwner = 0)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 mars 2006 à 09:57
lpstrFilter - est lu en tant que chaine 'multi part' où chaque partie est normalement terminée par un zéro et le dernier élem DOIT terminer par 2 zéros, exemple "*.*\0*.*\0\0".
Vire les ZeroMemory inutiles: Filename[0] = 0; suffit pour finir une chaine.
file.lStructSize = sizeof(OPENFILENAME); !!!
GetWindowText(GetDlgItem(hwnd, IDC_LISTE_PATH), Pathname, 512);
d'où sort ce 512 ???
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 12 mars 2006 à 16:34
Oui pourquoi 512. La limite de Pathname est MAX_PATH qui a une valeur de 255 ou 256 ché plus trop. Ça serais plus prudent de faire GetWindowText(GetDlgItem(hwnd, IDC_LISTE_PATH), Pathname, MAX_PATH ou sizeof(Pathname));
___________________________________________
Les plus grands esprits trouvent toujours une solution
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 12 mars 2006 à 16:52
Pour le GetWindowText() je m'en suis aperçu après le post, je venais tout juste de changer le code cette section et j'avais oublier les nouvelles dimentions. Merci pour les conseils, mais ça ne règle pas, je vais continuer à chercher d'éventuel dépassement dans le code, mais la au moins je sais qu'elle est maintenant initialisée comme il faut.