Giriş Yap / Kayıt Ol

WM Aracı'na üyelikler tekrar açıldı! Kayıt olmak için TIKLAYIN!

Cevap Yaz Favorilerime Ekle
Seçenekler Stil
Geri Git   Forum > > C - C++ - C#
Bikoin

Kopyalama uygulamasi

  #1  
Okunmamış 14 Eylül 2018, 14:28
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 20 Mart 2017
Yaş / Cinsiyet: 26 / Erkek
Meslek: Ögrencisi
Konum: Afyon
Ad, Soyad: Ke... Ye...
Mesajlar: 14
Beğeniler: 0 / 4
Ticaret: 0, 0%
Bir metinden istediğim alanları seçip sırası hafızaya alıp sonra onları istediğim yere yapıştırmak istiyorum, mesela "bugün hava çok güzel" cümlesinde "bugün" kelimesini seçip klavyeden c+1 ve "güzel" kelimesini seçip c+2 yaparak kopyalayın istediğim tabloya gidip gerekli sütuna y+1 yaparak c+1 hafızasına aldığım veriyi y+2 yaparak c+2 hafızasına aldığım veriyi yapıştırmak istiuirum.

Sizce nasıl bir yol izlemeliyim ?
  #2  
Okunmamış 14 Eylül 2018, 14:35
Avatar Seçilmemiş
Cisco Network Operator
 
Üyelik Tarihi: 20 Temmuz 2014
Cinsiyet: Erkek
Meslek: Webmaster
Konum: Ankara
Ad, Soyad: Mu... Ka...
Mesajlar: 1.858
Beğeniler: 458 / 56
Ticaret: 7, 100%
Kopyalanacak kelimeler için dinamik olarak değişken oluşturabilir veya sırasıyla kopyalananları biz dizi içerisine aktarabilirsiniz. c+1 veya c+2 de bulunan 1 ve 2 gibi tanımlayıcılara göre dizi içerisinden gerekli index numarasına göre kopyalamış olduğun veriyi çekebilirsin.Birçok farklı şekilde yapabilirsin
  #3  
Okunmamış 14 Eylül 2018, 15:15
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 20 Mart 2017
Yaş / Cinsiyet: 26 / Erkek
Meslek: Ögrencisi
Konum: Afyon
Ad, Soyad: Ke... Ye...
Mesajlar: 14
Beğeniler: 0 / 4
Ticaret: 0, 0%
Bunları bir web sayfasından sırası ile kopyalayıp baska bir sayfadaki tabloya yapıştırmam gerekiyor. Aynı uygulama için kullanmayacağım yani verileri
  #4  
Okunmamış 14 Eylül 2018, 15:52
Avatar Seçilmemiş
Cisco Network Operator
 
Üyelik Tarihi: 20 Temmuz 2014
Cinsiyet: Erkek
Meslek: Webmaster
Konum: Ankara
Ad, Soyad: Mu... Ka...
Mesajlar: 1.858
Beğeniler: 458 / 56
Ticaret: 7, 100%
Tamam kopyalacağın verleri alır diziye atarsın daha sonra diziyi querystring olarak diğer sayfaya gönderir diğer sayfada üzerinde işlem yapıp tabloya atarsın
  #5  
Okunmamış 14 Eylül 2018, 18:20
SefaCanDemir Adlı Üyenin Avatarı
UI/UX Designer
 
Üyelik Tarihi: 10 Kasım 2013
Cinsiyet: Erkek
Konum: Adana
Ad, Soyad: Se... De...
Mesajlar: 1.311
Beğeniler: 446 / 224
Ticaret: 10, 100%
Kod:
System.Windows.Forms.Clipboard.SetText("yazı");
Bu şekilde clipboarda veri atabilirsiniz. Ama sanırım sizin istediğiniz farklı bir şey.

Dolayısıyla:
Kod:
string[] copies = new String[11];
şeklinde 11 verilik (istediğiniz sayıda) bir array oluşturun.

Daha sonra anasınıfınızın içerisine şunları tanımlayın:

Kod:
 [System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
        [System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
Ve bu fonkisyonu ekleyin:

Kod:
 enum KeyModifier
        {
            None = 0,
            Alt = 1,
            Control = 2,
            Shift = 4,
            WinKey = 8
        }
Class içerisinde formuzun adında bir fonksiyon olacak içerisin de InitializeComponent(); fonksiyonunun bulunduğu başlangıç fonksiyonu bunun içerisine aşağıdakileri ekleyin:

Kod:
 int y1_id = 0;     //  y + 1 tuşumuzun id değeri.
int y2_id = 1;     //  y + 1 tuşumuzun id değeri.
            
RegisterHotKey(this.Handle, id, Keys.Y.GetHashCode(), Keys.1.GetHashCode());  // y + 1 kısayolumuzun kaydı.

RegisterHotKey(this.Handle, id, Keys.Y.GetHashCode(), Keys.2.GetHashCode());  // y + 2 kısayolumuzun kaydı.
Ve şu fonksiyonu her hangi bir yere ekleyiniz:

Kod:
protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
 
            if (m.Msg == 0x0312)
            {
                Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);              
                KeyModifier modifier = (KeyModifier)((int)m.LParam & 0xFFFF);    
                int hotkey = m.WParam.ToInt32(); 
     
                  if (hotkey == y1_id){ 

                // Kısayol y + 1 ise seçilen metni kopyalıyoruz.
                     copies[0] = GetSelectedText();
                 }  
                 else if (hotkey == y2_id{ 

/* Kısayol y + 2 ise değişkendeki veriyi clipboarda yapıştırıp sisteme CTRL+V kombinasyonunu yollyuoruz. Yani değişkendeki veriyi yapıştırıyor. */

                     Clipboard.SetText(copies[0]);
                     SendKeys.Send("^{v}");
                 }     
 
            }
        }
Ve form dışında seçilen metni alacağımız fonksiyonu ve referansları ekliyoruz:

Kod:
 [DllImport("user32.dll")]
        static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
        [DllImport("user32.dll")]
        static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll", SetLastError = true)]
        static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
        [DllImport("kernel32.dll")]
        static extern uint GetCurrentThreadId();
        [DllImport("user32.dll")]
        static extern bool AttachThreadInput(uint idAttach, uint idAttachTo,bool fAttach);
        [DllImport("user32.dll")]
        static extern IntPtr GetFocus();
        [DllImport("user32.dll")]
        static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam);
        // second overload of SendMessage
        [DllImport("user32.dll")]
        static extern int SendMessage(IntPtr hWnd, uint Msg, out int wParam, out int lParam);
        
        const uint WM_GETTEXT = 0x0D;
        const uint WM_GETTEXTLENGTH = 0x0E;
        const uint EM_GETSEL = 0xB0;

        function string GetSelectedText()

        {

               IntPtr hWnd = GetForegroundWindow();

                uint processId;

                uint activeThreadId = GetWindowThreadProcessId(hWnd, out processId);
                uint currentThreadId = GetCurrentThreadId();
                AttachThreadInput(activeThreadId, currentThreadId, true);
                IntPtr focusedHandle = GetFocus();
                AttachThreadInput(activeThreadId, currentThreadId, true);
                StringBuilder sb1 = new StringBuilder();
                int len = SendMessage(focusedHandle, WM_GETTEXTLENGTH, 0,sb1);

                StringBuilder sb = new StringBuilder(len);
                int numChars = SendMessage(focusedHandle, WM_GETTEXT, len + 1, sb);
                int start, next;
                SendMessage(focusedHandle, EM_GETSEL, out start, out next);
                string selectedText = "";
                if (sb.ToString() != "")
                    selectedText = sb.ToString().Substring(start, next - start);

                return selectedText;

           }

Son olarak formun kapandığında kaydedilen kısayolları kaldırıyoruz (Formun Closing Eventına yazınız):

Kod:
 UnregisterHotKey(this.Handle, 0);



Biraz hiyerarşi bakımından karışık oldu kodlar düzenleyemedim. Fakat bu şekilde istediğinizi yapabilirsiniz.


Her hangi bir sıkıntı yaşarsanız yardımcı olurum.
Cevap Yaz Favorilerime Ekle


Konuyu toplam 1 kişi okuyor. (0 üye ve 1 Ziyaretçi)
 
Seçenekler
Stil
Normal Normal

Geri Git   Forum > C - C++ - C#


Yetkileriniz
Konu açma yetkiniz: Yok
Cevap Yazma Yetkiniz Yok
Eklenti yükleme yetkiniz: Yok
Mesajınızı değiştirme yetkiniz: Yok

BB code: Açık
İfadeler: Açık
[IMG] Kodları: Açık
HTML kodu: Kapalı




Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 15:30.