Здрасте
Есть досовкая прога которая при помощи
програмного прерывания моргает LEDами
Теперь эту прогу надо под 98ми заставить работать
Перехватил в досе программное прерывание
Из виндов могу моргать LEDами. Вопрос как теперь это все связать ?
Здравствуйте MALnew, Вы писали:
MAL>Здрасте MAL>Есть досовкая прога которая при помощи MAL>програмного прерывания моргает LEDами MAL>Теперь эту прогу надо под 98ми заставить работать MAL>Перехватил в досе программное прерывание MAL>Из виндов могу моргать LEDами. Вопрос как теперь это все связать ?
Что имеется ввиду под "программным" прерыванием? А вообще тема гиблая. Путем длительных изысканий и изысков, я получил, что реальны 2 путя для лова аппарвтного прерывания под Win32 —
1. писать драйвер (по-сложнее, по-дольше, но правильнее ),
2. писать Win16 приложение (по-проще), где прерывание ловишь, как под ДОС, а потом тем или иным способом (через MESSAGE, например) сообщаешь Win32приложению о происходящем беспределе.
Удачи.
Здравствуйте Adil, Вы писали:
A>Что имеется ввиду под "программным" прерыванием? А вообще тема гиблая. Путем длительных изысканий и изысков, я получил, что реальны 2 путя для лова аппарвтного прерывания под Win32 - A>1. писать драйвер (по-сложнее, по-дольше, но правильнее ), A>2. писать Win16 приложение (по-проще), где прерывание ловишь, как под ДОС, а потом тем или иным способом (через MESSAGE, например) сообщаешь Win32приложению о происходящем беспределе.
В проге в чужой — написано int86(0x65,®s,®s); в регистрах какой LED зажигать.
Я его ловлю а вот и как его винде отправить ?
Здравствуйте MALnew, Вы писали:
MAL>Здравствуйте Adil, Вы писали:
A>>Что имеется ввиду под "программным" прерыванием? А вообще тема гиблая. Путем длительных изысканий и изысков, я получил, что реальны 2 путя для лова аппарвтного прерывания под Win32 - A>>1. писать драйвер (по-сложнее, по-дольше, но правильнее ), A>>2. писать Win16 приложение (по-проще), где прерывание ловишь, как под ДОС, а потом тем или иным способом (через MESSAGE, например) сообщаешь Win32приложению о происходящем беспределе.
MAL>В проге в чужой — написано int86(0x65,®s,®s); в регистрах какой LED зажигать. MAL>Я его ловлю а вот и как его винде отправить ?
А зачем его ловить и отправлять? Лампочки можно и с помощью SendInput зажечь.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте MALnew, Вы писали:
MAL>Здрасте MAL>Есть досовкая прога которая при помощи MAL>програмного прерывания моргает LEDами MAL>Теперь эту прогу надо под 98ми заставить работать MAL>Перехватил в досе программное прерывание MAL>Из виндов могу моргать LEDами. Вопрос как теперь это все связать ?
Ты хочешь из WIN32 моргать или из ДОС под Win98 ?
Если второе, то никаких проблем. Если первое, то не на много сложенее. WIN98 не виртуализирует эти порты, на сколько я это помню.
Я эмулировал как то последовательный порт — очень удобно отлаживать ДОС аппликации из под WIN98/95.
Если тебя интересует ДОС под WIN98, то могу подсказать все, что угодно(в пределах разумного). Можно даже сделать прогу для обмена данными между различными ДОС окнами. Сидишь в BC31 к примеру, и получаешь список всех окон ДОС. Или делаешь прозрачный клипборд для всех ДОС окон. И тд и тд.
Ничего сложного, если ты знаком ДОСом изнутри. А WIN95/98 на самом деле ДОС и есть.
Здравствуйте Sergey, Вы писали:
MAL>>В проге в чужой — написано int86(0x65,®s,®s); в регистрах какой LED зажигать. MAL>>Я его ловлю а вот и как его винде отправить ?
S> А зачем его ловить и отправлять? Лампочки можно и с помощью SendInput зажечь.
Я не могу изменять чужую программу — она Досовская
Здравствуйте Dutchman, Вы писали:
D>Ты хочешь из WIN32 моргать или из ДОС под Win98 ? D>Если второе, то никаких проблем. Если первое, то не на много сложенее. WIN98 не виртуализирует эти порты, на сколько я это помню.
D>Я эмулировал как то последовательный порт — очень удобно отлаживать ДОС аппликации из под WIN98/95. D>Если тебя интересует ДОС под WIN98, то могу подсказать все, что угодно(в пределах разумного). Можно даже сделать прогу для обмена данными между различными ДОС окнами. Сидишь в BC31 к примеру, и получаешь список всех окон ДОС. Или делаешь прозрачный клипборд для всех ДОС окон. И тд и тд.
Давайте по подробнее обьясню.
Есть программа(досовская) которая раньше включала выключала ЛЕДы на специальной клаве.Программу менять нельзя.
Но можно в дос сессии этой проги перехватить намерение проги управлять ЛЕДами с помощью TSR программки и перехватывания int86(0x65,®s,®s)
Сейчас поменялось железо — эта спецализированная клава со множестом ЛЕДов.Теперь эта клава работает через USB.
В Винпроге я могу управлять ЛЕДами примерно так:
HANDLE h = CreateFile("\\\\.\\usbpanel",ляля-не важно);
hresult = DeviceIOControl(h,IOCTL_SET_LED,ляля-не важно);
Короче ЛЕДами управляю. А дальше затык — идеи нету.
И еще досовская прога работает в текстовом режиме.
"Можно даже сделать прогу для обмена данными между различными ДОС окнами. " — А как допустим между дос сесией и вин32 приложением или между дос сесией и драйвером если Вынь98 и есть ДОС ? :)
Здравствуйте MALnew, Вы писали:
MAL>Давайте по подробнее обьясню. MAL>Есть программа(досовская) которая раньше включала выключала ЛЕДы на специальной клаве.Программу менять нельзя. MAL>Но можно в дос сессии этой проги перехватить намерение проги управлять ЛЕДами с помощью TSR программки и перехватывания int86(0x65,®s,®s) MAL>Сейчас поменялось железо — эта спецализированная клава со множестом ЛЕДов.Теперь эта клава работает через USB. MAL>В Винпроге я могу управлять ЛЕДами примерно так: MAL>HANDLE h = CreateFile("\\\\.\\usbpanel",ляля-не важно); MAL>hresult = DeviceIOControl(h,IOCTL_SET_LED,ляля-не важно); MAL>Короче ЛЕДами управляю. А дальше затык — идеи нету. MAL>И еще досовская прога работает в текстовом режиме. MAL>"Можно даже сделать прогу для обмена данными между различными ДОС окнами. " — А как допустим между дос сесией и вин32 приложением или между дос сесией и драйвером если Вынь98 и есть ДОС ?
Запросто ! В 95/98 ты можешь использовать DPMI. Но это фигня, ты можешь использовать виндошный буфер обмена из ДОС. Как точно это сделать, я не знаю — это прерывание кажется 2F. Но вот ДОС Навигатор это умеет.