You can use WM_VSCROLL, to do so you have to subclass the listbox control of the combobox. CN_VSCROLL will not work because the listbox part of the combobox is not a VCL control.
Below example is essentially from this answer of Kobik, included here for the sake of completeness.
type TForm1 = class(TForm) ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FComboListWnd: HWND; FComboListWndProc, FSaveComboListWndProc: Pointer; procedure ComboListWndProc(var Message: TMessage); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var Info: TComboBoxInfo; begin ZeroMemory(@Info, SizeOf(Info)); Info.cbSize := SizeOf(Info); GetComboBoxInfo(ComboBox1.Handle, Info); FComboListWnd := Info.hwndList; FComboListWndProc := classes.MakeObjectInstance(ComboListWndProc); FSaveComboListWndProc := Pointer(GetWindowLong(FComboListWnd, GWL_WNDPROC)); SetWindowLong(FComboListWnd, GWL_WNDPROC, Longint(FComboListWndProc)); end; procedure TForm1.FormDestroy(Sender: TObject); begin SetWindowLong(FComboListWnd, GWL_WNDPROC, Longint(FSaveComboListWndProc)); classes.FreeObjectInstance(FComboListWndProc); end; procedure TForm1.ComboListWndProc(var Message: TMessage); begin case Message.Msg of WM_VSCROLL: OutputDebugString('scrolling'); end; Message.Result := CallWindowProc(FSaveComboListWndProc, FComboListWnd, Message.Msg, Message.WParam, Message.LParam); end;