Как использовать функции SendMessage / PostMessage? - PullRequest
1 голос
/ 02 февраля 2012

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

<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 ]

1 голос
/ 03 февраля 2012

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

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

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

0 голосов
/ 02 февраля 2012

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

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

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

...