Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Global Hook nad promenom input languge-a

[es] :: .NET :: .NET Desktop razvoj :: Global Hook nad promenom input languge-a

[ Pregleda: 1182 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miksi

Član broj: 5874
Poruke: 106
*.dynamic.sbb.rs.



+24 Profil

icon Global Hook nad promenom input languge-a13.12.2010. u 15:28 - pre 161 meseci
Razvijam win c# aplikaciju koja treba da sluša promene current input language-a u svim drugim aktivnim windows aplikacijama, pa da na osnovu toga za svaku od njih startuje ili stopira slanje HotKey-a prema njima. Za sada mi radi slanje HotKey-a svim aplikacijama i sve ih primaju. Problem je sto sada moram da startujem ili stopiram proces slanja u samoj aplikaciji (napravila sam button ukuljuci-iskljuci). Želim da se to radi automatski, a ne klikom na baton, hvatanjem poruke o promeni input language-a u svakoj aplikaciji.

Hm, problem je sto sam nova u ManagedWinApi, na netu nisam nasla nista, a ne znam ni koje literature sa se dohvatim.
Dakle moje pitanje su:
1. šta da slušam kao callback funkciju da bih sigurno uhvatika dogadjaj promene jezika (GetKeyboardLayout ili LowLevelKeyboardProc ili nesto trece)
2. kakva je hook struktura u tom slucaju

Probala sam, testa radi, hook nad KeyboardEvent i hvata tipke alt-shift sa svih aplikacija, ali tu ne znam o kom se odabranom jeziku radi, pa ne pije vodu.
Takodje, ne radi ni override WndProc gde sam hvatala WM_INPUTLANGCHANGE, jer se odnosi samo na promene jezika u svim prozorima tekuceg procesa.
(Ako nisam upravu ispravite me, ali sve mi se cini da je tako).
Ako neko ima bilo kakvu idejicu, link, e-book da preporuci, hukcem bezuspesno već 4-5 dana...
 
Odgovor na temu

miksi

Član broj: 5874
Poruke: 106
*.dynamic.sbb.rs.



+24 Profil

icon Re: Global Hook nad promenom input languge-a16.12.2010. u 12:20 - pre 161 meseci
'Ajd da odgovorim sama sebi, mozda ce kome zatrebati...
1. Slušam GetKeyboardLayout aktivnog procesa
2. hvatam lowWord

moje parce koda:
Code (csharp):

        public static int findCurrentLanguage()
        {
            Int32 thread = 0;
            uint procId;
           
            IntPtr activeWindowHandle = GetForegroundWindow();
            thread = GetWindowThreadProcessId(activeWindowHandle, out procId);
            return GetLowWord((int)GetKeyboardLayout(thread));
        }
 

piece of cake :)) Sad mi sve radi!!!

[Ovu poruku je menjao Shadowed dana 16.12.2010. u 14:18 GMT+1]
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Global Hook nad promenom input languge-a16.12.2010. u 13:19 - pre 161 meseci
Hvala sto si postovala resenje iako nije uspeo niko da ti pomogne.

Dodao sam ti code tagove u post.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Global Hook nad promenom input languge-a

[ Pregleda: 1182 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.