|
|
|
Вывод текста в консоль28.10.2012, 18:51. Показов 12651. Ответов 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
Вывод текста в консоль
Вывод текста с файла на консоль Вывод цветного текста в консоль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|