Как захватить курсор аналогично vmware или remote desktop? Windows c\c++\c#
Ну во-первых внутри окна виртуальной машины (guest), курсор свой, когда курсор захватывается виртуалкой, то запоминается его позиция и он скрывается, в виртуалку же прокидываются координаты курсора, но с учетом положения окна, если реальный вышел за границу, то координата в виртуалке будет внутренняя и регулируется это самой виртуалкой (так как эмулируется хардварная мышь).

Если нельзя выпускать курсор, то есть методы, которые ограничивают перемещения мыши, вспомню, напишу.
Захват мыши — HWND SetCapture(HWND hWnd); Освобождение — BOOL ReleaseCapture(VOID); Возможно, пригодится еще HWND GetCapture(VOID); и сообщение WM_CAPTURECHANGED.