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

  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011
  • VJ VIMANA

    VJ VIMANA

    3 Mayıs 2007