Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Win7 32b, softwarové ovládání DOSovské aplikace...

Zdar borci!

Původně jsem chtěl napsat nadpis jako:


Život není lehký
nebo

Hardcore porno
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á.

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....

Život není lehký
nebo

Hardcore porno
Tyto .NETovské legrace kompletně ztrácí úplný význam, pokud jde o DOS aplikaci.
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.....

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny