Пробую считать wand.dat только почему ниче не выходит Пытаюсь сделать это так Code: char *text=new char[(1024*1024)*5]; void opera(void) { DWORD rd; char app[500];char *pat=new char[1024*1024]; ExpandEnvironmentStrings("%APPDATA%",app,500); strcpy(pat,"\\\\.\\"); strcat(pat,app); strcat(pat,"\\opera\\opera\\profile\\wand.dat"); SetLastError(0); HANDLE f=CreateFile(pat,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS,NULL); ReadFile(f,text,(1024*1024)*5,&rd,NULL); cout<<GetLastError()<<endl; CloseHandle(f); cout<<pat<<endl; } main() { opera(); cout<<text<<endl; getch(); } Пытался напрямую вбивать строку в CreateFile Code: \\\\.\\C:\\Documents and Settings\\user\\Application Data\\opera\\opera\\profile\\wan.dat Нечитает Хотя если в Выполнить ввести %APPDATA%\opera\opera\profile\wand.dat то этот самый ванддат открывается в блокноте.Ткните плиз где у меня ошибка.
_nic У тебя ошибка в пути. Во-первых, ты пишешь, что тебе нужен файл wand.dat, а сам Во-вторых, в моей опере файл wand.dat лежит в "C:\Program Files\Opera\profile\wand.dat", папки opera в %APPDATA% вообще нет.
НЕ! Я не понимаю в чем проблема, запусти под отладкой и проверь путь к файлу, и проверь хендл. if (h == INVALID_HANDLE_VALUE) <значит хендл говно и точно дело в пути> если не получится, пиши в личку, помогу все равно делать нех...
Не он првильно пишет, ибо у меня тут: C:\Documents and Settings\user_name\Application Data\Opera\Opera\profile\wand.dat
Влепил после CreateFile вот это Code: if (f == INVALID_HANDLE_VALUE) { MessageBox(0,"err","err",MB_OK); } эффекта никакого.мессага невыскакивает
2_nic скинь скомпиленную прогу и исходник меня заинтересовало, чтото ошибки не вижу ^___^ ослеп чтоле
Если так то у тебя хендл нормальный, нужно ошибку искать в фкц чтения. Ты бы исходник выложил, дело бы быстрей пошло
Code: char *text=new char[(1024*1024)*5]; void opera(void) { DWORD rd; char app[500];char *pat=new char[1024*1024]; ExpandEnvironmentStrings("%APPDATA%",app,500); strcpy(pat,"\\\\.\\"); strcat(pat,app); strcat(pat,"\\opera\\opera\\profile\\wand.dat"); SetLastError(0); HANDLE f=CreateFile(pat,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS,NULL); if (f == INVALID_HANDLE_VALUE) { MessageBox(0,"err","err",MB_OK); } ReadFile(f,text,(1024*1024)*5,&rd,NULL); cout<<GetLastError()<<endl; CloseHandle(f); cout<<pat<<endl; } main() { opera(); cout<<text<<endl; getch(); } Исходник
мож так Code: #include<windows.h> #include <stdio.h> #include<IO.h> int main() { char path[1024]; ExpandEnvironmentStrings("%APPDATA%", path, 900); strcat(path, "\\opera\\opera\\profile\\wand.dat"); FILE *f = fopen(path, "rb"); if(!f) return printf("File \"%s\" not found\n", path); int fl = filelength(fileno(f)); char *cont = new char[fl+1]; fread(cont, fl, 1, f); cont[fl] = 0; printf("%s\n", cont); fclose(f); return 1; }
Как нестранно ниче невыводится.В cont пусто ,мистика какя то Если ввести в выполнить это %APPDATA%\opera\opera\profile\wand.dat то wand.dat открывается в блокноте.
2nc.STRIEM функции из стандартной библиотеке лучше не использовать в win32 приложениях, тк они более тормознуты и в конечном итоге всё равно обращаются к API