[VB6] Via shell program (spel) starten. error

Pagina: 1
Acties:

  • Mizitras
  • Registratie: September 2002
  • Niet online
Ok, heb de MSDN pagina's doorgegaan en google.
Deze was ook héél groot: [rml][ VB6] msdos programma starten[/rml]

Zelfs zo groot dat ik er niet echt aan uit kon.
Want shell = "c:\bestand.exe" lijkt me kort genoeg om al te werken.

Heb echter nog vele andere zaken(msdn) van overal geprobeerd, maar zonder veel succes.

Voorbeeld is met een vb-programma dat gewoon een exe moet starten van een spelletje. Echter het scherm van het spel blijft op een ms plakken bij het inladen.
En zegt iets over de paramaters -e -a -t voor het testen, extracten of bezielen van het archief. Terwijl als ik via Windows dit bestand gewoon dubbelklik of via START - UITVOEREN volledig ingeef me dit niet wordt aangeboden.

Dit is een vrij 'nieuw' spel, dus lijkt me geen msdos ding te zijn waarover op tweakers echter wel veel te vinden is.
Btw, het gaat over Worms Armageddon.

Waarschijnlijk is het een simpele command? Al dan niet CreateProcess(), maar dan toch niet met héél die bazaar van bovengenoemd topic hé? Dat kan toch niet :-/

"the fucking alpha cpp compiler seems to fuck up the goddam type "LPITEMIDLIST", so to work around the fucking peice of shit compiler we pass the last param as an void *instead of a LPITEMIDLIST"


Verwijderd

Zoek eens naar ShellExecute :). Dat doet precies wat je wilt.

/Edit: Bijvoorbeeld
code:
1
2
3
4
5
6
'Hiermee kan je Shell commandos geven, ook onder NT
Public 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

Public Sub ShowFile(strFileName As String)
  Call ShellExecute(0, "Open", strFileName, vbNullString, vbNullString, vbNormalFocus)
End Sub

[ Voor 100% gewijzigd door Verwijderd op 18-02-2003 21:33 ]


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
welke directory staat de exe ?

  • Mizitras
  • Registratie: September 2002
  • Niet online
Bestand:

D:\ii\worms\Wa.exe

Dat eerste doe ik bovenaan me form en daaronder vul ik dan m'n path in?

Dus zo:

---------
code:
1
2
3
4
5
6
7
8
9
10
11
Private Form_Load()
Public 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
End Sub

Private Sub Command_click()
 Call Shellexecute(0,"Open", "D:\ii\worms\Wa.exe", vbNullString, vbNullstring, vbNormalfocus)
End Sub

Public Sub ShowFile(strFileName As String)
  Call ShellExecute(0, "Open", strFileName, vbNullString, vbNullString, vbNormalFocus)
End Sub


Formpje met enkel knopje. Zo dus als bovenstaande?

[ Voor 76% gewijzigd door Mizitras op 18-02-2003 22:39 ]

"the fucking alpha cpp compiler seems to fuck up the goddam type "LPITEMIDLIST", so to work around the fucking peice of shit compiler we pass the last param as an void *instead of a LPITEMIDLIST"


Verwijderd

ik heb soms met shellexecute dat hij het niet helemaal opent of hij opent het proces maar laat vervolgens niets zien. tevens herkent hij niet dat txt bij het kladblok hoort :?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

twee kleine opmerkinkjes. ten eerste zou ik de public declare gewoon bovenaan de module doen. Onder de verschillende options die je geset hebt. Ten tweede: waar is die sub ShowFile voor?
Verder zou het op deze manier moeten werken...

My personal website


Verwijderd

OZ-Gump schreef op 19 February 2003 @ 13:18:
twee kleine opmerkinkjes. ten eerste zou ik de public declare gewoon bovenaan de module doen. Onder de verschillende options die je geset hebt. Ten tweede: waar is die sub ShowFile voor?
Verder zou het op deze manier moeten werken...
Die sub had ik er express ingezet, dat leek me wel zo makkelijk, want nu hoeft de TS alleen maar
ShowFile "x:\fsdf\bladiebla.exe"
te tikken om het werkend te krijgen...

Maar werkt het nu :?

  • Mizitras
  • Registratie: September 2002
  • Niet online
IDD, die functie voor dat enkel nog via een pathnaam op te starten is wel handig, maar bleek niet persé nodig.

Het programma start wel al op, de achtergrond wordt zwart enzo, komt ff zeggen dat ie geen geluidskaart vond (wat er ook niet is) en dan verschijnt er drietal keren dit venstertje:
http://users.skynet.be/bs138212/allerlei/WaShell.gif

Het spel handmatig of via een .lnk opstarten werkt, dus enkel nog dit heuvel en alles zou moeten gaan.

Dus, no go for the moment.

"the fucking alpha cpp compiler seems to fuck up the goddam type "LPITEMIDLIST", so to work around the fucking peice of shit compiler we pass the last param as an void *instead of a LPITEMIDLIST"


Verwijderd

je kunt toch, lijkt mij gewoon zeggen:

shell C:\Bestand.exe

misschien zonder die =, het werkt bij mij immers wel

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Die melding lijkt erop dat je een verwijzing maakt naar de opgestarte applicatie en deze vervolgens weggooit terwijl de applicatie nog draait en dat 'ie daar moeilijk over doet. Dit zou echter alleen gelden als je de handle van jouw applicatie meegeeft als eerste parameter in ShellExecute. Hier zijn twee oplossingen voor (als dit 't is dan he).

1. Je kunt de execute doen en jouw app open laten staan zolang de game draait. (Wachten op dat wat je execute dus, daar is code voor te vinden)

2. Je kunt alles netjes sluiten maar voor die tijd ervoor zorgen dat jouw applicatie geen banden meer heeft met de app die je gestart hebt. (En dus zorgen dat je 0 meegeeft als handle)

Mocht dit hem niet zijn, zou je dan eens de code willen posten zoals jij hem nu gebruikt? Dan is het voor ons makkelijker de reden van foutlopen te achterhalen...

[ Voor 9% gewijzigd door OZ-Gump op 26-02-2003 00:37 . Reden: typerdet.... damn, TYPO! ]

My personal website

Pagina: 1