Поддержка командной строки и GUI одновременно

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 18 апр 2009.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Есть проект в Radasm+masm32 работающий через GUI. Нужно в том же проекте сделать поддержку командной строки, выполнить вывод текста в командную строку. Одновременно в линкере использовать /SUBSYSTEM CONSOLE и WINDOWS у меня не получается.
    Как это можно сделать?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Неужеле так сложно вызвать AllocConsole() etc ?
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Консольное приложение может создавать окна столько, сколько ему влезет.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Можно собрать консольное приложение и насоздавать окон как сказали в #3
    Либо можно собрать GUI приложение и выделить консоль через AllocConsole, а потом писать туда через WriteConsole
     
  5. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Ну так поддержка командной строки предусмотрена в GUI, вызываешь GetCommandLine
    и обрабатываешь, переданный аргумент или-же, UNICODE вариант CommandLineToArgvW
     
  6. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    JCronos
    В таком случае GetCommandLineA\GetCommandLineW и CommandLineToArgv же.

    vg
    Ещё хинт:
    /subsystem:windows
    AttachConsole(ATTACH_PARENT_PROCESS) failed? -> AllocConsole()
     
  7. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    CommandLineToArgvW существует только с префиксом W(UNICODE)
     
  8. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Clerk
    Не сложно, просто раньше не сталкивался.

    JCronos
    Я так и делаю для определения того, в каком режиме запущена прога (через GUI или командную строку). Не получалось выводить.

    GUI + AllocConsole() то, что нужно.

    Ещё один смежный вопрос. При выводе кириллицы получаются кракозяблики. Это можно как-нибудь исправить?
     
  9. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    В консоли и GUI используются разные кодовые страницы -- так сложилось исторически. Поэтому кодировка русских символов различается. Умеет ли ось автоматом переводить юникод в правильную однобайтовую кодировку и для гуя, и для консоли, я не знаю, но это всегда можно сделать самому.
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    vg
    Либо хранить строки в исходнике в dos-кодировке, либо сменить кодовую страницу консоли, либо пользоваться юникодом, либо преобразовывать свои строки в dos-кодировку перед выводом в консоль.
     
  11. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Как?
     
  12. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    никак. меняй кодовую страницу и все.
    SetConsoleOutputCP - по памяти, может немного ошибся в названии.
     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    vg
    Здесь последняя функция.
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    vg
    ээ а CharToOem?
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    http://ufmod.sf.net/
    утилита eff имеет гуево-консольный интерфейс, распространяется с исходниками
    http://ufmod.svn.sourceforge.net/viewvc/ufmod/Win32/Eff/