HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Szöveg beillesztése tetszőleges alkalmazásba


Példaprogram letöltése

23232 bájt

Cikkünkben elkészítünk egy alkalmazást, mely a háttérben futva figyeli a számára regisztrált HOTKEY kombinációkat és – attól függően, hogy melyiket nyomtuk le – egy szöveget illeszt az éppen aktív ablak felületének tetszőleges kontroljába, ahol a kurzor éppen tartózkodik. A művelet érdekessége, hogy a beillesztendő szövegek egy tetszőleges XML állomány tagjaiban lehetnek, és az egyes billentyűkombinációk segítségével navigálni lehet az XML egyes tagjai között, az állomány tetszőleges csomópontjában található szöveget illesztve be.

Az alkalmazás a háttérben fut, csupán egy ikon jelzi a Tálcán ennek tényét. A kis ikonra kattintva a jobb egérgombbal megjeleníthető egy menü, melynek egyik pontjával véget vethetünk az alkalmazás futásának.
Az alkalmazás rendelkezik egy konfigurációs állománnyal, melyben tároljuk, hogy éppen milyen elérési útvonalon található XML állományból olvassuk a szövegeket, melyek akár több sorosak is lehetnek. A konfigurációs állomány neve TextInserter.config.
Alapértelmezésben az alkalmazás mappájában található Sample.xml állományból olvassuk a szövegeket. Az alkalmazás ikonjához rendelt menü másik pontjára kattintva megjeleníthető egy dialógusablak, ahol tetszőleges XML kiválasztható. Ennek az állománynak az elérési útvonalát rögtön eltároljuk a konfigurációs állományban, hogy a következő induláskor ez álljon rendelkezésre. Amennyiben az alkalmazás konfigurációs állományában eltárolt XML a következő induláskor nem áll rendelkezésre (mert nem létezik), akkor az alkalmazás futása megszakad.
Az alkalmazás induláskor 4 darab HOTKEY kombinációt regisztrál, melyek a következők:
  • CTRL + F1: az adott XML állományban hátrafelé navigál a tagok között, és mindig az egyel előbbi csomópontban található szöveget illeszti be az éppen aktív alkalmazás aktuális kurzorpozíciójába. Amennyiben elértük az XML elejét, akkor nem illeszt be semmit.
  • CTRL + F2: mindig az aktuális csomópont szövegét illeszti be.
  • CTRL + F3: az adott XML állományban előre navigál a tagok között, mindig egyet lépve a következő csomópontra. Amennyiben elértük az utolsó tagot, akkor annak beillesztése után már nem illeszt be semmit.
  • CTRL + F4: az adott XML állomány első csomópontjára lép és ennek szövegét illeszti be.
Az alkalmazásban annak érdekében, hogy fogadni tudjunk globális gyorsbillentyű lenyomásakor generálódó üzenetet, első lépésben regisztrálnunk kell azt. A gyorsbillentyű regisztrálása után már csak fel kell készíteni az alkalmazást az üzenet feldolgozására.
Az alkalmazás projektjében létrehozunk egy Win32 osztályt, melyben implementáljuk a szükséges konstansokat és az API metódusokat. A gyorsbillentyű-kombinációkat a RegisterHotKey metódussal regisztrálhatjuk.
Mivel a billentyűkombináció lenyomásakor a Windows egy üzenetet küld az általunk megadott ablaknak, így szükségünk lesz egy osztályra, mely képes a Windows üzenetek feldolgozására. Létrehozzuk tehát a GlobalHotKey osztályt, melyet a NativeWindow-ból származtatunk. Ebben megtalálható a WndProc nevű függvény, melyet felülírva már is képesek vagyunk a Windows üzenetek figyelésre. Ha itt azt tapasztaljuk, hogy a WM_HOTKEY üzenet érkezett, akkor az általunk figyeltetett billentyűkombináció lenyomásra került. Ha több kombinációt is figyeltetni szeretnénk, akkor itt szét kellene ágaztatnunk a programunkat annak függvényében, hogy aktuálisan melyik lett lenyomva. Ez esetben a kapott Message struktúra adna segítséget. Ennek LParam property-jének alsó 16 bitje a lenyomott gomb kódját adja, míg a felső 16 bit arról árulkodik, hogy lett-e módosító gomb (alt, shift, stb.) is lenyomva.
string[] function_str = new string[]{"VK_F1","VK_F2","VK_F3","VK_F4"};
switch (m.Msg)
{
  case Win32.WM_HOTKEY: 
  {
    ...
A négy kombinációhoz négy eseményt hozunk létre, melyekre a ténylegesen futó alkalmazásban kezelőket írunk. A kezelőkben végezzük el a szövegek kiolvasását, majd vágólapra írását.
Az alkalmazás indulásakor a Configuration metódusban beolvassuk a konfigurációs állományból, hogy mely XML tartalmát kell majd olvasnia. Ezt követően regisztráljuk a négy gyorsbillentyűt. A konfigurációs állomány olvasását és írását a ReadConfig és a WriteConfig metódusokkal végezzük.
A ReadTextXml metódusban a paraméterként megadott sorszámú XML-csomópont szövegét olvassuk ki és tesszük a vágólapra.
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(local_path);
XmlNode node = xmldoc.DocumentElement.ChildNodes[number];
Clipboard.SetDataObject(node.InnerText,false);
A vágólapra került adathalmaz a SendKeys osztály Send metódusának meghívásával kerül beillesztésre az éppen aktív alkalmazásban úgy, hogy a CTRL + V kombináció lenyomását szimuláljuk.
SendKeys.Send("^v");

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 729. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |