Farklı programlara hızlı veri aktarımı - clipboard okuma

Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Program Autoit script dili ile yazıldı.

Tek sütun olarak kopyalanan verileri farklı programlara F4 e basarak satır satır aktarıp entere otomatik olarak basan script programı.
Kolay olan tarafı dosyadan okuma programlar arası bağlantı gibi işlemler gerektirmez.

Bir arkadaşım logo tiger için istemişti.
Arkadaşım web sitesinden alt alt olan verileri kopyalayıp logo da bir kutuyu seçip F4 bastığında kopyalan veriler arda arda logoya aktarılıyor.

Farklı programlarda da kullanılabilir.

Farklı kullanıcıların da işini görebilir diye düşünüyorum. Geliştirmek isteyenler veri aktarıldıktan sonra ENTER yerine farklı tuş kombinasyonları ekleyerek aynı satır için bir den fazla bilgi girişi de yapabilir.


C#:
#include <Clipboard.au3>
#include <GUIConstantsEx.au3>
#include <WinAPIError.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>

;Kodların kaynak adresi.
;https://www.autoitscript.com/autoit3/docs/libfunctions/_ClipBoard_GetData.htm
;Geliştirici
;Asri Akdeniz - asriakdeniz@gmail.com - www.asriakdeniz.com

Global $g_idMemo
Global $dursun

Opt("GUIOnEventMode", 1)

; Create GUI
$hGUI = GUICreate("Clipboard", 600, 450)
$g_idMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL)
GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
$id_GetData = GUICtrlCreateButton("Get ClipBoard Data", 300, 410, 120, 30)
GUISetState(@SW_SHOW)

Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 1)

HotKeySet("{F4}", "baslat")
HotKeySet("{F5}", "durdur")
HotKeySet("{F6}", "bitir")

GUICtrlSetOnEvent($id_GetData, "baslat")
GUISetOnEvent($GUI_EVENT_CLOSE, "bitir")

durdur()

$ciksin=false

While 1
    if $ciksin then exitloop
    If $dursun=false Then

        If _ClipBoard_Open($hGUI) Then
            $hMemory = _ClipBoard_GetDataEx($CF_TEXT)
            If $hMemory = 0 Then _WinAPI_ShowError("_ClipBoard_GetDataEx failed")
            $tData = DllStructCreate("char Text[8192]", $hMemory)
            GUICtrlSetData($g_idMemo,"")
            MemoWrite(DllStructGetData($tData, "Text"))

            $aText = StringSplit($tData, @CRLF, 1)
            $sText = ""
            For $i = 0 To _GUICtrlEdit_GetLineCount($g_idMemo)
                Send(_GUICtrlEdit_GetLine($g_idMemo, $i) )
                Send("{ENTER}")
                sleep(500)
            Next
            _ClipBoard_Close()
        Else
            _WinAPI_ShowError("_ClipBoard_Open failed")
        EndIf
        durdur()
    EndIf
    SLEEP(100)
wend

Func MemoWrite($sMessage = "")
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc

;F4
Func baslat()
   $dursun=false
EndFunc

;F5
Func durdur()
   $dursun=true
EndFunc

;F6
Func bitir()
   $ciksin=true
   Exit
EndFunc
 
Katılım
9 Mayıs 2007
Mesajlar
218
Excel Vers. ve Dili
365 TR
@Asri abi eline sağlık. bunu bir excel tablosundaki fatura satırlarını dediğün gibi logoya aktarmak için nasıl uyarlayabiliriz örnek bir uyarlama varmıdır.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
@Asri abi eline sağlık. bunu bir excel tablosundaki fatura satırlarını dediğün gibi logoya aktarmak için nasıl uyarlayabiliriz örnek bir uyarlama varmıdır.
Excel de satır ve sütunları seçip kopyalayın.
Program aktif iken logoda ilk bilgi giriş alanını seçip F4 e basın.

Program her satırdaki verilerileri girdikçe sütunlar arasında tab yapacaktır.
sonraki satıra enter ile geçiş yapar.

Bu şekilde deneyin. Eğer bilgi girişi sırasında şuraya atlasın oraya şunu yazsın ondan sonra buraya geçsin bunu yazsın gibi derseniz.
Bu konunun dışında bir işlem farklı bir çalışma konusu.

Aşağıdaki gif dosyasında veriler kopyalanıyor ve yan tarafa F4 ile aktarılıyor.

228283
 
Katılım
9 Mayıs 2007
Mesajlar
218
Excel Vers. ve Dili
365 TR
Çok sağolasın abi oldu dediğin gibi. Birde mesela bu hücre aralarına tab veya enter kullanmak için kodlarda hangi alana eklemeler yapmamız gerekiyor.
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Çok sağolasın abi oldu dediğin gibi. Birde mesela bu hücre aralarına tab veya enter kullanmak için kodlarda hangi alana eklemeler yapmamız gerekiyor.
Bu satırdaki , Send(_GUICtrlEdit_GetLine($g_idMemo, $i) ), bu veriyi _GUICtrlEdit_GetLine($g_idMemo, $i) bir değişkene aktarıp sonra veriyi parçalara ayırıp sonrada send ile göndermeniz gerekecek.
 
Katılım
24 Mart 2017
Mesajlar
148
Excel Vers. ve Dili
ofis 2013
öncelikle elinize sağlık, bunu windows pano şeklinde kullanmak mümkün mü ? yani son kopyaladiğim 4 veriyi (yazı + ekran görüntüsü gibi ) 1 seferde yapıştırabilirmiyiz ?
 
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
öncelikle elinize sağlık, bunu windows pano şeklinde kullanmak mümkün mü ? yani son kopyaladiğim 4 veriyi (yazı + ekran görüntüsü gibi ) 1 seferde yapıştırabilirmiyiz ?
Mevcut durumda text olarak son kopyalanan bilgiyi okuyup işlem yapıyor.
Resim kopyalama ile ilgili bir yapı yok. Autoit script ile yapılabilir.
Sayac sıfırlanır. Sonrasında panodan okunan 4 bilgi saklanır.
Ekranın resmi çekilir önce 4 bilgi sonra resim ilgili yere yapıştırılır.
Resim yapıştırma konusunu hiç denemedim. Ancak yapılabilir.
Biraz Autoit çalışmak lazım. :)
 
Üst