Bestanden en links openen met ShellExecute in AutoIt

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 noemt
  • ShellExecute = 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:

  • filename
  • parameters
  • workingdir
  • verb
  • showflag

Niet alles hoeft altijd mee. Vaak is alleen het bestand of de link al genoeg.

Hier is de simpele gedachte:

  • filename: wat je wilt openen
  • parameters: extra stukjes voor het programma
  • workingdir: de map waar het programma in moet werken
  • verb: welke actie je wilt, zoals openen
  • showflag: hoe het venster moet worden getoond

Niet elk script heeft al deze stukken nodig. Vaak hou je het klein.

Wat doet elk deel?

DeelWat het doetVoorbeeldidee
filenameHet bestand, de map of de linktest.pdf, https://example.com
parametersExtra inhoud voor het doelprogrammaextra argumenten
workingdirDe werkmapeen map op schijf
verbDe actie die wordt gebruiktopenen
showflagHoe het venster verschijntzichtbaar 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.txt is het bestand
  • de lege tekst "" betekent dat er geen extra parameters zijn
  • C:Voorbeeld is 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 Run start je bijvoorbeeld een programma rechtstreeks
  • met ShellExecute open 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:

  1. open een tekstbestand met ShellExecute
  2. 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.