Как вызвать процесс на выполнение правильно? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Хотел написать библиотеку C++ + OpenCv. Но судьба решила иначе. Бросил эту идею. Написал обычное консольное приложение на с++ с использование OpenCv. Приложение работает 100% прально. А ехе файл решил использовать как библиотеку. Т.е. вызываю из кода это ехе, он отработал, я взял результаты и все. Но это в теории. На практике получилось все подругому. Наворотил примерно такую конструкцию:
private void OpenCvButton_Click(object sender, EventArgs e)
        {
            string PATH_OPENCV_FOLDER = Path.GetFullPath(@"..\..\OpevCv\");//folder with opencv libs and exe
            string S = Path.Combine(PATH_OPENCV_FOLDER, "_source.png"); // source bitmap
            string T = Path.Combine(PATH_OPENCV_FOLDER, "_target.png"); // target bitmap
            string EXE = Path.Combine(PATH_OPENCV_FOLDER, "ht.exe"); // exe file, which execute hough transforamtion
 
            targetPictureBox.Image.Save(S, ImageFormat.Png);// здесь все отлично работает, файл _source.png сохраняется рядом с ht.exe
            Process process = new Process();        
            process.StartInfo.FileName = EXE;
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            targetPictureBox.ImageLocation = T;// и еще вот здесь получаю ошибку почему-что
        }
Я сохраняю картинку с определенным именем, которое прописано в коде c++. Вызываю процесс. Он этот файл берет, обрабатывает, результа сохраняет в _target.png. Но почему то файл _target.png я не получаю. Хотя процесс судя по всему запускается(окно консоли появляется). Т.е. если вызываю программно - НЕ РАБОТАЕТ. Но если двойным кликом нажму на ht.exe - ВСЕ РАБОТАЕТ. Помоги разобраться. Заранее спс!

Решение задачи: «Как вызвать процесс на выполнение правильно?»

textual
Листинг программы
ProcessStartInfo startInfo = new ProcessStartInfo(EXE)
    {
        WindowStyle = ProcessWindowStyle.Hidden,
        WorkingDirectory = PATH_OPENCV_FOLDER // <------
    };
Process process = Process.Start(startInfo);
process.WaitForExit();
targetPictureBox.ImageLocation = T;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы