Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

keybd_event nie wypisuje literki "ł"

Ostatnio zmodyfikowano 2013-08-22 22:06
Autor Wiadomość
McAffey
Temat założony przez niniejszego użytkownika
keybd_event nie wypisuje literki "ł"
» 2013-08-22 17:58:50
Witam, głowię się i głowię, i nie potrafię zasymulować wypisywania literki "ł". Z każdą inną literką nie ma problemu, np. gdy chcę napisać "ą" piszę po prostu :

C/C++
keybd_event( VK_CONTROL, 0, 0, 0 );
keybd_event( VK_MENU, 0, 0, 0 );
keybd_event( VkKeyScan( 'a' ), 0, 0, 0 );
keybd_event( VkKeyScan( 'a' ), 0, KEYEVENTF_KEYUP, 0 );
keybd_event( VK_MENU, 0, KEYEVENTF_KEYUP, 0 );
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 );

a gdy zrobię tak samo, tylko jako char daję 'l' to nie dzieje się nic. Nie wiem dlaczego, ale nie potrafię tego obejść, próbowałem nawet zasymulować wciśnięcie CTRL+Shift, a potem pisać średnik, ale też się nie udało. Nie sprawdzałem czy na innym komputerze działa, tylko na Windows 7. Macie może jakiś pomysł jak to obejść, żeby napisać literkę "ł" ? Z góry dzięki :)
P-90774
xevuel
» 2013-08-22 18:21:41
Note  This function has been superseded. Use SendInput instead.

Jeśli nie pomoże, możesz ewentualnie wysłać do aktywnego okna odpowiednie komunikaty.
P-90775
McAffey
Temat założony przez niniejszego użytkownika
» 2013-08-22 20:18:34
W przypadku SendInput jest tak samo, z każdym polskim znakiem się udaje tylko nie z "ł". A wysyłanie komunikatów coś mi nie wychodzi, próbuję na notepadzie i nie działa, zerknąłbyś ?

C/C++
SendMessage( FindWindow( "Notepad++", NULL ), WM_KEYDOWN, VK_CONTROL, 0 );
SendMessage( FindWindow( "Notepad++", NULL ), WM_KEYDOWN, VK_MENU, 0 );
SendMessage( FindWindow( "Notepad++", NULL ), WM_KEYDOWN, 'A', 0 );
SendMessage( FindWindow( "Notepad++", NULL ), WM_KEYUP, 'A', 0 );
SendMessage( FindWindow( "Notepad++", NULL ), WM_KEYUP, VK_MENU, 0 );
SendMessage( FindWindow( "Notepad++", NULL ), WM_KEYUP, VK_CONTROL, 0 );
P-90782
xevuel
» 2013-08-22 21:11:09
Pisząc aktywne okno miałem na myśli kontrolkę w aktywnym oknie, która przetworzy komunikat. Sorry za wprowadzenie w błąd. W przypadku różnych programów może być z tym ciężko, bo musiałbyś znaleźć tą kontrolkę. Może być ona też rysowana własnoręcznie. Także ta opcja w ostateczności, a wysłać należy (zazwyczaj) WM_CHAR.

Sprawdziłem pierwszy kod - u mnie 'ł' jest prawidłowo wyświetlane.

//edit: Poprawka. 'ł' jest wyświetlane, ale w systemowym notepadzie. W "wersji zainkrementowanej" faktycznie nie działa. OO Writer również wyświetla, więc wygląda to na jakiś dziwny bug Notepad++ -only.
P-90785
McAffey
Temat założony przez niniejszego użytkownika
» 2013-08-22 22:06:48
//edit: Poprawka. 'ł' jest wyświetlane, ale w systemowym notepadzie. W "wersji zainkrementowanej" faktycznie nie działa. OO Writer również wyświetla, więc wygląda to na jakiś dziwny bug Notepad++ -only.

No wolne żarty :D Faktycznie, masz rację :P Głowię się nad tym i głowię, a że prawie zawsze mam otwartego na drugim monitorze notepada++, to do głowy mi nie przyszło żeby testować gdzieś indziej :P

Po problemie, dzięki :)
P-90787
« 1 »
  Strona 1 z 1