Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:06 Число просмотров: 724
Автор: kabanchik Статус: Незарегистрированный пользователь
|
Ну тоды не знаю что у тебя. Но наверняка это твой баг.
может параметры/флажки не те.
а еще обрати внимание на 1 деталь
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
т.е. lpApplicationName - const char* (точнее TCHAR)
lpCommandLine - char*. может тут такой вариант не проходит
lpCommandLine = (char*)"SomeExecutableFile.exe".
еще учти UNICODE версию
если ты где то написал
#define FILE_EXE "SomeExecutableFile.exe"
CreateProcess((LPCTSTR)FILE_EXE, .....);
то для UNICODE версии это должно привести к crash-у ....
вообщем тут много чего может быть, о котором не подозреваешь. На то он и баг называется, что трудно ловится :-))))) Просмотри еще раз, и обязательно потом вызови GetLastError() - посмотри что за ошибку выдает. Это наверняка может о чем то подсказать.
Удачи.
|
<programming>
|
[C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 26.05.01 21:44
Автор: Drongo Статус: Незарегистрированный пользователь
|
Дело в том. что у меня там было все это дело, тока я все аргументы поставил нулями, а исполняемый модуль был прописан, кстати все специально из МСДНа брал для 2000-ой...
Хотя попробую ышо твой вариант.... 8-)))
А за внимание огромное пасиба... 8-))
|
|
[C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 01:42
Автор: kabanchik Статус: Незарегистрированный пользователь
|
Пожалуйста конечно. Но ....
> Дело в том. что у меня там было все это дело, тока я все > аргументы поставил нулями, а исполняемый модуль был > прописан, кстати все специально из МСДНа брал для что - то не понятно. Хчешь сказать, что в параметре lpApllicationName указал, к примеру, "SomeExecutableFile.exe" и он у тебя не заработал?
|
| |
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 02:55
Автор: Drongo Статус: Незарегистрированный пользователь
|
> Пожалуйста конечно. Но .... > > > Дело в том. что у меня там было все это дело, тока я > все > > аргументы поставил нулями, а исполняемый модуль был > > прописан, кстати все специально из МСДНа брал для > что - то не понятно. Хчешь сказать, что в параметре > lpApllicationName указал, к примеру, > "SomeExecutableFile.exe" и он у тебя не заработал?
совершенно в дырочку..... 8-)) там у мя стояла конкретная консольная прога, которую нада запустить, прога без глюков, отлажена..... кроме того, в моем случае тридв не проходят, поскольку нада именно новый процесс.... 8-(((
|
| | |
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:06
Автор: kabanchik Статус: Незарегистрированный пользователь
|
Ну тоды не знаю что у тебя. Но наверняка это твой баг.
может параметры/флажки не те.
а еще обрати внимание на 1 деталь
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
т.е. lpApplicationName - const char* (точнее TCHAR)
lpCommandLine - char*. может тут такой вариант не проходит
lpCommandLine = (char*)"SomeExecutableFile.exe".
еще учти UNICODE версию
если ты где то написал
#define FILE_EXE "SomeExecutableFile.exe"
CreateProcess((LPCTSTR)FILE_EXE, .....);
то для UNICODE версии это должно привести к crash-у ....
вообщем тут много чего может быть, о котором не подозреваешь. На то он и баг называется, что трудно ловится :-))))) Просмотри еще раз, и обязательно потом вызови GetLastError() - посмотри что за ошибку выдает. Это наверняка может о чем то подсказать.
Удачи.
|
| | | |
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 13:50
Автор: Drongo Статус: Незарегистрированный пользователь
|
в том то и все западло что ошибку выдаеть всегда одну и ту же... 8-(( а по ней доки мало, перелопатил все МСДНы которыи со словом 2000 нашел.. 8-))) ну лана, буду мучаться, а ве таки винда - это сакс!!! никакого тебе уважения к программерам!!!! 8-)))
покеда.... 8-))
|
| | | | |
[C++] [C++] Кабанчику: за совет спасиба, но коли чесно, то нули я там поставил просто так... 8-)) 27.05.01 17:29
Автор: kabanchik Статус: Незарегистрированный пользователь
|
то что одну и ту же ошибку выдает это хорошо. ты бы написал какую конкретно.
И еще есть одно лекарство. Называется Visual Studio Service Pack 6. Закачай его из M$-а. У меня в оной задаче была проблемка, я поставил новый SP, проблемы не стало :)
А пока попробуй написать такую фигню, если пройдет, то тебе точно новый SP нужен.
typedef BOOL (*CreateProcessFunc)(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
BOOL CreateProc(LPCTSTR lpAppName, DWORD dwFlags, LPSTARTUPINFO si, LPPROCESS_INFORMATION pi)
{
ASSERT(lpAppName != NULL);
ASSERT(pi != NULL);
HMODULE hModule = ::GetModuleHandle(_T("kernel32.dll"));
ASSERT(hModule != NULL);
if (hModule == NULL)
{
TRACE("Kernel32.dll module is not loaded\n");
return FALSE;
}
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcess");
ASSERT(pfnCreateProc != NULL);
if (pfnCreateProc == NULL)
{
TRACE("Couldnot find the address of function CreateProcess in the module kernel32.dll\n");
return FALSE;
}
return (*pfnCreateProc)(lpAppName, NULL, NULL, NULL, TRUE, dwFlags, NULL, NULL, si, pi);
}
Ну а если и это не поможет, то звони 911 :))
Удачи ...
P.S. не поленись, укажи параметр LPPROCESS_INFORMATION lpProcessInformation.
|
| | | | | |
[C++] Поправка 28.05.01 01:25
Автор: kabanchik Статус: Незарегистрированный пользователь
|
Совсем позабыл, т.к. есть 2 версии CreateProcess, т.е. Unicode and ANSI versions для 2К, то тут надо так
#ifdef UNICODE
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcessW");
#else // UNICODE
CreateProcessFunc pfnCreateProc = (CreateProcessFunc)::GetProcAddress(hModule, "CreateProcessA");
#endif // UNICODE
теперь кажись все.
|
|
|