Salut,
J'ai un problème avec la fonction GetOpenFileName()
BOOL CALLBACK ExplorerDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND Path;
switch(message)
{
case IDC_BTNUPLOAD:
{
OPENFILENAME file;
char FileName[MAX_PATH];
char Pathname[MAX_PATH];
ZeroMemory(FileName, sizeof(FileName));
ZeroMemory(&file, sizeof(file));
file.hwndOwner = hwnd;
file.hInstance = NULL;
file.lpstrCustomFilter = NULL;
file.nMaxCustFilter = 1;
file.nFilterIndex = 1;
file.lpstrFileTitle = NULL;
file.nMaxFileTitle = NULL;
file.lpstrInitialDir = NULL;
file.lpstrDefExt = NULL;
file.lCustData = NULL;
file.lpfnHook = NULL;
file.lpTemplateName = NULL;
file.lpstrFilter = "Tous les Fichier (*.*)\0*.*\0";
file.lpstrDefExt = "*.*";
file.nMaxFile = sizeof(FileName);
file.lpstrFile = FileName;
file.Flags = OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
file.lStructSize = sizeof(file);
if (GetOpenFileName(&file))
{
GetWindowText(GetDlgItem(hwnd, IDC_LISTE_PATH), Pathname, 512);
UploadFile(FileName, Pathname);
}
}
break;
}
return 0;
}
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)
A+
[ Lien ]
if (CPossible)