You can make screensavers with DB, but it's not that simple...
First, you have to rename your ".EXE" to ".SCR" (that's the easy part).
Second, in your code, you have to parse the command line which Windows has run your prog with. In DB, this command line is conveniently given by the command "CL$()". There's four possible values:
"/s" : Windows wants to execute the screensaver
"/c" : Windows wants the screensaver's setting dialog to be shown
"/a" : Windows wants the screensaver's password change dialog to be shown
"/p" : Windows wants to execute the screensaver in the little preview window
Thus, all you have to do is to implement something like :
"if CL$()='/s' then... [screensaver]
if CL$()='/c' then... [allow user to configure the screensaver]
if CL$()='/s' then... [allow user to change his password]
if CL$()='/p' then... [run the screensaver in the preview window]"
As far as I know, the latter case (preview) can't be done with DB alone. In the command line, Windows gives the pointer to the small preview window (looks like "/p:6214", where "6214" is the pointer), and DB can't use this pointer. (with a DLL, perhaps... This is beyond my knowledge, I'm quite a newbie...)
Third, you have to prevent your prog to be executed more than once at a time. Sounds strange, but Windows doesn't fire the screensavers only once; it fires it repeatedly, again and again (I don't
understand why...). So you have to store a flag somewhere (in the registry, for example) and test it at the very beginning of your code; if it's positioned, an instance of the screensaver is already running and you can exit. And don't forget to delete the flag before exiting the first instance of the saver, of course...
Well... It looks a bit complicated, but it's not so hard; DarkBasic is very easy to use.
Ideas: memories of things which did not occur yet...