Как использовать функции SendMessage/PostMessage?

Я хочу отправить эти сообщения в приложение:

<00010> 00830BB8 S WM_GETDLGCODE
<00011> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS
<00012> 00830BB8 P WM_PAINT hdc:00000000
<00013> 00830BB8 S WM_ERASEBKGND hdc:DD012964
<00014> 00830BB8 R WM_ERASEBKGND fErased:True
<00015> 00830BB8 P WM_TIMER wTimerID:1 tmprc:00000000
<00016> 00830BB8 S WM_GETDLGCODE
<00017> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS
<00018> 00830BB8 S WM_GETDLGCODE
<00019> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS
<00020> 00830BB8 P WM_PAINT hdc:00000000
<00021> 00830BB8 S WM_ERASEBKGND hdc:7601294E
<00022> 00830BB8 R WM_ERASEBKGND fErased:True

Это из Spy++. Как отправить с помощью функции SendMessage/PostMessage, используя C#?

Редактировать.. Спасибо, ребята за ваши ответы! Я решил свою проблему, спасибо еще раз!

2 ответа

Решение

Я пытался отправить ключи в приложение, и я использовал Spy++, чтобы увидеть сообщения идут к этому. В частности, я хотел отправить клавиши со стрелками в приложение. Из Spy++ я увидел, что отправил вышеуказанные сообщения. После того, как я все перепробовал, я отправил в приложение следующие сообщения:

PostMessage(handle, WM_KEYDOWN, (int)Keys.Down, 0x00140001);
PostMessage(handle, WM_KEYUP, (int)Keys.Down, 0xC0140001);

Теперь работает правильно! Спасибо, парни!

Вы не можете отправлять сообщения, связанные с окраской окна. Только система может отправить их. Если вам нужно вызвать перерисовку, просто вызовите InvalidateRect.

Сообщения таймера, которые вы, вероятно, могли бы успешно опубликовать.

Сообщения WM_GETDLGCODE, которые вам, вероятно, не нужно отправлять, поскольку они не имеют побочных эффектов.

Другие вопросы по тегам