Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Арт Гость
|
Добавлено: Пн Фев 04 2002 08:17 Заголовок сообщения: Visual C++ |
|
|
1.Как сделать Application-Terminate (т.е. СРОЧНО прервать работу приложения) 2.Как проверить наличие файла (типа функции FileExists) |
|
Вернуться к началу |
|
|
Alexy
Зарегистрирован: 22.10.2003 Сообщения: 48
|
Добавлено: Пн Фев 04 2002 09:26 Заголовок сообщения: Re: Visual C++ |
|
|
1. ExitProcess, TerminateProcess, exit, PostQuitMessage
2. OFSTRUCT ofs; if(HFILE_ERROR != OpenFile("...", &ofs, OF_EXIST) // file exist |
|
Вернуться к началу |
|
|
яяя Гость
|
Добавлено: Пн Фев 04 2002 10:09 Заголовок сообщения: да ну, на открытие прав может не быть!!! (-) |
|
|
- |
|
Вернуться к началу |
|
|
Alexy
Зарегистрирован: 22.10.2003 Сообщения: 48
|
Добавлено: Пн Фев 04 2002 11:47 Заголовок сообщения: Re: да ну, на открытие прав может не быть!!! (-) |
|
|
А GetLastError на что ? |
|
Вернуться к началу |
|
|
ilya Гость
|
Добавлено: Пн Фев 04 2002 11:57 Заголовок сообщения: Terminate process |
|
|
STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInformation; DWORD status; MSG msg;
GetStartupInfo(&StartupInfo); StartupInfo.wShowWindow = SW_MINIMIZE ; if (!CreateProcess(NULL,"c:\\c_run.bat",NULL,NULL,FALSE,0,NULL,NULL, &StartupInfo,&ProcessInformation))
return ERROR_CREATE_PROCESS; startTime=GetCurrentTime(); do { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&m.. if((GetCurrentTime()-startTime)/1000=Timeout) { TerminateProcess(ProcessInformation.hProcess,1); return TIMEOUT_COPY_PROCESS; }
GetExitCodeProcess(ProcessInformation.hProcess,&status); } while (status == STILL_ACTIVE);
CloseHandle(ProcessInformation.hProcess); |
|
Вернуться к началу |
|
|
ilya Гость
|
Добавлено: Пн Фев 04 2002 12:01 Заголовок сообщения: Terminate |
|
|
STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInformation; FILE *batFile,*logFile; unsigned long startTime; char strLine[500]; DWORD status; MSG msg;
if ((logFile = fopen("c:\\c_log.log","w+t")) == NULL) return ERROR_OPEN_LOG_FILE_1; fclose(logFile); if ((batFile = fopen("c:\\c_run.bat","w+t")) == NULL) return ERROR_OPEN_BAT_FILE;
sprintf(strLine,"copy %s %c:\\%s>>c:\\c_log.log\na\n",SourcePath,NetLabel,DestPath); fw.. fclose(batFile);
GetStartupInfo(&StartupInfo); StartupInfo.wShowWindow = SW_MINIMIZE ; if (!CreateProcess(NULL,"c:\\c_run.bat",NULL,NULL,FALSE,0,NULL,NULL, &StartupInfo,&ProcessInformation))
return ERROR_CREATE_PROCESS; startTime=GetCurrentTime(); do { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&m.. if((GetCurrentTime()-startTime)/1000=Timeout) { TerminateProcess(ProcessInformation.hProcess,1); CloseHandle(ProcessInformation.hProcess); ; return; }
GetExitCodeProcess(ProcessInformation.hProcess,&status); } while (status == STILL_ACTIVE);
//CloseHandle(hThreadHC); CloseHandle(ProcessInfo.. |
|
Вернуться к началу |
|
|
яяя Гость
|
Добавлено: Пн Фев 04 2002 12:19 Заголовок сообщения: некоторые файлы |
|
|
а именно метафайлы в NTFS, требуют при открытии определенного параметра, не помню как он зовется, но бывает он что-то типа OPEN_ALWAYS или OPEN_EXISTING. С использованием GetLastError будет с ними и другими подобными девайсами полный онанизм. К тому же, могут отсутствовать права не только на сам файл, но и на папку, шару, хардлинк, и так далее, чего только ни придумаешь. Я вообще, кстати, не понимаю смысл определения, есть ил нет файл. Даже если он есть, к нему может не быть доступа. Я бы, например, кричал об ошибке при неудачном открытии, а не до него. |
|
Вернуться к началу |
|
|
|