User Tools

Site Tools


Opening a file by dropping or clicking

by Richard Russell, October 2007

In Windows, some common ways of opening a file (for example a document or image file) are as follows:

  • Drag-and-drop the file onto the icon of the application you want to open it.
  • Right-click on the file's icon and select Open With from the menu.
  • Right-click on the file's icon and select Send To from the menu.
  • Double-click on the file's icon (it will be opened by the default viewer for that file type).

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:

  1. Click Start, and then click Run.
  2. In the Open box, type “sendto”, and then click OK.
  3. Add a destination by doing one of the following:
  • Right-drag your application into the SendTo folder, and select 'Create shortcut here'.
  • Select File… New and then click Shortcut.

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:

  1. Open My Computer or Windows Explorer.
  2. Select Tools… Folder Options… File Types.
  3. Select the appropriate extension from the list.
  4. Click the Change button.
  5. Select your application from the list.
  6. Confirm with OK.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
opening_20a_20file_20by_20dropping_20or_20clicking.txt · Last modified: 2018/04/15 11:49 by richardrussell