[VB.NET] Wachten tot externe app. volledig geladen is

Pagina: 1
Acties:

  • The__Virus
  • Registratie: Januari 2005
  • Laatst online: 18:23
Ik maak een applicatie in Visual Basic .NET met Visual Studio 2005 dat een aantal toetsaanslagen uitvoert bij een extern programma, om zo dat programma wat te laten doen.
Nu is het zo dat die toetsaanslagen prima werken, maar dan alleen als het programma snel genoeg opstart. Als ik zeg maar een timer van 3000ms gebruik om daarna de toetsaanslagen in te voeren, werkt alles prima. Meestal duurt dit even en is het programma dus nog niet opgestart, voordat de toetsaanslagen worden verzonden.
Nu kan ik natuurlijk een timer erin zetten en een tijdje wachten, maar het is de bedoeling dat alles zo snel mogelijk gaat. Dit wil ik dus eigenlijk zien:
1. Druk op een knop zodat applicatie start.
2. Zodra het gestart is, stuur je de toetsaanslagen.
3. Nadat het programma zijn bewerking (1 á 2 seconde duurt deze) heeft uitgevoerd, sluit je het weer.

Hoe krijg ik dit voor elkaar?

Ik roep het programma met System.Diagnostics.Process aan. Er is echt geen andere manier om dit voor elkaar te krijgen dan met toetsaanslagen.

Wat ik precies voor elkaar wil krijgen, is een Modus Switcher maken voor mijn geluidskaart de Creative X-Fi. Ik weet dat er al een is, maar zelf maken is natuurlijk leuker en een uitdaging. Deze voert ook enkele toetsaanslagen uit zodra het programma geladen is en dat gaat zo snel, dat je de hele console niet eens meer ziet. Dit wil ik dus ook bereiken.
Ik heb overal gezocht en ik ben er steeds meer van overtuigd dat ik iets met hooks moet doen, maar aangezien ik een noob programmeur ben en over hooks niets kon vinden wat direct verband hield met VB.NET én ook nog eens leesbaar voor mij is, hoopte ik dat jullie mij konden helpen.

[ Voor 4% gewijzigd door The__Virus op 02-07-2006 12:13 ]


Verwijderd

The__Virus schreef op zondag 02 juli 2006 @ 12:11:
Ik maak een applicatie in Visual Basic .NET met Visual Studio 2005 dat een aantal toetsaanslagen uitvoert bij een extern programma, om zo dat programma wat te laten doen.
Nu is het zo dat die toetsaanslagen prima werken, maar dan alleen als het programma snel genoeg opstart. Als ik zeg maar een timer van 3000ms gebruik om daarna de toetsaanslagen in te voeren, werkt alles prima. Meestal duurt dit even en is het programma dus nog niet opgestart, voordat de toetsaanslagen worden verzonden.
Nu kan ik natuurlijk een timer erin zetten en een tijdje wachten, maar het is de bedoeling dat alles zo snel mogelijk gaat. Dit wil ik dus eigenlijk zien:
1. Druk op een knop zodat applicatie start.
2. Zodra het gestart is, stuur je de toetsaanslagen.
Onder Win32 gaat dit met WaitForInputIdle en onder .NET waarschijnlijk hetzelfde. Je programma moet wel een user interface hebben.

http://msdn2.microsoft.co...ess.waitforinputidle.aspx

  • DoDo
  • Registratie: Juli 2001
  • Laatst online: 15-02 12:13
Als de externe app bijv een "Loading" text heeft, kun je deze dmv het window te pakken etc met SPY++ uitlezen. Zodra dit bijv weg is de applicatie zijn dingen laten doen

  • The__Virus
  • Registratie: Januari 2005
  • Laatst online: 18:23
Loading text heeft deze niet en waitforinputidle had ik al eens gebruikt maar dat werkte niet, hij bereikt dat direct al ofzo :(. Heb het nu net weer eens gebruikt en zowel met als zonder timeout in te stellen bereikt hij deze state onmiddelijk nadat het wordt aangeroepen (dus nog voordat het volledig is geladen).

edit: ik heb gezocht op SPY++, maar is er geen manier om dat in VB.NET te gebruiken ofzo? Ik krijg nergens hits i.c.m. VB.NET, enkel met C*. En daar kan ik niets mee :X.

[ Voor 22% gewijzigd door The__Virus op 02-07-2006 14:06 ]