AutoIt ShellExecute: open een bestand of website met het juiste programma
Met
ShellExecute
open je een bestand, map of website op de manier die Windows zelf kiest. Dat is handig als je niet precies weet welk programma erbij hoort. Of als je gewoon wilt dat het systeem het juiste standaardprogramma pakt.
Kort probleem
Stel, je script krijgt een PDF, een tekstbestand of een webadres. Dan kun je dat zelf proberen te starten, maar je moet dan vaak ook weten welk programma erbij hoort. Dat is niet handig.
ShellExecute lost dat simpel op. Windows kijkt naar de bestandskoppeling of het type actie en opent daarna het juiste programma. Voor een URL is dat vaak gewoon je standaardbrowser.
De kern van de oplossing
De functie heet
ShellExecute
. De bron zegt in de kern: gebruik dit als je een bestand of website wilt openen vanuit een script.
Dat is anders dan Run. Bij Run start je meestal een programma dat jij zelf opgeeft. Bij ShellExecute laat je Windows meer zelf kiezen. Dat is vaak beter als je een document, map of link wilt openen zoals een gebruiker dat ook zou doen.
Kort gezegd:
Run= start een programma of opdracht die jij noemtShellExecute= open iets met het standaardprogramma of de standaardactie
Dat verschil is klein, maar heel belangrijk.
Hoe werkt het?
De functie kan meerdere dingen aan. De bron geeft deze opbouw:
filenameparametersworkingdirverbshowflag
Niet alles hoeft altijd mee. Vaak is alleen het bestand of de link al genoeg.
Hier is de simpele gedachte:
filename: wat je wilt openenparameters: extra stukjes voor het programmaworkingdir: de map waar het programma in moet werkenverb: welke actie je wilt, zoals openenshowflag: hoe het venster moet worden getoond
Niet elk script heeft al deze stukken nodig. Vaak hou je het klein.
Wat doet elk deel?
| Deel | Wat het doet | Voorbeeldidee |
|---|---|---|
filename | Het bestand, de map of de link | test.pdf, https://example.com |
parameters | Extra inhoud voor het doelprogramma | extra argumenten |
workingdir | De werkmap | een map op schijf |
verb | De actie die wordt gebruikt | openen |
showflag | Hoe het venster verschijnt | zichtbaar of normaal |
De bron noemt deze onderdelen, maar je hoeft ze niet altijd allemaal te vullen.
Stap voor stap
Pak eerst het ding dat je wilt openen. dat kan een pad zijn, zoals een bestand op je pc. Het kan ook een website zijn.
Daarna roep je ShellExecute aan met dat pad of die link. Windows doet dan de rest. Als er een standaardprogramma aan die soort bestand hangt, dan opent dat programma.
Als je een webadres geeft, opent Windows meestal de standaardbrowser. Bij een bestand kijkt Windows naar de bestandskoppeling. Dus een PDF gaat naar de PDF-lezer, een tekstbestand naar de teksteditor, en zo verder.
Dat is fijn als je script netjes wil samenwerken met de pc van de gebruiker.
Voorbeeldcode
; Een bestand openen met het standaardprogramma
ShellExecute("C:Voorbeeldtest.pdf")
; Een website openen in de standaardbrowser
ShellExecute("https://www.autoitscript.com/")
Dit is de kortste vorm. De functie kijkt zelf wat ermee moet gebeuren.
Wil je het iets uitgebreider zien, dan kan dat ook. Hieronder staat een voorbeeld met een extra actie en een werkmap. De bron noemt deze onderdelen, dus ze mogen mee als je ze nodig hebt.
; Voorbeeld met meer onderdelen
ShellExecute("C:Voorbeeldtest.txt", "", "C:Voorbeeld", "open")
In dit voorbeeld:
C:Voorbeeldtest.txtis het bestand- de lege tekst
""betekent dat er geen extra parameters zijn C:Voorbeeldis de werkmap"open"is de actie
Niet elk deel is altijd nodig. Maar als je ze kent, kun je het gedrag beter sturen.
Verschil met Run
Dit is de plek waar veel mensen vastlopen.
Run
en
ShellExecute
lijken een beetje op elkaar, maar ze doen niet hetzelfde.
Run gebruik je als je zelf een programma of opdracht wilt starten. Dan geef je vaak het echte programma dat moet draaien.ShellExecute gebruik je als je iets wilt openen en Windows mag kiezen welk programma erbij hoort.
Een simpel voorbeeld:
- met
Runstart je bijvoorbeeld een programma rechtstreeks - met
ShellExecuteopen je een bestand zoals de gebruiker dat ook zou doen
Dus:
- wil je een tool starten? kijk eerst naar
Run - wil je een document, map of website openen? pak
ShellExecute
Dat verschil scheelt veel gedoe. Zeker als je script op meer dan één pc draait 🦫
Veelgemaakte fout
De grootste fout is denken dat
ShellExecute
hetzelfde is als
Run
. Dat is niet zo. Als je een bestand wilt openen met een bepaald programma dat niet aan dat bestand hangt, dan moet je goed kijken of
ShellExecute
wel past.
Een andere fout is een verkeerd pad geven. Dan kan Windows het bestand niet vinden. Zet dus altijd het juiste pad neer, of gebruik een link als je een website wilt openen.
Nog iets: gebruik parameters alleen als je ze echt nodig hebt. Een lege string is prima als je niets extra’s wilt meegeven.
Kleine test
Probeer in je eigen script eens twee dingen:
- open een tekstbestand met
ShellExecute - open een website met
ShellExecute
Als dat goed gaat, dan zie je meteen het voordeel. Je hoeft zelf niet te weten welk programma erbij hoort.
Je kunt ook bewust vergelijken met Run. Dan zie je snel dat shellexecute meer leunt op wat Windows al weet over dat bestandstype.
Wil je hier logisch op doorgaan? Kijk dan ook naar AutoIt en ini-bestanden: instellingen bewaren zonder gedoe.
Documentatie
Voor de bron of extra uitleg kun je ook terecht op Bestanden en links openen met ShellExecute in AutoIt.
Bevers gedachte
ShellExecute
is zo’n functie die weinig poespas nodig heeft. Je geeft door wat je wilt openen,en Windows regelt de rest. Dat maakt je script vaak net wat netter en slimmer.
De mooie les hier is simpel: kies de functie die past bij je vraag.Wil je iets openen zoals de gebruiker dat ook zou doen, dan is ShellExecute vaak de makkelijke weg.
