• 24-06-2022, 22:32:41
    #1
    Kurumsal Üye
    Merhaba hocalarım.
    C#da cssteki selection gibi veri seçilme eventini nasıl yakalayabilirim.
    örneğin not defterinde seçilen veriyi nasıl textboxuma yazdırabilirim.
  • 24-06-2022, 22:41:38
    #2
    ripeapples adlı üyeden alıntı: mesajı görüntüle
    Merhaba hocalarım.
    C#da cssteki selection gibi veri seçilme eventini nasıl yakalayabilirim.
    örneğin not defterinde seçilen veriyi nasıl textboxuma yazdırabilirim.
    Bunun için google da ufak bir aratma neticesinde
    şuradaki konu işinizi görecektir . Tıkla
  • 24-06-2022, 22:49:52
    #3
    Kurumsal Üye
    omerbulut00 adlı üyeden alıntı: mesajı görüntüle
    Bunun için google da ufak bir aratma neticesinde
    şuradaki konu işinizi görecektir . Tıkla
    Hocam istediğim bu değil. Chromeda gezerken cursor ile seçilen bir metni ya da bir pdfden seçilen metni programıma aktarmak istiyorum
  • 25-06-2022, 00:46:11
    #4
    C# pek hakim değilim ama dediğiniz islemi filestream ile yapmiştım bikac sefer deneme olarak google yazıp nasil kullanıldığına bakabilirsiniz
  • 25-06-2022, 07:50:21
    #5
    ripeapples adlı üyeden alıntı: mesajı görüntüle
    Hocam istediğim bu değil. Chromeda gezerken cursor ile seçilen bir metni ya da bir pdfden seçilen metni programıma aktarmak istiyorum
    Bu konuda ücretli olarak hizmet verebilirim, iletişim kurabilirsin. PM atabilirsin.
  • 25-06-2022, 12:53:54
    #6
    üstad c#'da pek tecrübeli değilsen zor gibi... ama birkaç başlangıç noktası önerebilirim. Öncelikle eğer bir desktop uygulaması içerisinde gömülü browser kullanmayı düşünürsen işin daha kolay olabilir. Cefsharp diye bir paket var. bu sana chrome engine'ı desktop uygulama içerisinde kullanmana olanak veriyor. bildiğin browser yani. bu araç sayesinde web sayfası yüklendikten sonra mouse event'lerini yakalayabilir, javascript veya html kodlarını "inject" edebilir ve işini görebilirsin. Ben bir borsa uygulaması için yapmıştım. gayet kullanışlı birşey. cefsharp ile sayfadaki tüm scriptleri ve html css kodlarını, ne varsa alabilir, okuyabilir, değiştirebilirsin. bu konuda kulaylık olması açıcından da HTML Agilitypack denen paketi kullanmanı önerebilirim. bu paketle div'leri, textbozları id, name, class gibi özellikleriyle ayrıştırabilir, içiçe geçmiş "tag"lara eriebilir, içeriklerini okuyabilir veya değiştirebilirsin.

    eğer diyorsan ki ben bildiğin chrome'u kullanacağım ve arka planda çalışan tamamen bağımsız bir desktop uygulaması veya servis yapılan işlemleri kaydedecek... o daha zor. chrome extension'ı yazarak birtakım bilgileri yakalabilirsin ama bu bilgileri chrome dışına aktarmakla ilgili güvenlik kısıtlamaları var. Ben çok uzun süredir extension yazmadım ama hatırladığım kadarı ile yeni extension standardı böyle şeylere olnak veriyordu. bu durumda yazmak istediklerini mesela bir text dosyaya yazabilir (eğer chrome izin veriyorsa ki bence vermemesi daha iyi olur o dosyayı da c# ile monitor ederek okuyabilirsin.Daha sonra ne yapacağın sana kalmış birşey.

    Birde selenium web driver denen birşey var ki ben hiç sevmemiştim. O da chrome engine ile dış dünya arasında bağlantı kurmak için bir köprü görevi görüyor.

    Sorun şu ki chrome engine'de birtakım haberleşme engellemeleri var. Eğer olmasa herhangi bir malware, pis bir extension senin neyin var neyin yok alıp istediğini yapar. O sebeple bir browser'ı izlemek o kadar kolay birşey değil. Kurcalamadan yapmak istediğine uygun metodu bulman biraz zor.

    pdften seçili metni okumak için yukarıdaki gibi chrome engine'e kendisini tam anlmıyla monte eden birşeylere ihtiyacın var. Ama mesela eğer seçilip "copy" edilen metni algılamak için hiçbirşeye ihtiyacın yok. ikisi farklı şeyler. copy edilen metni veya resmi veya başka birşeyi algılamak için c#'da clipboard'u sürekli monitor eden bir program yazabilirsin, o kolay olur. Tekrarlayacağım ama... bit textbox'a (ki bu demek ki herhangi bir html elemnet'ine) tıklandığını anlamak ve o tıklanan elementin içerisini okumak için veya pdf olsun olmasın herhangi bir "seçme" işlemini algılamak için daha ileri düzeyde şeylere ihtiyacın olur.
  • 25-06-2022, 20:52:52
    #7
    Kurumsal Üye
    FriendOfGhost adlı üyeden alıntı: mesajı görüntüle
    üstad c#'da pek tecrübeli değilsen zor gibi... ama birkaç başlangıç noktası önerebilirim. Öncelikle eğer bir desktop uygulaması içerisinde gömülü browser kullanmayı düşünürsen işin daha kolay olabilir. Cefsharp diye bir paket var. bu sana chrome engine'ı desktop uygulama içerisinde kullanmana olanak veriyor. bildiğin browser yani. bu araç sayesinde web sayfası yüklendikten sonra mouse event'lerini yakalayabilir, javascript veya html kodlarını "inject" edebilir ve işini görebilirsin. Ben bir borsa uygulaması için yapmıştım. gayet kullanışlı birşey. cefsharp ile sayfadaki tüm scriptleri ve html css kodlarını, ne varsa alabilir, okuyabilir, değiştirebilirsin. bu konuda kulaylık olması açıcından da HTML Agilitypack denen paketi kullanmanı önerebilirim. bu paketle div'leri, textbozları id, name, class gibi özellikleriyle ayrıştırabilir, içiçe geçmiş "tag"lara eriebilir, içeriklerini okuyabilir veya değiştirebilirsin.

    eğer diyorsan ki ben bildiğin chrome'u kullanacağım ve arka planda çalışan tamamen bağımsız bir desktop uygulaması veya servis yapılan işlemleri kaydedecek... o daha zor. chrome extension'ı yazarak birtakım bilgileri yakalabilirsin ama bu bilgileri chrome dışına aktarmakla ilgili güvenlik kısıtlamaları var. Ben çok uzun süredir extension yazmadım ama hatırladığım kadarı ile yeni extension standardı böyle şeylere olnak veriyordu. bu durumda yazmak istediklerini mesela bir text dosyaya yazabilir (eğer chrome izin veriyorsa ki bence vermemesi daha iyi olur o dosyayı da c# ile monitor ederek okuyabilirsin.Daha sonra ne yapacağın sana kalmış birşey.

    Birde selenium web driver denen birşey var ki ben hiç sevmemiştim. O da chrome engine ile dış dünya arasında bağlantı kurmak için bir köprü görevi görüyor.

    Sorun şu ki chrome engine'de birtakım haberleşme engellemeleri var. Eğer olmasa herhangi bir malware, pis bir extension senin neyin var neyin yok alıp istediğini yapar. O sebeple bir browser'ı izlemek o kadar kolay birşey değil. Kurcalamadan yapmak istediğine uygun metodu bulman biraz zor.

    pdften seçili metni okumak için yukarıdaki gibi chrome engine'e kendisini tam anlmıyla monte eden birşeylere ihtiyacın var. Ama mesela eğer seçilip "copy" edilen metni algılamak için hiçbirşeye ihtiyacın yok. ikisi farklı şeyler. copy edilen metni veya resmi veya başka birşeyi algılamak için c#'da clipboard'u sürekli monitor eden bir program yazabilirsin, o kolay olur. Tekrarlayacağım ama... bit textbox'a (ki bu demek ki herhangi bir html elemnet'ine) tıklandığını anlamak ve o tıklanan elementin içerisini okumak için veya pdf olsun olmasın herhangi bir "seçme" işlemini algılamak için daha ileri düzeyde şeylere ihtiyacın olur.
    c#da yeterince bilgiliyim hocam. Ben örnek olarak chrome verdim. Herhangi bir yerde arayacağım yani gömülü browser kullanamam copyalama olmadan yapacağım için copyi monitor edemem. Aklımda geliştiriler için bir uygulama fikri var bu adım kaldı. Windows apileri ile yapılabilir diye düşündüm. Belki bilen biri vardır diye buraya danıştım. Ancak kendimi tam anlatamadım sanırım.
    Mouse sağ clickin basılı tutulup metin seçilme eventini nasıl yakalayacağımı arıyorum.
  • 26-06-2022, 00:22:03
    #8
    mallesef bunu yapamazsın. ancak clipboard'ı monitör edebilirsin. evet, windows aslında ne yaptığını farkındadır ama bunu uygulamalarla paylaşmaz diye biliyorum. bu dediğinin adı "hook". mouse klavye vb eventlerine progamını "hook"layabiliyorsun. ancak bunu yapan bir program yazarsan wndows bunu virüs thread olark algılayıp çalıştırmaz. bunun için sanırım "sign" edilmiş bir "mouse driver" gibi birşey yazman, onu da makinalara install ettirmen gerekir. eğer bu dediğin mümkün olsaydı tüm programlar diğer programları monitör edebilirdi. bu izin verilen birşey değil. Browserlar içerisinde de chrome konusunda şöyle birşey var. diğer uygulamalarla haberleşme bağlantıları sağlayan tek browser engine bildiğim kadarı ile chrome. microsoft edge de chrome engine kullanıyor. mozilla sanırım kendi motoru üzerinde çalışıyor. bir diğer deyişle aslında sana browser düzeyinde değil windows sistemi düzeyinde bir monitoring işlemi lazım.

    bu dediğini ekran için yapabilirsin ama. ekrandaki görüntüyü sürekli monitor etmen, mouse koordinatlarını alman, mouse key'lerini algılaman mümkün olur ama o zaman da seçilen metnin tamamı ekranda mı, yoksa scroll edildi mi gibi şeylerle uğraşman lazım gelir. (bu sadece aklıma gelen bir not)

    maalesef benim bilgim bu kadar... ama mantığım diyor ki bu iş olmaz. windows genel anlamda bir uygulada yapılan işleri başka uygulamaya bildirmez. mesela eskiden ekranda yıldız karakterii ile korunan şifre alanları vardı. hatta bu alanlar desktop uygulamaları içerisindeydi. bir küçük uygulama çalıştırırdın, mosue ile o yıldız karakterleri gösteren textbox'un üzerine gelirdin ve arka plandaki uygulama sana o textbox'ın gerçek içeriğini gösterirdi. windows 95 ve XP zamanında yapılıyordu böyle şeyler. hatta vb6 örnek kodu olduğunu bile hatırlıyorum sanki. ama bugün bunlar, haydi imkansız demeyeyim de çok büyük konuşmayayım ama, beni aşan çok zor işler...

    sana kolaylıklar diliyorum.