ShellExecute

Deze functie voert een applicatie uit die gekoppeld is aan een opgegeven bestandsextentie. Als bijvoorbeeld de standaard applicatie voor bestanden met de extentie "TXT" het Windows Kladblok is, zal de aanroep het kladblok openen met het opgegeven bestand. Wanneer een programma een andere applicatie start, zal deze wachten totdat de applicatie gesloten wordt.

Zie WaitForSingleObject.

showWindowFlag = _SW_SHOWNORMAL

lpszOp$ = "open"            'kies "open" of "print" of "explore"

lpszFile$ = "readme.txt"    'bestandsnaam die geladen moet worden

lpszDir$ = DefaultDir$      'standaard directory

lpszParams$ = ""            'maak deze null

calldll #shell32, "ShellExecuteA", _
    hWin as ulong, _            ' het ouder venster handle
    lpszOp$ as ptr, _           ' "open" of "print"
    lpszFile$ as ptr, _         ' bestand om te openen of af te drukken
    lpszParams$ as ptr, _       ' null
    lpszDir$ as ptr, _          ' directory
    showWindowFlag as long, _   ' modus om applicatie te starten
    result as long              ' resulteert de instantie handle van de
                                ' applicatie die was gestart          

Hoe de pad en de bestandsnaam gescheiden wordt vanuit een filedialog aanroep:

filedialog "Kies bestand...", "*.*", file$

index = len(file$)
length = len(file$)        'maak de lengte klaar voor de while/wend lus

while mid$(file$, index, 1) <> "\"    'zolang geen backslash
    index = index-1        'kijk verder voor de meest rechtse backslash
wend

'de bestandsnaam zonder station/pad informatie

filename$ = right$(file$, length - index)   
directory$ = left$(file$, index)

Mogelijke showWindowFlags:

_SW_HIDE

Verbergt het venster en zorgt voor het activeren van een ander venster.

_SW_MINIMIZE

Minimaliseert het venster en activeert het top-level venster in de systeemlijst.

_SW_RESTORE

Activeert en toont een venster. Als het venster geminimaliseerd of gemaximaliseerd is, zal Windows het naar de originele grootte en positie herstellen (zelfde als _SW_SHOWNORMAL).

_SW_SHOW

Activeert een venster en toont het in zijn huidige grootte en positie.

_SW_SHOWMAXIMIZED

Activeert een venster en toont het als een gemaximaliseerd venster.

_SW_SHOWMINIMIZED

Activeert een venster en toont het als een icoon.

_SW_SHOWMINNOACTIVE

Toont een venster als een icoon. Het venster dat momenteel actief is blijft actief.

_SW_SHOWNA

Toont het venster in zijn huidige staat. Het venster dat momenteel actief is blijft actief.

_SW_SHOWNOACTIVATE

Toont een venster in zijn meest recente grootte en positie. Het venster dat momenteel actief is blijft actief.

_SW_SHOWNORMAL

Activeert en toont een venster. Als het venster geminimaliseerd of gemaximaliseerd is, zal Windows het naar de originele grootte en positie herstellen (zelfde als _SW_RESTORE).

Sleep

De Sleep functie schorst de uitvoering van de huidige thread voor een opgegeven interval. De waarde is gegeven in milliseconden. De functie resulteert geen waarde.

calldll #kernel32, "Sleep", _
    value as long, _    'milliseconden om te pauzeren
    r as void

WaitForSingleObject

De WaitForSingleObject functie resulteert zodra één van de twee plaatsvindt: Het opgegeven object is in de gesignaleerde status of de time-outinterval is verstreken. Het vereist een handle naar het uitvoeringsproces, dat verkregen kan worden met de ShellExecuteExA functie. Die functie vereist een SHELLEXECUTEINFO structuur. Gebruik deze methode om een externe toepassing te starten binnen uw programma en wacht tot het voltooid is voordat u uw programma hervat.

filedialog "Open", "*.txt", file$
if file$ = "" then end

SEEMASKNOCLOSEPROCESS = 64    '0x40

struct s, _
    cbSize as ulong, fMask as ulong, hwnd as ulong, _
    lpVerb$ as ptr, lpFile$ as ptr, lpParameters$ as ptr, _
    lpDirectory$ as ptr, nShow as long, hInstApp as ulong, _
    lpIDList as long, lpClass as long, hKeyClass as ulong, _
    dwHotKey as ulong, hIcon as ulong, hProcess as ulong

s.cbSize.struct = len(s.struct)
s.fMask.struct = SEEMASKNOCLOSEPROCESS
s.hwnd.struct = 0
s.lpVerb$.struct = "Open"
s.lpFile$.struct = file$
s.lpParameters$.struct = ""
s.lpDirectory$.struct = DefaultDir$
s.nShow.struct = _SW_RESTORE

calldll #shell32, "ShellExecuteExA", s as struct, r as long

if r <> 0 then
    hProcess = s.hProcess.struct
else
    print "Fout."
    end
end if

waitResult = -1
while waitResult <> 0
    calldll #kernel32, "WaitForSingleObject", _
        hProcess as long, 0 as long, waitResult as long
wend
print "Uitvoeringsproces is beëindigd"
end

WinExec

Deze functie voert een ander programma uit binnen een applicatie. Als de tekenreeks een applicatie bevat zonder de pad, zoekt Windows de directory's af in onderstaande volgorde:

  1. De huidige directory.

  2. De windows directory (de directory met WIN.COM); de GetWindowsDirectory functie haalt de pad van de directory.

  3. De Windows systeem directory (de directory die systeembestanden bevat, zoals gdi.exe); de GetSystemDirectory functie haalt de pad van de directory.

  4. De directory die het uitvoerbare bestand voor de huidige taak bevat; de GetModuleFileName functie haalt de pad van de directory.

  5. De directory's die als een lijst in de PATH omgevingsvariabele staan.

  6. De directory's toegewezen in een netwerk.

calldll #kernel32, "WinExec", _
    winFile$ as ptr, _        'bestand om uit te voeren
    _SW_SHOWNA as long, _     'zie ShellExecute voor de waarden van de vlag
    result as long            'succes als >= 31

In de volgende Bulletin komen de API's over het gebruik van de INI bestanden, het Windows Register en het klembord.