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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2015, 19:18   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Я не об этом. Получить данные из стороней проги можно. Есть два варианта. Либо она даёт такую возможность в опциях, либо - декомпиляция.
Цитата:
она запустилась вывела на экран строчку и закрылась, а как мне эту строчку получить в переменную???
Пиши не читая да, Smitt&Wesson?

П.С. А зачем занимать диск операциями ради одной стоки?
p51x на форуме Ответить с цитированием
Старый 26.08.2015, 19:26   #12
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
system("recognize.exe img.png > out.txt");
И потом считать этот out.
не?
Прикалываешься? Вариант в первом приближении. Во-втором уже не катит
Чему детишек учишь, хоть задумался?

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Да, видимо и правда у вас там весело, раз даже стандартных потоков вывода нету.
Как ж вы там в консоль пишете?


Про
Код:
program.exe > file.txt
тоже не слышали? (только если запускать это просто через system, то оно вроде не будет ждать пока программа завершится, что может быть неудобно)
Я об этом не задумываюсь. Пишу и всё. Мне по-барабану синтаксис минтаксис, получается и всё. Могу написать и на Китайском, вот только алгоритмов на нём не нашел.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Stilet; 26.08.2015 в 20:06.
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.08.2015, 19:42   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Бывает. Но перед написанием на форум стоит все-таки задумываться, а не "писать и всё". Хотя бы читать еще надо.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.08.2015, 20:07   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Вариант в первом приближении. Во-втором уже не катит
Чему детишек учишь, хоть задумался?
А что не так? Я таким макаром Лотус бэкаплю. Очень неплохо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2015, 20:09   #15
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И для stderr тоже.

И я сомневаюсь, что у вас именно dos программа. Скорее всего просто консольная программа, что не эквивалентно dos.
Консольная да, читает картинку капчу рядом и выводит значение в консоль, от нужно из программы MFC запустить эту программку и получить значение. Если бы она в файл записывала было бы хорошо, а так хз. как получить. Есть программка на CLI та эту программу что капчу разбирает как то загружает и получает значение капчи. Как просто запустить программу понятно, а как получить строку со значением которую программа выводит в консоль не понятно. Вот скрин что программа выводит в консоль
QIP Shot - Screen 158.jpg
от само изображение, это я вручную ее запустил из командной строки
ninja2 вне форума Ответить с цитированием
Старый 26.08.2015, 20:16   #16
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да сказали ж уже все варианты:
1.
Код:
system("recognition.exe img.png > file.txt");
и потом читать файл. Может быть неудобно то, что system вроде не ждет пока программа завершится.
2.
Запускать самому через CreateProcess и перенаправлять stdout.
Гугл и MSDN в помощь.
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
https://www.google.com/search?q=crea...dout+to+string
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.08.2015, 20:25   #17
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Я не об этом. Получить данные из стороней проги можно. Есть два варианта. Либо она даёт такую возможность в опциях, либо - декомпиляция. .
Вот опции что она просит ввести
QIP Shot - Screen 161.png

не видно чтобы она куда то в файл сохраняла, есть программа на CLI которая эту прогу использует, указывает урл для капчи наверно из интернета и норм ее разбирает, даже файл не копирует к exe, вот скрин набора файловQIP Shot - Screen 162.png Так когда программа работает никаких файлов не создается, значит что? значит она просто как то ее запускает и из нее берет данные. У чувака нету исходников, говорит ему пять человек делали и легко подключали, а ты говоришь что это все сложно . Только еще раз запустил изображение все таки к exe файлу копирует. просто не понятно как она вызывает, вот скрин проги с капчей
QIP Shot - Screen 163.jpg
Чувак же как то сделал на CLI читает же данные. Тут мб. нужно ее с какими то параметрами вызывать чтобы она в файл записывала, так новый файлов вроде нету. Если бы оно в файл сохраняло было бы хороше, прочитал с файла и все дела, а так гадай, мб. она где и сохраняет в файл, наверно он бы создался если бы создавала.

Исходников нету, так бы хоть посмотрел как оно так вызывает ее. оно похоже еще и pgpro.exe запускает. Два exe запускаются

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Да сказали ж уже все варианты:
1.
Код:
system("recognition.exe img.png > file.txt");
и потом читать файл. Может быть неудобно то, что system вроде не ждет пока программа завершится.
2.
Запускать самому через CreateProcess и перенаправлять stdout.
Гугл и MSDN в помощь.
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
https://www.google.com/search?q=crea...dout+to+string
Щас попробую, первый вариант больше нравится , вообще прикольно так можно мелких прог наделать и запускать чтобы прогу не засирать типо модульность.

Последний раз редактировалось Stilet; 26.08.2015 в 22:16.
ninja2 вне форума Ответить с цитированием
Старый 30.08.2015, 19:21   #18
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Пытаюсь создать через процесс, но ниче не получается, делаю так
Код:
STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

	if (CreateProcess(L"recognition.exe",L"img.png",
		NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)==TRUE)
	{
		AfxMessageBox(L"yes");
		Sleep(1000);				// подождать
		//TerminateProcess(pi.hProcess,NO_ERROR);	// убрать процесс
		
		WaitForSingleObject( pi.hProcess, INFINITE );
		CloseHandle( pi.hProcess );
		CloseHandle( pi.hThread );
	}
Появляется окошко, оно блымнуло и все и то там вроде параметр img.png не передался, как получить содержимое в переменную из CreateProcess???

Последний раз редактировалось ninja2; 30.08.2015 в 19:24.
ninja2 вне форума Ответить с цитированием
Старый 30.08.2015, 20:53   #19
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Как поменять вывод? пробую так сделать
Код:
STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(si) );
	si.dwFlags=STARTF_USESTDHANDLES;
    si.cb = sizeof(si);
	
	CString str;
	str.Preallocate(100);
	TRACE("str.lenth=%d\n",str.GetLength());
	si.hStdOutput=&str;
    ZeroMemory( &pi, sizeof(pi) );
	

	if (CreateProcess(L"recognition.exe",L"img.png",
		NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)==TRUE)
	{
		
		Sleep(5000);				// подождать
		//TerminateProcess(pi.hProcess,NO_ERROR);	// убрать процесс
		AfxMessageBox(str);
		WaitForSingleObject( pi.hProcess, INFINITE );
		CloseHandle( pi.hProcess );
		CloseHandle( pi.hThread );
	}
Ниче не выходит, вообще консоль запускается, а потом вылетает.

И так пробовал, тоже не выходит
Код:
STARTUPINFO si;
    PROCESS_INFORMATION pi;
	si.dwFlags=STARTF_USESTDHANDLES;
	wchar_t* str=new wchar_t[100];
	si.hStdOutput=&str;

    ZeroMemory( &si, sizeof(si) );

Последний раз редактировалось ninja2; 30.08.2015 в 21:04.
ninja2 вне форума Ответить с цитированием
Старый 30.08.2015, 21:06   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Что возвращает CreateProcess?
Что возвращает GetLastError() после него?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделить память под строку и записать в нее данные marenko.lilia Помощь студентам 3 22.08.2014 11:31
Получить HInstance DLL имея под рукой только форму из нее it-webwork Общие вопросы Delphi 1 18.03.2013 14:36
Как получить данные с чужой программы в свою? pepesina Общие вопросы Delphi 21 13.07.2012 16:24
Как запустить образ ISO из под DOS m1rinat Компьютерное железо 1 04.10.2009 10:05