Author Topic: postmessage  (Read 1714 times)

0 Members and 1 Guest are viewing this topic.

pifi

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
postmessage
« on: October 30, 2019, 02:45:05 PM »
Подскажите пожалуйста как через " postmessage "  прокрутку колесика мышки осуществить.





Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: postmessage
« Reply #1 on: October 31, 2019, 12:48:51 PM »
Не нужно колесо крутить, дави стрелки.

Можешь и через WM_VSCROLL, но тоже не везде работает. В Notepad++ работает, в мозиле пока не получилось. Может не тому окну шлю.

Сообщение WM_VSCROLL = 0x0115

Значения wParam
SB_LINEUP        = 0
SB_LINEDOWN      = 1
SB_PAGEUP        = 2
SB_PAGEDOWN      = 3
SB_THUMBPOSITION = 4
SB_THUMBTRACK    = 5
SB_TOP           = 6
SB_BOTTOM        = 7
SB_ENDSCROLL     = 8

lParam = 0 или хендл полосы прокрутки (что у нас, естественно нет).

Вниз на 1 линию
Code: (clickermann) [Select]
$hwnd = 67826
$WM_VSCROLL = 0x0115

POSTMESSAGE($hwnd, $WM_VSCROLL, 1, 0)
Вниз на страницу
Code: (clickermann) [Select]
POSTMESSAGE($hwnd, $WM_VSCROLL, 3, 0)В самый низ в конец
Code: (clickermann) [Select]
POSTMESSAGE($hwnd, $WM_VSCROLL, 7, 0)


pifi

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: postmessage
« Reply #2 on: October 31, 2019, 05:07:13 PM »
Большое спасибо !
в хроме, блокнотах и.т.д работает, а вот в мозиле тоже нет.

хотя если вот так:

Code: (clickermann) [Select]
POSTMESSAGE($hwnd, $WM_VSCROLL, 1,1)
то работает и в мозиле.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: postmessage
« Reply #3 on: November 01, 2019, 08:46:41 AM »
Я так тоже пробовал, не работало.
На самом деле это сообщение шлёт полоса прокрутки родительскому окну.
В мануале написано:
lParam
If the message is sent by a scroll bar control, this parameter is the handle to the scroll bar control. If the message is sent by a standard scroll bar, this parameter is NULL.

"Если сообщение отправлено элементом управления полосой прокрутки, этот параметр является дескриптором элемента управления полосы прокрутки. Если сообщение отправляется с помощью стандартной полосы прокрутки, этот параметр имеет значение NULL."
Нам от этого ни холодно не жарко. Если полоса прокрутки стандартная - ставим 0 (хотя это не NULL, а как поставить NULL ХЗ). Если нестандартная, у нас всё равно нет дискриптора.