by Richard Russell, October 2007
In Windows, some common ways of opening a file (for example a document or image file) are as follows:
You may want your own BBC BASIC program to be able to open a file in one of these ways. That is easily achieved because in each case what happens is that the selected application is executed with the path and name to the selected file in the command line. So all you need to do in your program is extract the contents of the @cmd$ system variable and use that as the path/name of the file to be opened.
There is just one minor complication. If the path or name of the file contains spaces, Windows encloses the entire @cmd$ string in quotation marks (“). Your program must remove those before the the path/filename is suitable for use.
Here is a very simple program which displays a BMP file:
bmpfile$ = @cmd$ IF ASC(bmpfile$)=34 bmpfile$=EVAL(bmpfile$) OSCLI "DISPLAY """+bmpfile$+""""
The first line copies the contents of @cmd$ (since you must not attempt to modify the contents of that variable). The second line examines the path/filename and if it is enclosed in quotation marks they are stripped off. The third line displays the image; note the addition of quotation marks. It may seem strange to strip off the quotes and then put them back again, but that ensures that the contents of bmpfile$ are in a suitable form whenever a valid path/filename is needed (for example in an OPENIN function).
Of course this only works when you have 'compiled' your program to a standalone executable, since only then can your program be executed by Windows in this way. When testing your program in the Interactive Development Environment @cmd$ will contain an empty string. You may therefore wish to add to your program so that in these circumstances it requests the filename, for example:
bmpfile$ = @cmd$ IF ASC(bmpfile$)=34 bmpfile$=EVAL(bmpfile$) IF bmpfile$ = "" THEN bmpfile$ = FNrequestfile OSCLI "DISPLAY """+bmpfile$+""""
Here FNrequestfile is assumed to prompt the user to enter (or select) a filename, perhaps by means of an INPUT statement or by using the Windows GetOpenFileName dialogue.
To add your compiled application to the Send To list you need to place a shortcut there as follows:
To make your application the default viewer for a specific file type you will need to edit the file associations. You can do that as follows: