Klawiatura ekranowa

0

Witam serdecznie :)

Zwracam sie z zapytaniem po raz kolejny bo nie moge sobie poradzic.
Pisze w BCB cos na wzor klawiatury ekranowej.
Wszystko juz mam, ale pozostala sprawa, ktorej nie potrafie
przeskoczyc.

Chodzi o to, ze aktualnie, program dziala, ale w pewnych warunkach
to dzialanie nie jest do konca pozadane ;)
Po kliknieciu w button odpowiadajacy danemu klawiszowi moje okno staje
sie aktywne,
wiec jesli powiedzmy pisze w notatniku to zwracam mu aktywnosc poprzez
SetForegroundWindow()
po czym symuluje wcisniecie klawisza przez keybd_event().
W wiekszosci przypadkow jest wszystko ok, ale program nie sprawdza sie
w przypadku
gdy chce wpisac za jego pomoca tekst w pasku adresu explorer'a.
Zaznaczam myszka pole edycyjne i klikam na button w moim programie.
Zwracam aktywnosc do explorer'a, ale po takim zwrocie tekst w polu
edycyjnym jest w calosci zaznaczony, przez co po zasymulowaniu
wcisniecia literki w polu adresu pozostaje tylko ona.

W jaki sposob zapobiec aktywacji mojego okna po kliknieciu w button?
Moge juz nawet recznie sprawdzac stan myszki i decydowac, w ktory
przycisk kliknieto
byle to okno nie stawalo sie aktywne - tak jak jest to w klawiaturze
ekranowej windows (ulatwienia dostepu).

Dzieki za odpowiedzi,
Pozdrawiam

0
Spiocszek napisał(a)

jest w calosci zaznaczony, przez co po zasymulowaniu
wcisniecia literki w polu adresu pozostaje tylko ona.

to po zwróceniu focusa do paska adresu wyślij kb_event() dla klawisze [->] (strzałka w prawo) lub [End] przez co zaznaczenie Ci zniknie... Nie jest to może konkretne rozwiązanie problemu ale zawsze coś...

0

To rozwiazanie niestety odpada (co jesli user chce wpisac litere w srodku adresu?).
Czekam na dalsze propozycje :)

0

To najpierw strzalka w lewo a potem w prawo :P
(dlaczego nie prawo - lewo ? a no wlasnie nie wiem - bo tak czy siak moze przejsc o jedna pozycje zle - ale tylko w przypadku gdy user bedzie pisal na poczatku jakas literke :P)

0

powiem tylko ze nie znalazlem rowniez rozwiazania dla tego problemu. odpada z <- -> (no jest to przyklad "brudnego" kodu)

0

a jakbyś pokombinował żeby np unieaktywnić formę - enabled = false czy whatever, albo przechwytywać komunikat wciśnięcia przycisku myszy i jeśli jest na formie to odrzucić ten komunikat (chyba się tak nie da)

0

Swoja droga klawiatura z ulatwien dostepu jakos dziala, wiec da sie to zrobic. Moze popodgladac komunikaty jakie ona wysyla i na tej podstawie cos wywnioskowac?

0

Chcialem sie dowiedziec czy udalo Ci sie cos wykonbinowac. bo ja wlasnie szukam rozwiazania tego problemu i na razie nigdzie nie znalazlem.
pozdrawiam
Andrzej

0

ja mam ort! rozwiazanie jak ktoś jeszcze nie ma :D
osk.exe nie jest aktwne tylko jak sie je przesuwa :) a co do sprawdzania ;) funkcja jak myszka znajduje sie nad guzikiem ustawia zmienna lokalna na wartość guzika kiedy okno dostaje fokus ort!<ort> przechwycić komunikat i go usunać a co do guzika w momencie klikniecia zamienić komunikat na key_down i key_up sprawa tylko klaw funkcyjnymi :D
jak napisze umieszcze w dziale gotowce :D własnie próbuje to zrobić:D
pozdro</ort>

1 użytkowników online, w tym zalogowanych: 0, gości: 1