[VB] Exe starten mbv ShellExecute onder XP

Pagina: 1
Acties:

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Hey,

ik wil een exe bestand starten vanuit VB
Ik heb ff gesearched op GoT en Google en daar vond ik dat ik eerste ShellExecute (of ShellExecuteA) moet defineren.
Dus heb ik....

code:
1
2
3
4
5
6
7
8
Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpdirectory As String, _
ByVal nShowCmd As Long) As Long


...bovenin de Formcode gezet, onder General Declarations.

En dan ;

code:
1
2
3
Private Sub Command1_Click()
ShellExecuteA ("C:\fun\plaatjes.exe")
End Sub


een eindje verderop.

Dan zou je denken dat ie het doet, maar hij doet het dus niet.
Hij geeft dan;
Sub or Function not defined.

Voer ik in; ShellExecute ("blabla") (zonder A dus) geeft ie aan;
Compile error: Argument not optional.

Ik kom er dus niet meer uit... wie heeft hier het antwoord op?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

pEeDy16 schreef op 06 April 2003 @ 22:29:
code:
1
2
3
Private Sub Command1_Click()
ShellExecuteA ("C:\fun\plaatjes.exe")
End Sub
Als je het ding met 6 parameters definieert is het wellicht een idee om die ook alle 6 in te vullen.

[ Voor 73% gewijzigd door curry684 op 06-04-2003 22:36 . Reden: Misklik ]

Professionele website nodig?


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Oh kijk, ik wist dus niet dat dat niet kon.

Maar ik heb het nu dus geprobeerd (alle parameters weghalen) en nu geeft ie geen fout aan, maar sluit hij mijn Form dus gewoon af zonder plaatjes.exe op te starten.... nog raarder dus...

Verwijderd

Je kan ook gewoon shell gebruiken, bijv.
code:
1
2
dim dShell as Double
dShell = Shell("cmd.exe", vbNormal)

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

Afgezien van dat alle parameters gevult moeten zijn, is het volgens mij ook niet de Alias maar gewoon de functienaam die je moet gebruiken. ShellExecute i.p.v ShellExecuteA dus :)

Maar goed. Zie Remark, da's 10 keer makkelijker ;)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • markvt
  • Registratie: Maart 2001
  • Laatst online: 22-08 14:34

markvt

Peppi Cola

shellexecute gebruik je om bestanden met de daaraan gekoppelde programma's te openen
shell gebruik je voor applicaties.

Shell "exefile.exe", vbHide <- hidden mode
Shell "exefile.exe" <- niet hidden mode.

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

pEeDy16 schreef op 06 april 2003 @ 22:40:
Maar ik heb het nu dus geprobeerd (alle parameters weghalen) en nu geeft ie geen fout aan, maar sluit hij mijn Form dus gewoon af zonder plaatjes.exe op te starten.... nog raarder dus...
Daar is niets vreemds aan als je een API verkeerd aanroept :)

Wat je doet is een functie die 6 parameters verwacht, er maar 1 meegeven. In VB is dat niet erg, die vangt dat allemaal voor je op, maar bij API dus wel. Daar moet je de C regels hanteren en dat is een functie precies zo aanroepen als hij gedefinieerd is. Wat je met die declare sub doet is namelijk NIET de functie maken, maar je geeft alleen aan in welke dll die functie zit en welke parameters hij heeft. Die declaratie MOET hetzelfde blijven, de functie verwacht immers 6 parameters, als jij dan besluit er maar 1 mee te geven, is het helemaal niet raar dat het niet werkt.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

Overigens kan je ShellExecute wel gewoon gebruiken, ongeveer dit:

code:
1
    ShellExecute 0, "OPEN", "C:\fun\plaatjes.exe", 0, App.path, 1


(Maar Shell lijkt me idd simpeler :))

[ Voor 19% gewijzigd door Sponge op 07-04-2003 09:12 ]


Verwijderd

Shell schijnt niet altijd even goed te werken... Dus is ShellExecute aan te raden.

Maar moet je 'm niet als Public (ipv. Private) declareren :? Of staat ie in dezelfde module?
Maar parameters verwijderen uit de declaratie lijkt me geen goed plan :)

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Joechei! De reply van Remark was verreweg het simpelste jah!
Al dat gedoe met die definities was ook niet zo handig :P
Thnx allemaal!
Pagina: 1