Probléme de code non portable
Bonjour,
j'ai crée une fonction qui renvoi le chemin d'un fichier pour l'enregistrer.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
void SaveFile(char name[],const CHAR Filter[])
{
HWND cons;
char buf[30]={'\0'};
GetConsoleTitle(buf,30); // c'est ici que se situe le probléme !
if(buf[0]=='\0')
{
cons = FindWindow ("Type32_Main_Window",NULL);
}
else
cons = FindWindow (NULL,buf);
OPENFILENAME opensavefile;
CHAR szFile[MAX_PATH]={'\0'};
ZeroMemory(&opensavefile, sizeof(OPENFILENAME));
opensavefile.lStructSize = sizeof(OPENFILENAME);
opensavefile.hwndOwner = cons;
opensavefile.lpstrFile = szFile;
opensavefile.nMaxFile = MAX_PATH;
opensavefile.lpstrFilter =Filter;
opensavefile.nFilterIndex = 1;
opensavefile.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetSaveFileName(&opensavefile)==TRUE)
{
int y=0;
for(;szFile[y]!='\0';y++)
{
name[y]=szFile[y];
}
} |
Pour utiliser la fonction GetSaveFileName() il me faut l'Handle du programme qui l'utilise et il se trouve qui la seul solution pour la recupérer est d'effectuer GetConsleTitle() puis FindWindow().
Cependant le fonction GetConsoleTitle() ne fonctionnne pas sur le poste ou je travaille mais je l'ai tester sur deux autre machine et elle fonctionne très bien !!! Cela vient-il de qq chose en paarticulier ?
j'ai remarquer que quand j'ai selectionner la console, la fenètre d'enregistrement n'a pas le focus. Y a-t-il une option pour interdire l'accés a la console ?
Merci