Russian Qt Forum

Qt => Общие вопросы => Тема начата: pethead от Декабрь 21, 2010, 10:00



Название: [реш]QString, WinExec, cmd /k не работает (Windows)
Отправлено: pethead от Декабрь 21, 2010, 10:00
//взят рабочий код
Код
C
 
CString str;
                       str = _T("192.168.0.81");
str = _T("cmd /k ping ") + str;
char STROUT[256];
for (int i=0;i<256;STROUT[i]=0,i++);
BOOL UDC=true;
WideCharToMultiByte(0,0,COLE2T(str.AllocSysString()),lstrlenW(COLE2T(str.AllocSysString())),STROUT,sizeof(STROUT),"",&UDC);
WinExec((LPCSTR)STROUT,SW_SHOW);
 

Код:
//переписан так
QString str;
//работает
str = "http://www.ya.ru";
ShellExecuteA(0, "open", str.toAscii(), NULL, NULL, SW_SHOWNORMAL);

//не работает
str = "cmd /k ping 192.168.0.81";
WinExec(str.toAscii(),SW_SHOW);
пишет что
'ping' is not recognized as an internal or external command,
operable program or batch file.


Название: Re: QString, WinExec, cmd /k не работает (Windows)
Отправлено: BRE от Декабрь 21, 2010, 10:04
Ну он и сообщает причину:
'ping' is not recognized as an internal or external command,

Не может он найти ping.exe.
Попробуй указать полный путь до этой программы.


Название: Re: QString, WinExec, cmd /k не работает (Windows)
Отправлено: Fat-Zer от Декабрь 21, 2010, 10:11
Если в  IDE'шке собираете, то возможно PATH не правильный стоит...
А если полный путь?
И ещё плохо знаком с винапи, но по аналогии не хватает (LPCSTR).


Название: Re: QString, WinExec, cmd /k не работает (Windows)
Отправлено: pethead от Декабрь 21, 2010, 11:07
весело. при запуске в IDE не работает. при запуске вне среды - работает.
всем спасибо.

*причина неправильного пути: почему то при отладке Qt приложения переменная пути прописывается как:

PATH=C:\Qt\4.7.1\bin;"c:\windows\system32;c:\windows;...

и т.д. т.е. после пути Qt стоит кавычка и дальше пути криво добавляются т.е. не работают. (ping не находится)
а если отлаживать win32 приложение то путь принимает правильный вид:

PATH=c:\windows\system32;c:\windows;...

т.е. при запуске из Студии ping и иные утилиты находятся.

помогло пересоздание *.vcproj из *.pro.
теперь и приложение Qt запускается с нормальной переменной path.