a) have been dreaming about for a long time.
I have been dreaming about finishing school for a long time. I have been dreaming about becoming a university student (for a long time). My parents have been dreaming about buying a summer cottage (for a long time)
b) have been doing for a long time
I have been studying English for a long time. I have been reading this book for two weeks (или for a long time, как хотите) My parents have been working at the factory for many years (или for a long time)