Date: 05-20-97  22:57
From: Hans Lunsing
Subj: Windows & QBasic

Hello Robin

On Sunday, 18 May 1997 12:24:28, you wrote to all:

 RK> Complex question: Does anyone out there know if there is any
 RK> way to get access to any Windows processes directly from a dos
 RK> program? Lots come to mind, but the first one I can think of is the
 RK> clipboard?

 RK> It would be nice to use the clipboard in one step instead of
 RK> losing your full screen everytime you copy or paste. Lots more
 RK> comes to mind to a dedicated mouse hater.

The clipboard can be accessed through function &h17 of de multiplex
interrupt (&h2F). Here are its subfunctions (taken from Ralf Brown's
interrupt list):

INT 2F 1700 - MS Windows "WINOLDAP" - IDENTIFY WinOldAp VERSION

Inp.:
        AX = 1700h
Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
        AX <> 1700h
            AL = WINOLDAP major version
            AH = WINOLDAP minor version
Program: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
          "old" (character-mode) application access to Dynamic Data Exchange,
          menus, and the Windows clipboard.
Note:        this installation check DOES NOT follow the format used by other
          software of returning AL=FFh

INT 2F 1701 - MS Windows "WINOLDAP" - OPEN CLIPBOARD

Inp.:
        AX = 1701h
Return: AX = status
            nonzero success
            0000h   clipboard is already open
SeeAlso: AX=1700h,AX=1702h,AX=1703h,AX=1704h,INT 16/AX=CB00h

INT 2F 1702 - MS Windows "WINOLDAP" - EMPTY CLIPBOARD

Inp.:
        AX = 1702h
Return: AX = status
            nonzero clipboard has been emptied
            0000h   failure

INT 2F 1703 - MS Windows "WINOLDAP" - SET CLIPBOARD DATA

Inp.:
        AX = 1703h
        DX = clipboard format supported by WinOldAp (see #2005)
        ES:BX -> data (see #2006,#2007)
        SI:CX = size of data
Return: AX = status
            nonzero data copied into the Clipboard
            0000h   failure

INT 2F 1704 - MS Windows "WINOLDAP" - GET CLIPBOARD DATA SIZE

Inp.:
        AX = 1704h
        DX = clipboard format supported by WinOldAp (see #2005)
Return: DX:AX = size of data in bytes, including any headers
                0000h:0000h if no data in this format in the Clipboard
Note:        Windows reportedly rounds up the size of the data to a multiple of
32
          bytes

INT 2F 1705 - MS Windows "WINOLDAP" - GET CLIPBOARD DATA

Inp.:
        AX = 1705h
        DX = clipboard format supported by WinOldAp (see #2005)
        ES:BX -> buffer
Return: AX = status
            nonzero success
            0000h   error, or no data in this format in Clipboard

INT 2F 1708 - MS Windows "WINOLDAP" - CloseClipboard

Inp.:
        AX = 1708h
Return: AX = status
            0000h failure
            nonzero success

INT 2F 1709 - MS Windows "WINOLDAP" - COMPACT CLIPBOARD

Inp.:
        AX = 1709h
        SI:CX = desired size in bytes
Return: DX:AX = number of bytes in largest block of free memory
Note:        WinOldAp is responsible for including the size of any headers

INT 2F 170A - MS Windows "WINOLDAP" - GET DEVICE CAPABILITIES

Inp.:
        AX = 170Ah
        DX = GDI information index (see #2008)
Return: AX = integer value of the desired item
              (see #2009,#2010,#2011,#2012,#2013,#2014,#2015)
Note:        This function returns the device-capability bits for the given
display


DOS applications can cooperate with Windows through function &h16 of de
multiplex interrupt. See Ralf Brown's interrupt list for details.



Friendly greeting you,
Hans Lunsing,           Fido     : 2:281/607.214
                        Internet : jlunsing@doge.nl
