Интерфейс DOS-Windows

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Windows 98/Me

Post by Lavr »

Lavr wrote:... программа, ради которой я стараюсь, принципиально написана без поддержки мыши. Видимо,
придется написать под неё маленький резидент, который запустит обслуживание мыши. 8)
В общем-то у меня в итоге всё получилось именно так, как я и хотел: :kruto:
DOSapp.gif
Для эмулятора "Специалист_МХ" от Шевцова я прикручивал все эти фишки и удобства... :wink:

Я им реально пользуюсь весьма часто, а поддержки мыши в нём нет, что неудобно, поэтому и возникла
такая идея - попробовать придать мышиные функции извне программе, у которой их в принципе нет.

Поэтому сначала запускается "стартер" - программа SPMX42PR.COM - она инициализирует мышь, берет
на себя обслуживание процедуры прерывания мыши, после чего запускает сам SPMX42PR.EXE, и клики
мыши по его экрану преобразует в команды клавиатуры через INT 16H.
Программа SPMX42PR.COM также передаёт сообщение "ABCD" в Clipboard Windows для Windows-части
проекта. Поймав через Clipboard сообщение "ABCD" Windows-приложение выдаёт нажатие [Alt]+[Enter],
которое переключает оконный и полноэкранный вид SPMX42PR.EXE.

Ну и поскольку я давно хотел эмулятор "Специалиста_МХ" с мышью, ниже на скриншоте показано, куда
кликать левой кнопкой, и что от этого будет... :lol:

 имитация кнопок мышью
spmx580.gif

Из негативных вещей: похоже, что это всё работает только под Windows 98. По той простой причине,
что под Windows ХР сам эмулятор SPMX42PR.EXE работает только в полноэкранном виде.
Нажатие [Alt]+[Enter] сворачивает его в значок, и в оконном режиме он не работает никак. :osad:
Поэтому всё слежение за Clipboard просто теряет смысл... :-? Но в полноэкранном виде связка со стартером
SPMX42PR.COM + SPMX42PR.EXE работает великолепно!

Выкладываю архив с исходником SPMX42PR.COM, вдруг кто захочет придать "мышиности" всему RAMFOS!
Там по коду это сделать легко, и оставлены закомментированными средства для этого.
SP_DOSst.zip
В архиве:
DOSStart.exe - запускает под Windows SPMX42PR.COM + SPMX42PR.EXE и следит за Clipboard и мышью.
DOShook.dll - hook на сообщения мыши.
TO_EARTH.ALL - две медленные игрушки, в которые можно поиграть, кликами мыши. 8)
Остальное - понятно из этого текста.
You do not have the required permissions to view the files attached to this post.
Last edited by Lavr on 22 Mar 2024 17:31, edited 1 time in total.
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Windows 98/Me

Post by Lavr »

Lavr wrote:Из негативных вещей: похоже, что это всё работает только под Windows 98. По той простой причине,
что под Windows ХР сам эмулятор SPMX42PR.EXE работает только в полноэкранном виде.
Нажатие [Alt]+[Enter] сворачивает его в значок, и в оконном режиме он не работает никак. :osad:
Сегодня из интересу попробовал как это работает под Windows 7 - ситуация полностью противоположна. :lol:
Windows 7 не умеет запустить DOS-приложение в полноэкранном виде, на этом всё и заканчивается,
ибо в оконный режим она его тоже не сворачивает.

Погуглил, что пишут в "этих наших Интернетах": пишут, что в видео-драйверах Windows 7 режимы эмуляции DOS
просто исключены, ибо прошло много времени, чтобы тащить за собой "старьё DOS".
А желающие копошится с ним должны поставить видео-драйверы от Windows ХР .
Ну это уж слишком кардинальная мера, на мой взгляд. :-?
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Windows 98/Me

Post by Lavr »

Lavr wrote:... программа, ради которой я стараюсь, принципиально написана без поддержки мыши.
Мы вот тут обсуждали поддержку мыши в программах, где её принципиально нет, и я упомянул, что:
Lavr wrote:... под ДОС существовал хороший драйвер мыши для программ без оной - он превращал движения
и клики мыши в управляющие коды клавиатуры.
В этом драйвере, я и подсмотрел, как этот трюк с клавишами делается в принципе.
Хотя, вначале не это было в нём главным: драйвер делал курсор текстового режима графическим,
что было гораздо приятней квадратика... :lol:
Но потом оказалось, что и подстановка клавиш в ряде случаев очень удобная фича! :kruto:

Для заинтересованных коллег выкладываю драйвер в оригинале - as is:
MOUSEMU.zip
Ассемблерный листиг - мой, но, думаю, за давностью времён автор на меня не обидится... :wink:

Расковырять пришлось по той причине, что, несмотря на то, что в коде есть взаимодействие
с Вендой, видимо, версии 3.1(3.11), которое должно устранить некорректную работу драйвера
в "окне ДОС", под Вендой 98 эта фича не работала, и на экране появлялся неприятный "крест"
из четырёх символов вместо курсора. Вот тогда и возникла мысль, декомпилировать до исходника и добавить взаимодействие с Вендой через VXD, но это оказалось слишком громоздким решением... :osad:
You do not have the required permissions to view the files attached to this post.
iLavr