Продовжуйте програму в cmd


0

У мене є невелика програма, розроблена як Win32 GUI. Не відкривається cmd за замовчуванням, однак він друкує важливі дані для stdout. Я не хочу отримати ці дані, тому спробував виконати їх безпосередньо з cmd.

Коли я запускаю програму з cmd, вона миттєво звільняє консоль, і я можу щось знову набрати. Хоча, я намагався це зробити Program.exe | cat(у мене встановлений cygwin), і це спрацювало чудово.

Тепер єдина проблема полягає в тому, що програма не може змінити положення курсору, колір тексту тощо. Я знаю, що вони змінюються так:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), fg + bg * 16);

Чи можна використовувати командний рядок із цією програмою? Як я вже сказав, вихід трубопроводів не задовольнить мене, поки це не дозволить модифікувати. Я не знаю про бічні програми, пускові установки, навіть патчі ASM було б чудово.

Заздалегідь спасибі.


програми win (gui) зазвичай не прикріплюють консоль. Можливо, використовується OutputDebugString? Ви можете спробувати запустити DebugView від Sysinternals ( technet.microsoft.com/en-us/sysinternals/bb896647 ) та захопити win32
wmz

Відповіді:


0

Використовуйте pauseкоманду в сценарії.

Program.exe
pause

Або спробуйте запустити cmdз /kаргументом:

cmd.exe /K

Жоден не працював. З'явиться вікно і чекає, поки виконання закінчиться, але нічого не відображається.
галасливий кіт

0

Як тільки ви захочете вивести вихід у статичний (текстовий) файл, тоді немає ніякого способу «перемістити курсор» у цей файл, але ви побачите замість нього esc-послідовності або просто бінарні дані.

Як і здогадка: спробуйте Program.exe > c:\mytest.txt


SetConsoleTextAttribute редагує внутрішні властивості консолі як вікно, а не вихід. Коди втечі ansii працюють лише на * nix. Виведення у файл не дає нічого, навіть менше | cat.
галасливий кіт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.