

Win7 32b, softwarové ovládání DOSovské aplikace...
Zdar borci!
Původně jsem chtěl napsat nadpis jako:
nebo
Život není lehký
Ale tak bych mohl zahrát na nervy administrátorům. A teď k věci. Jestli tohle vyřeší nějaký borec, tak bude lepší, než já.
Hardcore porno
Jde o tohle. Pokud chcete posílat klávesové výstupy("z klávesnice") nějaké aplikaci ve Windows, je nejjednodušší řešení
použit prográmek .NET, kde zavoláte něco na způsob:
...
System.Windows.Forms.Sendkeys.Sendwait("{ENTER}");
...
Stačí si defakto ošéfovat, aby daná aplikace měla focus a jste na koni...Jenže....
nebo
Život není lehký
Tyto .NETovské legrace kompletně ztrácí úplný význam, pokud jde o DOS aplikaci.
Hardcore porno
V lepším případě na tyto "povely" nereagují, nebo se aplikace ukončí.....
Podle mého testování to vypadá, že cesta vede skrz nativní "user32.dll" ......
Je však potřeba mimo jiné v programu získat pointer na DOSovský proces.
Ukázka z fce Main v přiloženém kódu:
int procesId = YourEnumerateClass.Enum16BitProcesses();
Process processes = Process.GetProcessById(procesId);
if (processes == null)
throw new Exception("Could not find the process; is running?");
IntPtr WindowHandle = processes.MainWindowHandle;
PressKey('a', true); // druhý parametr určuje stisknuto/odstisknuto
System.Threading.Thread.Sleep(100);
PressKey('a', false);
Testuju to na starém M602 a bohužel program žádnou chybu nehlásí, ale nefunguje to (nedělá to opticky nic).V příloze přikládám samostatný consolový, kompilovatelný projekt.
Předem díky za cenné rady, soudruzi.....