[vb6] of [vb2005] proces na 1 seconde beeindigen

Pagina: 1
Acties:

  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
Ik heb een klein scriptje gemaakt, wat een control teken naar LPT1 stuurt.

dit ziet er zo uit:

Open "LPT1" For Output As #1
Print #1, Chr$(27); Chr$(112); Chr$(0)
Close #1

Dit werkt prima, maar als er geen printer zit aangesloten op de LPT1, dan hangt het programma.

Weet iemand hoe je dit uit kan laten voeren en het bv langer dan 1 seconde duurt, het proces kan be eindigen

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies


  • fsfikke
  • Registratie: Maart 2003
  • Niet online

fsfikke

* * * *

Je kan met bijvoorbeel pskill.exe processen killen.
Als je dan een batchje maakt wat er ongeveer zo uitziet:
code:
1
2
3
c:\VBprogje.exe
sleep 500
c:\pskill VBprogje.exe

Pskill moet je even googlen, ook sleep als je die niet op je PC hebt staan.

Zijn spaties in de aanbieding ofzo? www.spatiegebruik.nl


  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
PSKill kill ken ik idd wel...

Punt is dat bovenstaand script onderdeel is van een programma en dus geen losstaand programma is

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies


  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:24

remco_k

een cassettebandje was genoeg

Allereerst: heb je gekeken op welke regel het programma hangt?

2 mogelijkheden als oplossing:

1. Start je scriptje in een eigen thread en indien nodig destroy je die als hij 'hangt'. (smerige optie)
2. Zoek uit hoe je een timeout kan implementeren in de Open functie (want waarschijnlijk hangt ie daarin).

Van de eerste weet ik zeker dat het werkt, de 2e optie weet ik niet of 'Open' een timeout parameter kent, maar is wel netter om te doen dan botweg een thread beeindigen. Een combinatie van beide opties is ook goed. (dus eerst de 'Open' functie in timeout laten gaan, als dat niet gebeurd, dan de thread beeindigen, wat als het goed is nooit nodig is)


Edit:
Misschien is het nog veel beter om de hele 'Open' functie te vergeten en in plaats daarvan de windows API functie CreateFile te gebruiken, want met SetCommTimeouts kan je dan het timeout gedrag beinvloeden:
code:
1
CreateFile("LPT1", ....


Met wat google werk en rondkijken in je help of op msdn.microsoft.com moet je er dan wel kunnen komen. En natuurlijk: post je oplossing hier... :+

[ Voor 59% gewijzigd door remco_k op 02-05-2007 08:39 ]

Alles kan stuk.


  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
Ik ga er vanavond naar kijken denk ik...
Ik heb het nu zo opgelost/geworkaround dat de gebruiker eerst de juiste poort (of geen poort) moet kiezen.

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies