Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Apr 04, 2020 9:09 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 15 posts ] 
Author Message
PostPosted: Fri Jun 27, 2008 3:34 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Вобщем одна программа должна посылать сообщение о нажатии клавиши другой программе.
Что-то типа sendkey в Win.


Top
   
PostPosted: Fri Jun 27, 2008 11:20 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Нет, в Колибри такого нет.. можно посылать сообщения о нажатии кнопок в приложении, и клавиши мыши. хотя то что ты сапрашиваешь мне пригодилось бы весьма и весьма..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sat Jun 28, 2008 10:25 am 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Мне бы тоже пригодилось для моей программы "Экранная клавиатура". Хотелось бы конечно добавить новую функцию Kolibri, но не знаю как к этому отнесутся разработчики ядра. Все-таки, по-моему, эта функция будет влиять на безопасность системы. :?


Top
   
PostPosted: Sat Jun 28, 2008 12:26 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
В Колибри нет безопасности системы. Вообще.


Top
   
PostPosted: Sat Jun 28, 2008 1:59 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
я тоже хотел бы написать это приложение.. будет хорошо сочетаться с mousEmul)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Thu Jul 03, 2008 4:04 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Тогда предлагаю добавить эту функцию. Прошу проголосовать.

Вот что-то вроде заготовки: http://narod.ru/disk/1262852000/ZKEY.BIN.html


Top
   
PostPosted: Thu Jul 03, 2008 4:46 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Asper

А как она будет реализована ?


Top
   
PostPosted: Thu Jul 03, 2008 5:14 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Я не силен в асм, т.к. пишу в основном на С++, но общая идея такая:
Вход:
eax = как всегда номер функции
bl = код клавиши
ecx = PID процесса которому посылаем сообщение о нажатой клавише

1. В KEY_BUFF помещаем код нажатой клавиши
2. Посылаем через функцию proc send_event stdcall pid:dword, event:dword сообщение процессу о нажатии клавиши

Что-то вроде этого.


Top
   
PostPosted: Thu Jul 03, 2008 6:14 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
это будет противоречить тому, что сообщения о нажатии (не горячих) клавиш получает только процесс с активным окном..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Thu Jul 03, 2008 6:24 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Ну что ж, в таком случае от PID готов отказаться.
Функция будет посылать сообщение процессу с активным окном CURRENT_TASK.


Top
   
PostPosted: Thu Jul 03, 2008 10:52 pm 
Online
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5106
diamond (22:56:51 3/07/2008)
дык есть же такая
72.1

_________________
Через тернии к звездам


Top
   
PostPosted: Fri Jul 04, 2008 1:21 am 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Спасибо Leency! То что надо! :D Скачал k_svn.803 и порывшись там немного действительно нашёл 72 функцию sys_sendwindowmsg. Документацию я к ней к сожалению не нашел (имеющаяся у меня дока заканчивается на 71 функции). Т.к. как я уже говорил в асме не силен, то хотелось бы чтобы кто-нибудь описал входные и выходные её параметры.

Code:
sys_sendwindowmsg:
        dec     eax
        jnz     .ret
        cmp     ebx, 3
        jz      .sendbtn
        cmp     ebx, 2
        jnz     .ret
.sendkey:
...
        jmp     .ok
.overflow:
        popf
        mov     dword [esp+36], 1
        ret
.sendbtn:
...
.ok:
        popf
        and     dword [esp+36], 0
.ret:


Не совсем понял, sendkey получается 72.2, sendbtn 72.3, а 72.1 зачем?
:?


Top
   
PostPosted: Fri Jul 04, 2008 9:16 am 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Asper
Quote:
Документацию я к ней к сожалению не нашел

Плохо смотришь, смотри в 'svn/kernel/trunk/docs/sysfuncr.txt'
Там все функции описаны.
Code:
============================================
==== Функция 72 - послать сообщение окну. =====
============================================
--- Подфункция 1 - послать сообщение с параметром активному окну. ----
Параметры:
  * eax = 72 - номер функции
  * ebx = 1 - номер подфункции
  * ecx = код события: 2 или 3
  * edx = код клавиши для ecx=2, идентификатор кнопки для ecx=3
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - буфер заполнен

_________________
Заглянул на огонёк


Top
   
PostPosted: Sat Jul 05, 2008 4:25 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Спасибо Alver,теперь все стало ясно.


Top
   
PostPosted: Mon Jul 14, 2008 8:25 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Вот, что получилось:
http://narod.ru/disk/1464301000/ZKEY%200.3.rar.html
и код, если кому интересно:
http://narod.ru/disk/1464377000/ZKEY%200.3%20source.rar.html

Посылает скан коды нажатых(down) клавиш приложениям. Чтобы посылать сообщение нужному окну, нужно это окно активировать, а потом активировать ZKEY.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 15 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited