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:
-
De huidige directory.
-
De windows directory (de directory met WIN.COM); de GetWindowsDirectory functie haalt de pad van de directory.
-
De Windows systeem directory (de directory die systeembestanden bevat, zoals gdi.exe); de GetSystemDirectory functie haalt de pad van de directory.
-
De directory die het uitvoerbare bestand voor de huidige taak bevat; de GetModuleFileName functie haalt de pad van de directory.
-
De directory's die als een lijst in de PATH omgevingsvariabele staan.
-
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.