Also ich kann SirThornberry nicht zustimmen!
Wäre die Funktion überholt und flöge sie bald raus, wäre der Status "deprecated" und nicht der den du oben beschrieben hast. "Superseded" bedeutet ja noch nichtmal ersetzt ("replaced") sondern nur, daß es eine Funktion gibt, die noch mehr kann als die einzelne Funktion keybd_event() welche du gerade benutzt. In diesem Fall bedeutet es, daß du die bei keybd_event() vorhandene Funktionalität und noch mehr (nämlich Mauseingaben und sogar mehrere Eingaben auf einmal) mit SendInput() erreichen kannst.
Wenn du dir
SendInput nun richtig angeschaut hättest, hättest du deine Frage in Sachen Umlaute schon beantwortet gefunden (unter
KEYBDINPUT):
Zitat:
wVk
Specifies a virtual-key code. The code must be a value in the range 1 to 254. The Winuser.h header file provides macro definitions (VK_*) for each value. If the dwFlags member specifies KEYEVENTF_UNICODE, wVk must be 0.
wScan
Specifies a hardware scan code for the key. If dwFlags specifies KEYEVENTF_UNICODE, wScan specifies a
Unicode character which is to be sent to the foreground application.
... denn mit
keybd_event kannst du keine
Unicode-Zeichen erzeugen (außer die sind in die aktuelle Codepage gemappt), bei
SendInput wird diese Funktionalität mitgeliefert.
WinExec wäre ein Beispiel für den Status "deprecated" (Zitat:
Note This function is provided only for compatibility with 16-bit Windows.)! So ziemlich alle Nur-Win16-Funktionen zählen dazu, auch wenn bei ihnen inzwischen nicht mehr "deprecated" steht, was IMO zwischenzeitlich mal der Fall war ...
Mehr:
SHChangeNotification_Lock,
SHGetShellStyleHInstance ...