I got it to work just the other day. This works, so give it a shot. To do it, you will need Windows 98, or a similiar MS operating system that has something called "Task Scheduler" installed. I don't know if Win95 has it, and Win98 is the only OS that I have, so it might not work on other OSes.
First, a sample program.
RANDOMIZE TIMER
SCREEN 13
shape$ = "r2d2l2u2"
DO
xpos = INT(RND * 319)
ypos = INT(RND * 199)
clr = INT(RND * 256)
kbd$ = INKEY$
IF kbd$ <> "" THEN EXIT DO
DRAW "bm" + LTRIM$(RTRIM$(STR$(xpos))) + "," + LTRIM$(RTRIM$(STR$(ypos))) + "c" + LTRIM$(RTRIM$(STR$(clr))) + shape$
LOOP
SCREEN 0
END
Simply put, that will draw random little squares in various colors all over the screen. Now, how to make this into a screen saver? Well, it doesn't require you to have qbasic 4.5, or even a compilier, just plain old qbasic (or the 4.5/7 vers will work).
I'm going to show you how to transform this into a screen saver by using just qbasic, or using a compiled version of your source code.
First, compiled version:
Build program, compile to .exe, make sure "Stand Alone" is selected. Take note of the .exe file's location. Exit out of qbasic, and goto the .exe file. I'm assuming the saver that you've made is some sort of graphical saver, so i'm going to use the opts that I used for the example prog above. Right click on the .exe file, then select properties.
in the program tab, select maximized from the RUN drop down box, and check the box marked 'closed on exit.' Now, if your saver uses some kind of data files, fill in the working directory to match where these data files are located. If not, you can leave it blank. Go onto the screen tab, click the radio button "full screen", and on the misc tab, uncheck the "Allow Screensaver" checkbox (we don't want your work of art getting bumped out of the picture!). There, basic settings done. if you're a tweak monkey, keep going until it suits your needs. After all is said and done, click the OK button to save the .pif file.
Now, we start up task scheduler. Double click on "Add Scheduled Task". Click Next. The program will examine your start menu for programs that are on your computer. Unless you are really wierd about your file system, your .exe file won't be on that list. Click browse, then select the .pif file we just made in the step above, NOT the .exe file. That selected, click open, then click the 'daily' radio button. (We'll change this in a minute.) Click next, then next again, these settings don't matter. you should now be at a success screen, stating 'you have successfully scheduled the following task:' . There? Good. Check the "Open advanced properties" checkbox, then finish.
Now, we are in the advanced properties for this task. Click the schedule tab, then under the "Schedule Task:" dropbox, select "When Idle" (it's at the bottom of the list). Here's your screen saver delay in that next box, the arrowed one. default is 10 minutes. change to suit your needs. Click OK. If all went well, x minutes after your computer being idle, your qbasic program will kick in, and you will have a glorious screen saver that you made, without all that complicated WinAPI garbage. LONG LIVE QB BABY! YEAH!
Second, nothing but qbasic 1.0/1.1.
Build your file as normal, but this time, right click your qbasic.exe file, then select properties. Click OK. Another PIF file created. Edit it by going to properties. In the command line text input box, change it from whatever it is to the full path to your qbasic.exe file, like C:\Windows\Command\Qbasic.exe, and add a space after the .exe part, then some parameters. Like, /RUN filename.bas - Where filename.bas is the full path and filename to the program you saved. If your program uses datafiles, change the Working text box to match where those files are at. If not, leave it blank, or if it's got something, just don't mess with it. Under screen tab, select full screen radio button, and under misc tab, uncheck allow screen saver. Oh yes, go back to the program tab, and make sure "maxmized" is your run window, and the "close after exit" checkbox is checked. Now, before you go into task scheduler, if you don't want to exit from qbasic, instead of END at the end of your program, replace it with SYSTEM - System will drop you back down to dos, and windows will see the 'exit' from qbasic, and shutdown the window. good to go. create the schedule, according to the .PIF file created, and not qbasic.exe, then select When Idle, and set your minutes.
That covers it, I think. If not, I hope you have a general enough idea to replace window's poor choice of screen savers with your work of art. Enjoy the tip.
PS Could I have some feedback on this? If you think it's useful or not? I spent a long time trying to find it, and a simple thanks would let me know my efforts were not in vain.
AdamC