c - Tastaturkrog: Skift nøglekode

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg krog tastaturet af en proces. Nu skal jeg ændre den centrale besked, der sendes til processen.


For eksempel: fra små til store og modsatte.


Hvordan kan jeg gøre dette?

Bedste reference


Under forudsætning af din funktion prototype er som følger:
LRESULT CALLBACK WndProc( HWND hWnd, UING uMsg, WPARAM wParam, LPARAM lParam ),
Værdien af ​​dit brev er inde i wParam. Hvis du antager ren ASCII-tastaturindgang, kan du bruge følgende:


short newKeyCode = (char)wParam;
if (uMsg == WM\_CHAR || uMsg == WM\_SYSCHAR)
if (newKeyCode - 'a' < 26) {
  newKeyCode = newKeyCode - 'a' + 'A';
} else {
  newKeyCode = newKeyCode - 'A' + 'a';
}


Selvfølgelig, hvis du er på et Windows-system ud over 2000 (og dermed kører på NT-arkitekturen), vil wParam være en Unicode-værdi (og UTF-16, som det er Windows-konventionen), så dit program må muligvis fjollet med dette for at få det til en god tilstand, men ellers bør det være alt hvad du behøver.