Nasıl Windows imlecin altındaki kelime almak için? | Netgez.com
SORU
12 Ocak 2011, ÇARŞAMBA


Nasıl Windows imlecin altındaki kelime almak için?

İmleç altındaki kelimeyi alır bir uygulama oluşturmak istiyorum (sadece metin alanları için), ama bunu nasıl yapacağımı bulamıyorum. OCR kullanarak oldukça zordur. Çalışan gördüğüm tek şey Deskperience bileşenleri. Bir 'yerli' ama onlar çok pahalı. ben destekledikleri Şimdi bunun ne olduğunu anlamaya çalışıyorum 'yerli' (belki takma bir şekilde). Herhangi bir yardım takdir edilecektir.

DÜZENLEME: Bir yolunu buldum, ama sadece kontrol bütün metni alır. Tüm metin imleci altında tek kelime almak için nasıl herhangi bir fikir?

CEVAP
19 Ocak 2011, ÇARŞAMBA


Windows'un yeni sürümleri üzerinde, başka bir uygulama ise elbette hedeflenen uygulama size ait değil ise. () bilgi toplamak amacıyla önerilen şekilde kullanmaktırUI Otomasyonteknoloji. Wikipedia bu konuda daha fazla bilgi için oldukça iyidir: Microsoft UI Automation

Temelde, UI otomasyon toplandığı ve ne toplamak için gerekli tüm araçları kullanın

Burada diğer uygulamalar UI spy olacak konsol uygulaması küçük bir kod. Çalıştırmak ve farklı uygulamalar için fareyi hareket ettirin. Her uygulama çeşitli için farklı bir destek var "UI otomasyon kalıpları". Örneğin, Değer desen ve burada gösterildiği gibi Metin desen var.

static void Main(string[] args)
{
    do
    {
        System.Drawing.Point mouse = System.Windows.Forms.Cursor.Position; // use Windows forms mouse code instead of WPF
        AutomationElement element = AutomationElement.FromPoint(new System.Windows.Point(mouse.X, mouse.Y));
        if (element == null)
        {
            // no element under mouse
            return;
        }

        Console.WriteLine("Element at position "   mouse   " is '"   element.Current.Name   "'");

        object pattern;
        // the "Value" pattern is supported by many application (including IE & FF)
        if (element.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))
        {
            ValuePattern valuePattern = (ValuePattern)pattern;
            Console.WriteLine(" Value="   valuePattern.Current.Value);
        }

        // the "Text" pattern is supported by some applications (including Notepad)and returns the current selection for example
        if (element.TryGetCurrentPattern(TextPattern.Pattern, out pattern))
        {
            TextPattern textPattern = (TextPattern)pattern;
            foreach(TextPatternRange range in textPattern.GetSelection())
            {
                Console.WriteLine(" SelectionRange="   range.GetText(-1));
            }
        }
        Thread.Sleep(1000);
        Console.WriteLine(); Console.WriteLine();
    }
    while (true);
}

UI otomasyon aslında bildiğim kadarıyla Chrome, Internet Explorer ve Firefox tarafından, ama desteklenmiyor. Bu bağlantıyı bakın: When will Google Chrome be accessible?

Şimdi, bu sadece sizin için işe başlıyor :-), çünkü:

  • ÇoÄŸu zaman, tüm bu ağır güvenlik ima etti. Bu teknoloji (veya WindowFromPoint gibi doÄŸrudan Windows teknolojisi) kullanarak bunu yapmak için yeterli hakları (yönetici olarak) gerektirir. Ve DExperience bilgisayarda bir çekirdek sürücüsü yüklemeden sürece bu sınırlamaların üstesinden gelmek için herhangi bir yolu var olduÄŸunu sanmıyorum.

  • Bazı uygulamalar düzgün hakları bile kimseye bir ÅŸey açıklamayacaktır. EÄŸer bankacılık uygulaması yazıyorum, örneÄŸin, sen benim uygulama görüntüler ne casusluk etmek istemiyorum :-). DRM ile Outlook gibi diÄŸer uygulamalar aynı sebep için bir ÅŸey ortaya çıkarmak deÄŸil.

  • Sadece UI otomasyon Metin desen destek sadece tüm metin ve daha fazla bilgi (kelime gibi) verebilir. Ne yazık ki, bu belirli bir desen varsa UI otomasyon küresel destek verirlerse bile İE ne FF tarafından desteklenmiyor.

Eğer bu sizin için çalışıyor değilse, daha derin ve kullanma OCR dalış ya da tanıma teknikleri Şekil. Hatta bu ile, bunu yapmak mümkün olmayacaktır bazı durumlarda olacak (güvenlik hakları nedeniyle).

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013