Графика в консоли!

Тема в разделе "WASM.WIN32", создана пользователем microprogs, 2 окт 2006.

  1. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Привет всем!
    Кто мне может ответить на такой странный вопрос:
    Написать WIN32 консольное приложение, которое сможет в консоли поставить графический режим и использовать графику, как это было в ДОСе...

    Не использовать GUI!
    Не писать ДОС-приложение!

    Хочу WIN32-Console приложение, которое может залезть в душу виндовой виртуальной машине (которая эмулирует дос-графику) и попользовать ее....

    Если проще - хочу графику в WIN32 консоли....
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    есть на sf.net какая то либа, к-рая позволяет эмулить графику в ASCII (называется что ли как-то asclib или как-то так, точно не помню). люди извращались и запускали кваку в текст-моде с помощью этой либы. думаю, стоит покопать в эту сторону.
     
  3. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Спасибо, но мне не нужен ASCII-арт.
    Мне нужно залезть в душу виртуальной машине NT и поставить графический режим в консоли так же, как винда бы это сделала при эмуляции ДОС-графики!
    Фактически это не "консоль" в привычном понимании этого слова, а извращенное приложение, которое насилует виртуальную машину...
     
  4. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    http://aa-project.sourceforge.net/aalib/
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    microprogs
    А чем GDI не угодил?
    Консольное окно также имеет контекст на котором можно рисовать.
    http://www.firststeps.ru/mfc/winapi/r.php?6
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    ssx
    угу, именно оно
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    microprogs
    Похоже, что Вас больше интересует метод, а не цель.
     
  8. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Спасибо, но мне не нужны примеры, как рисовать с помошью GDI, MFC, это итак ясно...
    Мне нужно другое: Поставить графический режим в консоли - т.е. при нажатии Alt+Enter оно будет не отличимо от ДОС-графики...

    Как забраться в душу этому API, который пользует виртуальная машина???
    Кто-нибудь ковырял виртуальную машину?
     
  9. Pretorian

    Pretorian New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    33
    Адрес:
    Russia
    Как рисуется в форме, так и рисуется в консоли, консоль от формы ни чем не отличается, берешь контекст устройства по хендалу консоли и на чинаешь муливать, затем отпускаешь его.
    hDC = GetDC(Handle)
    ...
    ReleaseDC(Handle,hDC)
     
  10. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Я умею рисовать НА ОКНЕ!!!
    И на окне консоли рисовать тоже умею!!!

    Как рисовать на окне консоли, когда его развернули на весь экран???

    Т.к. в данном случае уже работает не GDI, виртуальная машина и ставится там именно текстовый режим!
    А значить если я нажал ALT+ENTER, то никакая GDI мулевать уже не поможет!!!
     
  11. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    microprogs
    Откуда такая уверенность? Кстати, в текстовом режиме рисовать вообще нельзя по определению.
     
  12. Pretorian

    Pretorian New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    33
    Адрес:
    Russia
    Рисование на развернутом экране я не встречал. Но не уверен что в текстовом режиме нельзя рисовать по определению, давайте вспомним спектрум, там тоже нельзя было на бордюре рисовать и писать, а ведь делали такие финты, это надоже догадаться расчитать смену цвета бордюра с выводом его на лучевую трубку.
     
  13. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Я знаю, что в текстовом режиме рисовать нельзя!!!
    Я понимаю, чем отличается TextMode от GraphMode!
    Я хочу узнать, какие функции вызывает виртуальная машина, когда эмулирует дос-приложение, которое СТАВИТ ГРАФИЧЕСКИЙ РЕЖИМ!
    Кто-то этим занимался???
    Времени нет самому ковыряться....
    Ведь можно открыть айс и проследить запуск и выполнение дос-приложения в винде....
    Тока на это нужно время, может кто-то занимался???
    Видел в универе чувака, который рисовал в консоли на ура!!! И это было полноценное WIN32-CONSOLE приложение!!! Жаль только я его видел один раз (

    З.Ы. И не надо меня учить, чем текст отличается от графики! =)
    З.Ы. Ответьте пожалуйста по-существу, а не трепом...
    Ведь постановка задачи ясна, разве нет?
     
  14. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    microprogs
    А у всех остальных свободного времени полно, чтоб ерундой заниматься и перед тобой отчитываться о проделанной работе :)

    Кажется, тут уже неоднократно намекали на возможность использования замечательной графической подсистемы - GDI. На изучение примитив точки, линии, прямоугольника, эллипса и т.д. у тебя тоже нет времени? А у того чувака в универе время, видимо, было.
     
  15. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Вопрос банальный до безобразия - нафига? Чем вам не угодило DOS приложение или консольное Win-приложение с ASCII артом? и наконец нафиг юзать вышеперечисленное если есть GUI и нормальные виндовозные окна? Захотелось назад к предкам - это в DOS, захотелось рисовать как в винде - это к винде... Зачем изобретать колесо?
     
  16. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Я знаю GDI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Я его юзал столько раз и писал такие вещи!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    КОГДА КОНСОЛЬ РАЗВЕРНУТА НА ВЕСЬ ЭКРАН, GDI НЕ РИСУЕТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Т.К. ТАМ УЖЕ СТАВИТСЯ РЕАЛЬНЫЙ ТЕКСТОВЫЙ РЕЖИМ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    БРАЛ ТРИ КОМПА, ТОТ TEXTMODE, КОТОРЫЙ НЕ СТАВИТСЯ В ЧИСТОМ ДОСЕ, НЕ СТАВИТСЯ И В РАЗВЕРНУТОЙ НА ВЕСЬ ЭКРАН WIN-CONSOLE-ЭМУЛЯЦИИ ДОС ПРИЛОЖЕНИЯ!!!!!!!!!!!!
    Я ПРОШУ НЕ РИСОВАНИЕ, КАК ТАКОВОЕ, А КАК КОВЫРЯТЬ ВИРТУАЛЬНУЮ МАШИНУ!!!!!
    ВЕДЬ ЭТО ЯДРО NT, НЕУЖЕЛИ В НЕМ НИКТО НЕ КОВЫРЯЛСЯ??????????????????????????
     
  17. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    ДО БОЛИ ИНТЕРЕСНО ЗНАТЬ API ВИРТУАЛЬНОЙ МАШИНЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
  18. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    microprogs
    Хватит орать! Откуда у VM может быть API?! Единственное, что с натяжкой можно назвать API досовской виртуальной машины - колгейт через исключение #UD, генерируемое комбинацией байт C4C4.
     
  19. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Виртуальная машина имхо - подобие драйвера. Ну хотя бы потому, что пашет она под Ring-0
     
  20. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Позволю не согласится. А на что это похоже?:

    Код (Text):
    1. Address    Section    Type    (  Name                                    Comment
    2. 0F004107   .text      Export     BlockWOWIdle
    3. 0F004135   .text      Export     getMSW
    4. 0F0043AC   .text      Export     DispatchInterrupts
    5. 0F004CDD   .text      Export     getIF
    6. 0F004CFB   .text      Export     VDDRetrieveNtHandle                     4 arguments
    7. 0F004E05   .text      Export     Sim32pGetVDMPointer                     2 arguments
    8. 0F005088   .text      Export     getSP
    9. 0F0050B6   .text      Export     getSS
    10. 0F0050CF   .text      Export     setSP                                   1 argument
    11. 0F005406   .text      Export     getCS
    12. 0F005464   .text      Export     getDX
    13. 0F0057DE   .text      Export     getIP
    14. 0F00595D   .text      Export     getSI
    15. 0F0059B3   .text      Export     setIP                                   1 argument
    16. 0F005A5E   .text      Export     VDDAssociateNtHandle
    17. 0F005AD4   .text      Export     VDDAllocateDosHandle
    18. 0F006107   .text      Export     SuspendTimerThread
    19. 0F006238   .text      Export     getBX
    20. 0F006251   .text      Export     host_ExitThread
    21. 0F00670D   .text      Export     host_CreateThread
    22. 0F00677F   .text      Export     setCF                                   1 argument
    23. 0F0067DB   .text      Export     ResumeTimerThread
    24. 0F006F9F   .text      Export     setCX                                   1 argument
    25. 0F006FC4   .text      Export     setDX                                   1 argument
    26. 0F007074   .text      Export     getBL
    27. 0F007556   .text      Export     demFileFindFirst                        3 arguments
    28. 0F007A62   .text      Export     setBX                                   1 argument
    29. 0F007AB5   .text      Export     getAL
    30. 0F007ACD   .text      Export     setAL                                   1 argument
    31. 0F007CA4   .text      Export     getDS
    32. 0F007CFA   .text      Export     setAX                                   1 argument
    33. 0F007E38   .text      Export     demClientErrorEx                        3 arguments
    34. 0F007F8C   .text      Export     demFileFindNext                         1 argument
    35. 0F0080C0   .text      Export     setBP                                   1 argument
    36. 0F00819E   .text      Export     getCX
    37. 0F0084DD   .text      Export     demGetPhysicalDriveType                 1 argument
    38. 0F008A5D   .text      Export     call_ica_hw_interrupt                   3 arguments
    39. 0F009493   .text      Export     getAH
    40. 0F0094AE   .text      Export     getAX
    41. 0F0097A3   .text      Export     getCL
    42. 0F00A349   .text      Export     getDL
    43. 0F00B4EA   .text      Export     setDI                                   1 argument
    44. 0F00CDAD   .text      Export     setCH                                   1 argument
    45. 0F00DC8B   .text      Export     setDL                                   1 argument
    46. 0F00E3BF   .text      Export     IsCdRomFile                             1 argument
    47. 0F00F34C   .text      Export     <ModuleEntryPoint>
    48. 0F00FC60   .text      Export     setBL                                   1 argument
    49. 0F01061E   .text      Export     getIntelRegistersPointer
    50. 0F0106C0   .text      Export     getCF
    51. 0F010BCB   .text      Export     setIF                                   1 argument
    52. 0F011B79   .text      Export     setAH                                   1 argument
    53. 0F01257C   .text      Export     setES                                   1 argument
    54. 0F0125A0   .text      Export     getBP
    55. 0F014137   .text      Export     getES
    56. 0F014D6D   .text      Export     setCS                                   1 argument
    57. 0F015C49   .text      Export     RegisterWOWIdle
    58. 0F017D39   .text      Export     setDH                                   1 argument
    59. 0F018661   .text      Export     getCH
    60. 0F0199FE   .text      Export     setCL                                   1 argument
    61. 0F01AB46   .text      Export     getDI
    62. 0F032153   .text      Export     SoftPcEoi
    63. 0F032781   .text      Export     VDDInstallMemoryHook
    64. 0F032872   .text      Export     VDDDeInstallMemoryHook
    65. 0F032916   .text      Export     VDDAllocMem
    66. 0F032991   .text      Export     VDDFreeMem
    67. 0F032A0C   .text      Export     VDDIncludeMem
    68. 0F032A65   .text      Export     VDDExcludeMem
    69. 0F032B5B   .text      Export     VDDInstallUserHook
    70. 0F032BC2   .text      Export     VDDDeInstallUserHook
    71. 0F032CF0   .text      Export     VDDInstallIOHook
    72. 0F032ED3   .text      Export     VDDDeInstallIOHook
    73. 0F032F98   .text      Export     VDDReserveIrqLine
    74. 0F033034   .text      Export     VDDReleaseIrqLine
    75. 0F0330DC   .text      Export     VDDRequestDMA
    76. 0F0331D6   .text      Export     VDDQueryDMA
    77. 0F033261   .text      Export     VDDSetDMA
    78. 0F033352   .text      Export     VdmParametersInfo
    79. 0F0333E4   .text      Export     VdmGetParametersInfoError
    80. 0F033A16   .text      Export     WOWSysErrorBox
    81. 0F0341BF   .text      Export     host_direct_access_error                1 argument
    82. 0F034543   .text      Export     WaitIfIdle
    83. 0F034FD6   .text      Export     host_com_close                          1 argument
    84. 0F0355CB   .text      Export     host_simulate
    85. 0F0434C2   .text      Export     getEAX
    86. 0F0434DA   .text      Export     getEBX
    87. 0F0434F2   .text      Export     getBH
    88. 0F04350D   .text      Export     getECX
    89. 0F043525   .text      Export     getEDX
    90. 0F04353D   .text      Export     getDH
    91. 0F043558   .text      Export     getESP
    92. 0F043570   .text      Export     getEBP
    93. 0F043588   .text      Export     getESI
    94. 0F0435A0   .text      Export     getEDI
    95. 0F0435B8   .text      Export     getEIP
    96. 0F0435D0   .text      Export     getFS
    97. 0F0435E9   .text      Export     getGS
    98. 0F043602   .text      Export     getPF
    99. 0F043620   .text      Export     getAF
    100. 0F04363E   .text      Export     getZF
    101. 0F04365C   .text      Export     getSF
    102. 0F043698   .text      Export     getDF
    103. 0F0436B6   .text      Export     getOF
    104. 0F0436D4   .text      Export     getEFLAGS
    105. 0F0436EC   .text      Export     setEAX
    106. 0F04370F   .text      Export     setEBX
    107. 0F043732   .text      Export     setBH                                   1 argument
    108. 0F043762   .text      Export     setECX
    109. 0F043785   .text      Export     setEDX
    110. 0F0437A8   .text      Export     setESP                                  1 argument
    111. 0F0437CB   .text      Export     setEBP
    112. 0F0437EE   .text      Export     setESI
    113. 0F043811   .text      Export     setSI                                   1 argument
    114. 0F043836   .text      Export     setEDI
    115. 0F043859   .text      Export     setEIP
    116. 0F04387C   .text      Export     setSS                                   1 argument
    117. 0F0438A0   .text      Export     setDS                                   1 argument
    118. 0F0438C4   .text      Export     setFS
    119. 0F0438E8   .text      Export     setGS
    120. 0F04390C   .text      Export     setPF
    121. 0F043927   .text      Export     setAF
    122. 0F043942   .text      Export     setZF                                   1 argument
    123. 0F04396E   .text      Export     setSF
    124. 0F04399D   .text      Export     setDF
    125. 0F0439CC   .text      Export     setOF
    126. 0F0439FB   .text      Export     setMSW
    127. 0F043A1F   .text      Export     setEFLAGS
    128. 0F043EDE   .text      Export     cpu_createthread                        2 arguments
    129. 0F0446A7   .text      Export     VdmDbgAttach
    130. 0F044790   .text      Export     DBGNotifyNewTask
    131. 0F0447AA   .text      Export     DBGNotifyRemoteThreadAddress
    132. 0F0447C4   .text      Export     DBGNotifyDebugged
    133. 0F044839   .text      Export     VdmTraceEvent
    134. 0F044B07   .text      Export     GetDOSAppName
    135. 0F044CC5   .text      Export     demFileDelete                           1 argument
    136. 0F044FCA   .text      Export     VDDReleaseDosHandle
    137. 0F04696B   .text      Export     demIsShortPathName
    138. 0F047782   .text      Export     demLFNCleanup
    139. 0F047BC0   .text      Export     demSetCurrentDirectoryLCDS              2 arguments
    140. 0F047C3B   .text      Export     demGetCurrentDirectoryLCDS              2 arguments
    141. 0F04801F   .text      Export     demSetCurrentDirectoryGetDrive
    142. 0F04811A   .text      Export     demLFNGetCurrentDirectory               2 arguments
    143. 0F0486BB   .text      Export     demGetFileTimeByHandle_WOW
    144. 0F048F10   .text      Export     demWOWLFNInit
    145. 0F048F44   .text      Export     demWOWLFNAllocateSearchHandle
    146. 0F048F91   .text      Export     demWOWLFNGetSearchHandle
    147. 0F048FB2   .text      Export     demWOWLFNCloseSearchHandle
    148. 0F04986D   .text      Export     demWOWLFNEntry
    149. 0F04C04B   .text      Export     GetWOWShortCutInfo
    150. 0F04C4E3   .text      Export     cmdCheckTempInit
    151. 0F04C55A   .text      Export     cmdCheckTemp
    152. 0F04E812   .text      Export     VDDTerminateVDM
    153. 0F04F8BF   .text      Export     DpmiSetIncrementalAlloc
    154. 0F04FBEA   .text      Export     MGetVdmPointer
    155. 0F04FC03   .text      Export     VdmMapFlat                              3 arguments
    156. 0F04FCA3   .text      Export     SetShadowDescriptorEntries              2 arguments
    157. 0F06BB08   .data      Export     fSeparateWow
    158. 0F077414   .data      Export     SelectorLimit
    159. 0F09AB24   .data      Export     Dos_Flag_Addr
    160. 0F09BB2C   .data      Export     CurrentMonitorTeb
    161. 0F09BD58   .data      Export     pDeviceChain
    162. 0F09C0DC   .data      Export     ExpLdt
    163. 0F09C0E0   .data      Export     FlatAddress
    microprogs вот тебе и направление куда рыть. Правда настоящего досовского графического режима все равно НЕ БУДЕТ !!! :)

    П.С. По-видимому один я тебя понял :)