Here's a short code snipplet you can use to find the item in a ListBox the mouse is over. This example will select the item if you right click on it, but you could just as well use the code in the MouseMove event instead to find the item the mouse is over, if you for example wanted to set the ToolTipText to the item text (could be good if the text is long and doesn't fit inside the listbox).
VB Code:
  1. Private Declare Function SendMessageNull _
  2.  Lib "user32.dll" Alias "SendMessageA" ( _
  3.  ByVal hwnd As Long, _
  4.  ByVal wMsg As Long, _
  5.  ByVal wParam As Long, _
  6.  ByVal lParam As Long) As Long
  7.  
  8. Private Const LB_GETITEMHEIGHT As Long = &H1A1
  9.  
  10. Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  11.     Dim nHeight As Long
  12.     Dim nItem As Long
  13.    
  14.     If Button = vbRightButton Then
  15.         'calculate which item we have clicked on
  16.         nHeight = SendMessageNull(List1.hwnd, LB_GETITEMHEIGHT, 0, 0) _
  17.          * Screen.TwipsPerPixelY
  18.         nItem = List1.TopIndex + (Y \ nHeight)
  19.         'check if we actually clicked on an item
  20.         If nItem < List1.ListCount Then
  21.             List1.ListIndex = nItem
  22.             'You could for example pop-up a menu here
  23.         End If
  24.     End If
  25. End Sub