• XSS.stack #1 – первый литературный журнал от юзеров форума

C++/dll/кодировка

xcore

CD-диск
Пользователь
Регистрация
19.11.2022
Сообщения
12
Реакции
8
Хай.
Подскажите товарищи кодеры, собираю простенькую исполняемую dll, с функцией выполнения команды в cmd получения результата и его обработки,
проблема заключается в том, что после выполнения резальтат возращается иероглифами, то есть проблема с кодировкой.
запускаю dll так: rundll32 myproject.dll,main

Но если я тот же код собираю для exe, то все четко работает.

Плиз расжуйте мне в чем проблема.

Для наглядности
Код:
#define EXPORT extern "C" __declspec(dllexport)

EXPORT void main(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
    exec("ipconfig > C:\\1.txt");
    exec("chcp 65001 & ipconfig > C:\\65001.txt");
    exec("chcp 1251 & ipconfig > C:\\1251.txt");
    exec("chcp 866 & ipconfig > C:\\866.txt");
    exec("chcp 1250 & ipconfig > C:\\1250.txt");
    exec("chcp 1252 & ipconfig > C:\\1252.txt");
    std::string g = exec("ipconfig"); // тоже но-ворк(
}

std::string exec(const char* cmd) {

    //system("chcp 65001 > nul");

    char buffer[128];
    std::string result = "";
    FILE* pipe = _popen(cmd, "r");
    if (!pipe) throw std::runtime_error("popen() failed!");
    try {
        while (fgets(buffer, sizeof buffer, pipe) != NULL) {
            result += buffer;
        }
    }
    catch (...) {
        _pclose(pipe);
        throw;
    }
    _pclose(pipe);
    return result;
}
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх