Hello Eikon,
I am netmaestro and I'm pleased to meet you. I'm very pleased to see this work of yours as I am finding it quite instructive. I am replying because I recently wrote a dll in Delphi for gamemaker programmers to use which serves this purpose. I also ran into the "refusing to quit" behavior and solved it quite effectively by making a call to the win32 dll in every step and returning true or false depending upon what IsWindowVisible(<PreviewWnd>) returns. If it comes back false, your saver should leap upon its sword without further ado.
Incorporate that and I'm pretty sure most of your problems are solved. btw, if you are into gamemaker at all you can find my dll with a sample program and docs at http://www.networkmaestro.com/gm_sslib2.zip
I am netmaestro and I'm pleased to meet you. I'm very pleased to see this work of yours as I am finding it quite instructive. I am replying because I recently wrote a dll in Delphi for gamemaker programmers to use which serves this purpose. I also ran into the "refusing to quit" behavior and solved it quite effectively by making a call to the win32 dll in every step and returning true or false depending upon what IsWindowVisible(<PreviewWnd>) returns. If it comes back false, your saver should leap upon its sword without further ado.
Incorporate that and I'm pretty sure most of your problems are solved. btw, if you are into gamemaker at all you can find my dll with a sample program and docs at http://www.networkmaestro.com/gm_sslib2.zip