First, pardon my currently low responsiveness. Sometimes seemingly easy things can turn out to be much more time-consuming than expected...
Of course there are differences in the API between those versions, but if that was the reason for your problems I would rather expect your program to work under XP but not 98, and not the other way 'round. I suspect a permission issue. Up to Win 98 (well, more exactly, ME) any program could practically do anything it wants. It stopped being that simple with XP (and that probably applies to 2000 too).
I'm not sure whether I really understand how makro.exe and play.exe relate. Isn't one for recording and the other one for playback?
You're right in that the Play button handler code (second snippet) doesn't access the
ofn structure, but both snippets access the
IDC_P_EDIT control's window text property and that's the "variable" they communicate over.
I think you can set up a default file name by setting up the initial text in that edit control. At the moment I have no idea how to do that in your assembly code, though. (It would be
so easy in Windows Forms...

)