[vb6] Volgende line code pas uitvoeren als prog gestart is

Pagina: 1
Acties:

  • DPLuS
  • Registratie: April 2000
  • Niet online
Ik vroeg me het volgende af over de onderstaande code:

Visual Basic:
1
2
shell("calc.exe")
msgbox "Calc.exe started!"


Wordt de messagebox pas weergegeven als het programma COMPLEET geladen is, of opent VB op de achtergrond gewoon een shell, voert calc.exe uit en gaat meteen verder met de volgende regel code in de sub, ook al is calc.exe (of excel of photoshop of wat voor een programma dat lang laadt dan ook) nog niet COMPLEET geladen is?

[ Voor 2% gewijzigd door DPLuS op 08-01-2004 17:19 . Reden: Code aangepast nav post van MUBA ]


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Waarschijnlijk krijg je met deze code een error. Als je aanhalingstekens om "calc.exe" zet komt het wel goed.

Ik zou zeggen, probeer het uit. Maar dan niet met calc maar een zwaarder programma, zoals paint shop ofzo, die wel even nodig hebben om te laden.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • GigaDave56
  • Registratie: Juni 2001
  • Laatst online: 14-12-2025
VB zal niet wachten tot calc.exe klaar is. Daar is, volgens mijn VB boek, een aardige work-around voor die aardig wat code vergt. Zal even opzoeken of die code ook te downen is bij de maker v/h boek.
Anderzijds, ik denk dat er hier en daar wel wat over te vinden is

Succes

[ Voor 19% gewijzigd door GigaDave56 op 08-01-2004 16:51 . Reden: Verduidelijking... ]

Not so Giga One
> I'd sell my soul for you, babe
> For money to burn, for you
> I'd give you all and have none, babe
> Just to, just to, to have you here by me... [Scooter - Rebel yell]


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
http://www.mvps.org/access/api/api0004.htm

Hiero :)

Oeps niet helemaal goed gelezen :X

[ Voor 23% gewijzigd door Phenomenon op 08-01-2004 16:54 ]


  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08-2025
DPLuS schreef op 08 januari 2004 @ 15:07:
Ik vroeg me het volgende af over de onderstaande code:

Visual Basic:
1
2
shell(calc.exe)
msgbox "Calc.exe started!"


Wordt de messagebox pas weergegeven als het programma COMPLEET geladen is, of opent VB op de achtergrond gewoon een shell, voert calc.exe uit en gaat meteen verder met de volgende regel code in de sub, ook al is calc.exe (of excel of photoshop of wat voor een programma dat lang laadt dan ook) nog niet COMPLEET geladen is?
een aparte thread voor die regel starten (shell("calc.exe") dus), daarna wachten totdat die thread 'completed' is en daarna pas verder gaan?? Tenminste, zo heb ik dat eens in Java gedaan. VB zal dat ook vast wel kunnen.

binnenkort een hele dikke casemod :P


Verwijderd

Win32api WaitForSingleObject gebruiken.

http://support.microsoft....aspx?scid=kb;en-us;129796

(HOWTO: Use a 32-Bit Application to Determine When a Shelled Process Ends)

(was ook precies wat phenomenon opgezocht had)

[ Voor 77% gewijzigd door Verwijderd op 08-01-2004 17:43 . Reden: linkje gezocht ]


  • DPLuS
  • Registratie: April 2000
  • Niet online
Verwijderd schreef op 08 januari 2004 @ 17:21:
Win32api WaitForSingleObject gebruiken.

http://support.microsoft....aspx?scid=kb;en-us;129796

(HOWTO: Use a 32-Bit Application to Determine When a Shelled Process Ends)

(was ook precies wat phenomenon opgezocht had)
Hier staat dus het volgende:
Quit NotePad. A MsgBox appears indicating termination of the NotePad application and an exit code of 0.
En dat is juist wat ik NIET bedoel.
Ik wil pas dat mijn volgende line of code uitgevoerd wordt als het programma dat via shellexecute/shell/createprocess uitgevoerd wordt, helemaal GELADEN is.
Start MS Word maar eens op, het laden van word duurt een paar seconden voordat je "hoofdvenster" te zien is....

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Een programma hoeft/zal geen signaal naar het OS afgeven dat het 'klaar is met laden' (wat is dat precies?). Het OS kent dus alleen de toestanden 'programma gestart' 'programma termineert'. Jouw idee is dus helemaal niet mogelijk zover ik weet, alleen als je een signal stuurt vanuit het programma naar je eigen programma, maar dan moet je het programma dat je opstart zelf geschreven hebben of aangepast en dat leek me niet de bedoeling hier.

Verwijderd

Volgens mij moet je WaitForInputIdle gebruiken.

  • DPLuS
  • Registratie: April 2000
  • Niet online
Nou ja, omdat ik over dit feit nog nooit iemand heb horen klagen, zal ik mijn topic maar als een overbodige post beschouwen...

Eerlijk gezegd had ik ook geen problemen met mijn VB-code (die dus de aanleiding was voor dit topic), maar was ik gewoon een beetje paranoïa.

Uitleg:

Ik laadt in mijn code Outlook 2000, show mijn explorer-venster en maak een nieuw mailtje aan, op het moment dat ik objMail.send doe, laadt ik een ander programma:
clickYes.exe, dit programma zorgt ervoor dat ik mailtjes kan versturen met mijn app zonder dat de gebruiker op die hinderlijke security-vensters moet klikken.
Daarna unload ik outlook en doe een postmessage WM_DESTROY naar clickYes.exe.

Ik was gewoon bang dat dit op tragere pc's niet ging werken, dus dat vb clickYes.exe zou laden en dat het te lang zou duren voordat 'ie opgestart was ofzo...

[ Voor 75% gewijzigd door DPLuS op 09-01-2004 10:11 ]


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Leuk, programma's zo afhankelijk maken van andere progs. Op mijn comp zal jouw app niet werken: heb geen outlook geinstalleerd :)

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea

Pagina: 1