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

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

Alien193

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

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

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

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

Вложения

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

Вывод происходит в кодировке 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");
как-то так...
 
Вот функции для c++ builder 6
спасибо, у вас работают эти функции? кодирует нормально?
у меня просто билдер 2009, функции ошибку выдают, а если переделать то не работает
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab