• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Вывод результата выполнения команды в переменную

  • Автор темы Alien193
  • Дата начала
A

Alien193

Вот собственно функция, ExecuteDOSCommand, после выполнения dos команды получает результат её выполнения, т.е. то что выводится в консоли на экран.
consoleoutput.pas добавляем в проект С++Builder
и ставим #include "consoleoutput.hpp"
Сами функции написаны на дельфи, я дельфи не знаю, поэтому разобраться в нем не могу.

следующий код, самый простой

C++:
ShowMessage(ExecuteDOSCommand("echo test"));

Выводит иероглифы и квадратики. Что не так?
 

Вложения

  • dosoutput.rar
    2,1 КБ · Просмотры: 108
A

az09az

Спасибо за функцию, давно искал.

Вывод происходит в кодировке cp886 (DOS). Ее надо сконвертировать в cp1251(win)

Вот функции для c++ builder 6


Код:
// из DOS в Windows
String DosToWin(String St)
{
PChar Ch;
Ch = StrAlloc(St.Length() + 1);
OemToAnsi(St.c_str(), Ch);
return Ch;
}
// из Windows в DOS
String WinToDos(String St)
{
PChar Ch;
Ch = StrAlloc(St.Length() + 1);
AnsiToOem(St.c_str(), Ch);
return Ch;
}

Так же можно перед выполнением комманды написать chcp1251 например
ExecuteDosCommand("cmd /k chcp1251; echo a");
как-то так...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!