Я действительно пытаюсь понять, как работает PostMessage. Я из фона веб-разработчиков, поэтому все это очень чуждо мне. Я пытаюсь отправить один «a» charcter в стороннее приложение. Я использовал spy ++ для получения PostMessage
(параметры ниже), но я не могу понять, как использовать Lparam и Wparam.Как использовать эти PostMessage Lparam и Wparam?
Это то, что у меня есть до сих пор. Я предполагаю, что 00000041 (и остальные из spy ++) на самом деле шестнадцатеричный, и я прав в том, что он помещает 0x в его шрифт?
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
const int WM_KEYDOWN = 0x100;
const int WM_KEYUP = 0x101;
const Int32 WM_CHAR = 0x0102;
PostMessage(WindowHandle, WM_KEYDOWN, (IntPtr)(0x00000041), (IntPtr)(0x001E0001));
PostMessage(WindowHandle, WM_CHAR, (IntPtr)(0x00000061), (IntPtr)(0x001E0001));
PostMessage(WindowHandle, WM_KEYUP, (IntPtr)(0x00000041), (IntPtr)(0xC01E0001));
Это дает мне алгоритмическое переполнение ...
И прежде чем кто-нибудь говорит мне, чтобы использовать sendinput
это для окна не в фокусе :-P
извините, что из указанного. PostMessage (WindowHandle, WM_KEYUP, (IntPtr) (0x00000061), (IntPtr) (0xC01E0001)); – jamie
Является ли '0xC01E0001' намеренным,' 0xC' вместо '0x0' в последнем PostMessage? – AEonAX