|
|
|
Вывод текста в консоль28.10.2012, 18:51. Показов 12586. Ответов 28
Метки нет (Все метки)
Я хочу запустить через консоль MS-DOS скомпилированную VB программу.
Она должна вывести в консоль текст. (нечто вроде команды printf на С++) Как реализовать кодом VB, какие настройки? P.S. Добавлю: надеюсь такой проект не будет ограничен в возможности получать доступ к API-функциям. (Хочу немного переделать код - "перехват консольного вывода" под чисто консольные нужды).
0
|
|
| 28.10.2012, 18:51 | |
|
Ответы с готовыми решениями:
28
Поиск текста в .txt и вывод этого текста в консоль Вывод текста в консоль Вывод текста на консоль в C++ |
|
|
|
| 28.10.2012, 19:20 | |
|
В .bas модуле API SetConsoleMode
Вот примерчик
2
|
|
|
Супер-модератор
|
|||||||||||
| 28.10.2012, 19:22 | |||||||||||
Сообщение было отмечено The trick как решение
Решение
Немного подождите, готовлю проект...
В принципе, все очень просто. Создайте новый проект, добавьте модуль, а в модуль sub main (это стартовая процедура). Форму можно оставить, но установить Startup Object -> Sub Main. Затем установите ссылку на Microsoft Scripting и пишите:
Последнее, что нужно сделать, это установить в PE-заголовке EXE-файла признак "Консольное приложение" (сам VB этого не делает). Сделать это нужно самому. Отдельным exe, содержащим вот такой код:
После этого запускаем экзешник и видим то, что и ожидали:
1
|
|||||||||||
|
Супер-модератор
|
|||||||||||
| 28.10.2012, 19:46 | |||||||||||
|
Единственное неудобство таких программ в том, что их нельзя отлаживать из IDE (но нет препятствий к запуску, что раздражает).
Чтобы отсечь возможность запуска из IDE, я использую код, который привожу ниже:
В целом получается полнофункциональное консольное приложение (можно использовать фильтры ком. строки, конвейеры и т.д.)
1
|
|||||||||||
|
|
|
| 28.10.2012, 20:10 | |
|
Мне кажется, что мой пример более натуральный - просто компилируется, используются настоящие "консольные" API?
0
|
|
|
Супер-модератор
|
||
| 28.10.2012, 20:31 | ||
|
0
|
||
|
|
|
| 28.10.2012, 21:04 | |
|
0
|
|
|
|
|
| 29.10.2012, 00:13 [ТС] | |
|
Такс, вариант Pro_grammer просмотрел.
Не то. Программа не должна создавать свой экземпляр консольной среды, а работать в той, из которой была запущена. И она, желательно, должна быть максимально отвязана от API. Только скриптовые языки. Смотрю var. Catstail.
0
|
|
|
|
|||
| 29.10.2012, 01:23 [ТС] | |||
|
Catstail, замечательно. Именно то, что мне нужно.
Это ж надо так изучить структуру PE EXE, чтобы вычислить нужное смещение для флага и указатель на него. Какие методы за это отвечают?
0
|
|||
|
Супер-модератор
|
||
| 29.10.2012, 08:36 | ||
|
Создайте в тек.дир. файлик 222.txt и занесите в него пустую строку. А потом выполните из командной строки: Bash t027.exe > 111.txt < 222.txt Консольное окошко возникнет и исчезнет, а вывод программы попадет в файл 111.txt PS Я не так уж хорошо знаю PE. Информацию об этой особенности консольных приложений я тоже нашел в сети (году в 2005-6, не помню). Спорил с одним упорным парнем, который доказывал, что полноценных консольных приложений на VB писать нельзя. Я его убедил в обратном. Кстати, эта же техника прекрасно работает для CGI-программ, которые тоже можно писать на VB (впрочем, такие примеры мне попадались и раньше, но теперь я написал CGI-программу "с нуля")
1
|
||
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||
| 09.12.2013, 10:22 | ||
|
надстройку для VB6 для создания консольных приложений. Может кому понадобится. Вопросы по консоли попадаются. Распаковать три файла в папку: "C:\Program Files\Microsoft Visual Studio\VB98\Template\Projects\
2
|
||
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
|
| 09.12.2013, 10:24 | |
|
2
|
|
|
Супер-модератор
|
|
| 09.12.2013, 10:47 | |
|
Alex77755, код, который Вы опубликовали (в ветви про функцию y=x) великолепен! Код компилируется без каких-либо дополнений и сразу же может быть запущен, как консольное приложение! Я думаю, что секрет - в циферке "3" у объекта FileSystemObject.
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||
| 10.12.2013, 03:10 | ||
|
Секрет в файле vbp.
Точнее в двух последних строках Добавлено через 1 минуту [VBCompiler] LinkSwitches=-subsystem:console Добавлено через 43 секунды Установленный шаблон это делает сам Добавлено через 27 секунд Можно сделать вручную в блокноте Добавлено через 16 часов 18 минут Самое интересное, что, согласно заявлению автора, можно написать программу, которая в скомпилированном виде будет работать как консольное приложение, но её можно будет запускать и в редакторе. Но вот разобраться в этом пока не могу. Надо как-то "реализовать интерфейс". Но все поиски на эту тему ведут в NET. Автор же говорит, что можно сделать и в VB. Но примера не даёт. Упоминает только об Implements ITextStream. Кто-нибудь сталкивался с таким? Есть примеры? Цитата из статьи:
2
|
||
|
|
|
| 10.12.2013, 03:54 [ТС] | |
|
Пример внедрения интерфейса можно увидеть у Карла Питерсона: http://vb.mvps.org/samples/HookXP/
Здесь еще посмотрите: http://www.mvps.org/emorcillo/... ndex.shtml На счет преобразования vb6.exe в консольную, возможно, будет достаточно этого инструмента: http://www.nirsoft.net/vb/appmodechange.html По сути тоже самое, что показывал нам Catstail.
1
|
|
|
Супер-модератор
|
|||||||||||||||||||||
| 11.12.2013, 20:30 | |||||||||||||||||||||
Сообщение было отмечено как решение
Решение
Давайте попробуем реализовать красивую идею "реализации интерфейса".
Создадим обычный проект VB, добавим в него форму (frmConsole; на ней разместим ListBox - это будет эмулятор консоли при работе под IDE), модуль кода modCon и добавим модуль класса myConsole (я добавлял его класс-билдером). Разумеется, все имена можно изменить. Установим у проекта ссылку на библиотеку Scrrun.dll (там FSO и все такое...) Теперь открывем в среде IDE модуль класса myConsole и пишем одну строчку кода:
Кликните здесь для просмотра всего текста
Выбрать нужно все элементы интерфейса TextStream (иначе код не запустится!). Далее, находим находим Private Sub TextStream_WriteLine и пишем такой код:
Кликните здесь для просмотра всего текста
Все сохраняем. Запускаем под IDE... и видим картинку 1 А теперь заходим редактором в файл console.vbp и добавляем в конец вот это: [VBCompiler] LinkSwitches=-subsystem:console Транслируем. Получаем exe-файл. Запускаем его, и убеждаемся, что у нас получилось полноценное консольное приложение (Картинка 2) Остается сказать, что если нужно не только выводить, но и читать, то нужно в коде класса реализовать соответствующие методы. Тут каждый заинтерсованный может проявить изобретательность...
2
|
|||||||||||||||||||||
|
Супер-модератор
|
|
| 11.12.2013, 21:28 | |
|
Dragokas, Вы выше меня похвалили за знание структуры EXE-файла (флаг "консольности" приложения). Но я это тоже нашел в Сети... Так что, моя заслуга здесь минимальна. А вот то, что можно использовать FSO для доступа к стандартным хэндлам - до этого я сам "допёр". Году в 2005-2006-м.
0
|
|
|
0 / 0 / 0
Регистрация: 08.01.2017
Сообщений: 4
|
|
| 18.08.2017, 15:34 | |
|
Спасибо. Никак не удавалось организовать контроль вычислений в переборной задаче. Процесс как бы шел, а индикатор в окне подвисал. Через консоль получилось.
0
|
|
| 18.08.2017, 15:34 | |
|
Помогаю со студенческими работами здесь
20
Вывод текста в консоль
Вывод текста с файла на консоль Вывод цветного текста в консоль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|