реклама на сайте
подробности

 
 
> Запуск программы из командной строки, в ходе выполнения другой программы (C++ Builder)
skyled
сообщение Jan 11 2011, 08:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868



Мне нужно чтобы в ходе выполнения моей программы при нажатии кнопки запускалась другая программа. Эта другая программа запускается из коммандной строки. Как это сделать в C++ Builder? Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skyled
сообщение Jan 18 2011, 10:31
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868



Что-то не получается ничего. Был бы благодарен за рабочий пример для Borland C++ 6. Спасибо.

Делаю во так:
Код
LPTSTR szCmdline = _tcsdup(TEXT("H:\program.exe"));
CreateProcess(NULL, szCmdline,NULL,NULL,FALSE,0,NULL,NULL,);

Ругается на синтаксис.

Вот еще функцию из примера попробовал:

Код
void _tmain( int argc, TCHAR *argv[] )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    if( argc != 2 )
    {
        printf("Usage: %s [cmdline]\n", argv[0]);
        return;
    }

    // Start the child process.
    if( !CreateProcess( NULL,   // No module name (use command line)
        argv[1],        // Command line
        NULL,           // Process handle not inheritable
        NULL,           // Thread handle not inheritable
        FALSE,          // Set handle inheritance to FALSE
        0,              // No creation flags
        NULL,           // Use parent's environment block
        NULL,           // Use parent's starting directory
        &si,            // Pointer to STARTUPINFO structure
        &pi )           // Pointer to PROCESS_INFORMATION structure
    )
    {
        printf( "CreateProcess failed (%d).\n", GetLastError() );
        return;
    }
    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );
    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}

Вызываю так:
Код
_tmain(0, "H:\program -o - p");


Ругается:
Код
[C++ Error] Unit1.cpp(239): E2034 Cannot convert 'char *' to 'char * *'
[C++ Error] Unit1.cpp(239): E2342 Type mismatch in parameter 'argv' (wanted 'char * *', got 'char *')
Что тут можно предпринять?

Как я понимаю, нужно как-то правильно передать в функцию указатель на командную строку...

Сообщение отредактировал skyled - Jan 18 2011, 11:27
Go to the top of the page
 
+Quote Post
o-henry
сообщение Jan 18 2011, 11:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 8-03-06
Из: степей Украины
Пользователь №: 15 069



Цитата(skyled @ Jan 18 2011, 12:31) *
Делаю во так:
Код
LPTSTR szCmdline = _tcsdup(TEXT("H:\program.exe"));
CreateProcess(NULL, szCmdline,NULL,NULL,FALSE,0,NULL,NULL,);

Ругается на синтаксис.

для начала попробуйте так
LPTSTR szCmdline = _tcsdup(TEXT("H:\\program.exe"))



Или вот слегка обезображеный мной и билдером пример из MSDN:
Прикрепленные файлы
Прикрепленный файл  CrProc.zip ( 3.97 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 18:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016