Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2010, 16:50   #1
иннокент
Новичок
Джуниор
 
Регистрация: 06.08.2010
Сообщений: 2
По умолчанию Проблема при использовании CreatProcess

Пишу прогу в VisualStudio 2005. Необходимо написать программу, которая запускает другую программу в качестве процесса.
Использую CreatProcess:
Код:
STARTUPINFO lpStartupInfo;
ZeroMemory(&lpStartupInfo,sizeof(STARTUPINFO));
PROCESS_INFORMATION lpProcessInfo;

LPWSTR Str = LPWSTR ("f:\\dp.exe");
if (CreateProcess(NULL,Str,NULL,NULL,NULL,FALSE,NULL,NULL,&lpStartupInfo,&lpProcessInfo)==TRUE)
	{
		cout << "Process has been started succefully";	
	}
При отладке на строке с функцией программа вылетает с ошибкой Access violation...

Подскажите, в чем может быть проблема?

Вот, что пишет отладчик:
Unhandled exception at 0x77e94826 in StartingProcess.exe: 0xC0000005: Access violation writing location 0x0041775a.

Последний раз редактировалось Stilet; 06.08.2010 в 16:56.
иннокент вне форума Ответить с цитированием
Старый 06.08.2010, 17:53   #2
aRise
Пользователь
 
Регистрация: 06.08.2010
Сообщений: 11
По умолчанию

Код:
int main()
{
    STARTUPINFO SI;
    PROCESS_INFORMATION PI;

    ZeroMemory(&SI,sizeof(SI));
    if ( !CreateProcess("c:\\windows\\calc.exe", "calc", NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL,NULL, &SI, &PI) )
    printf("\ncan't create process...\n");
    
 return 0;
}
aRise вне форума Ответить с цитированием
Старый 06.08.2010, 18:16   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

MSDN гласит, что CreateProcessW может изменять строку с командной строкой, а тут она константная.
Somebody вне форума Ответить с цитированием
Старый 06.08.2010, 20:02   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Не любит CreateProcess в качестве первого парметра NULL. Хотя религия (МСДН) позволяет.
p51x вне форума Ответить с цитированием
Старый 18.08.2010, 16:51   #5
иннокент
Новичок
Джуниор
 
Регистрация: 06.08.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от aRise Посмотреть сообщение
Код:
int main()
{
    STARTUPINFO SI;
    PROCESS_INFORMATION PI;

    ZeroMemory(&SI,sizeof(SI));
    if ( !CreateProcess("c:\\windows\\calc.exe", "calc", NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL,NULL, &SI, &PI) )
    printf("\ncan't create process...\n");
    
 return 0;
}
компилятор на это говорит:

cannot convert parameter 1 from 'const char[20]' to 'LPCWSTR'
иннокент вне форума Ответить с цитированием
Старый 18.08.2010, 16:55   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
!CreateProcess((LPCWSTR)"c:\\windows\\calc.exe", (LPWSTR)"calc",...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.08.2010, 19:11   #7
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

вместо char string-ов надо ставить wide string-и

L"c:\\windows\\calc.exe"
L"calc"



wchar_t Str[] = L"f:\\dp.exe";

Последний раз редактировалось f.hump; 18.08.2010 в 19:21.
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при использовании WM_GETTEXT c RichEdit GurAnvir Win Api 1 08.06.2010 14:08
Проблема при использовании прозрачности объектов в OpenGL Gwaeron Помощь студентам 0 22.04.2010 11:18
Проблема с языком при использовании SQL Yetiball БД в Delphi 4 20.05.2009 19:38
Проблема при совместном использовании OSS 6.5 и ESS 4.0 Sazary Безопасность, Шифрование 1 07.03.2009 16:27
Проблема при использовании модальной формы a1ias Помощь студентам 10 14.11.2008 17:29