[vbs] Stuur ESC key naar MS-DOS window

Pagina: 1
Acties:

  • BasXcore
  • Registratie: April 2002
  • Laatst online: 17-11-2025
Ik wil een DOS applicatie rond een bepaald tijdstip afsluiten dmv een VBS script. Maar ik heb problemen om de ESC toets door te zetten naar het DOS window. Dit is wat ik tot nu toe heb :

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Emenu"
WScript.Sleep 500 '
For i = 1 To 10
WshShell.SendKeys "{ESC}"
Next

Emenu is het active venster, en die wordt ook geactiveerd zodra je de VBS start. Dus dat zit goed.

Maar ik weet gewoon niet zeker of dit uberhaubt werkt richting een DOS window.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Je maakt een paar foute aannames. Allereerst: weet je het verschil tussen een DOS-app en een console-app? Zo ja, welke van de 2 gaat het over? Daarnaast zijn commandwindows een uniek feestbeest die zich sowieso niet helemaal voldoen aan standaardspecificaties. Zonder je Windows-versie kan ik daar echter weinig van zeggen.

Professionele website nodig?


  • BasXcore
  • Registratie: April 2002
  • Laatst online: 17-11-2025
Ik heb windows 2000 SP4 machine's die nog gebruik maken van Exact voor DOS. Deze wordt gedraait in full screen, maar ook in een window.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

BasXcore schreef op 11 december 2003 @ 15:48:
Ik heb windows 2000 SP4 machine's die nog gebruik maken van Exact voor DOS. Deze wordt gedraait in full screen, maar ook in een window.
Onder Windows NT-varianten (2000 is NT5.0) worden echte 16-bit DOS-applicaties binnen een host-process uitgevoerd. Dit proces heet wowexec.exe (Windows On Windows Executable).

Het wowexec proces heeft geen message queue, en kun je dus niet via WM_CHAR messages of zo aansturen. De enige methode die werkt is zeker weten dat het window actief is en dan de API-calls SendInput en _keybdevent gebruiken. Ik weet niet hoe de SendKeys() methode werkt die je gebruikt, maar ik gok dat die op de nette manier input verstuurt en niet via een van de 2 calls die ik hierboven noem.

Maar ik ken zelfs geen VBS, dus daarvoor moet je even wachten tot er een expert langsfietst, of zelf met deze info meer research gaan doen ;)

Professionele website nodig?