Jump to content

MostWanted

Emekli
  • Posts

    3255
  • Joined

  • Last visited

Posts posted by MostWanted

  1. Bu konu "TnC Sevenler Derneği" forumundan "TNC-TR Çalışmaları" forumuna taşınmıştır.

    Program Filebot gibi isimlendirme işlemini muazzam yapan bir program bulduğum için daha geliştirilmeyecektir. Sizin de o programı kullanmanızı tavsiye ederim fakat basit ve Türkçe bir şeyler arıyorsanız hala bunu kullanabilirsiniz.

     

    http://www.tnctr.com/topic/269473-filebot-42-x86x64-portable/

     

    Programın Kaynak kodlarına erişmek için:

     

    http://www.tnctr.com/topic/278977-film-ysimlendirici-20-kaynak-kod/
  2. MYgTZ0U.png

     

    http://www.tnctr.com/topic/257747-film-ysimlendirici-20-2014/

     

    Konusundaki programın kaynak kodlarını eğitim amaçlı yayınlıyorum. Programı yazmaya 3 sene önce autoitte başlamıştım, o yüzden programın bazı yerleri acemiliklerle dolu. Ayrıca bazı yerlerini geliştirmeye devam ederken öylece bıraktım fakat genel olarak orta seviyede C# bilenler için güzel bir örnek olacağını düşünüyorum.

     

    Projeden öğrenebilecekleriniz:

    • OpenSubtitle sitesinden altyazı bulmak
    • HTML parse etmek (xpath kullanarak)
    • External DLL (kütüphaneyi)'yi exeye gömmek
    • Treeview işlemleri
    • C# Ayarlar kullanımı (önemli bir özellik)
    • Liste kullanımı
    • Zip Dosyası çıkarma
    • Path manipulasyonları
    • Düzenli ifadeler (Regular Expressions) (tamamlanmamış)
    • Rekürsif fonksiyonlar
    • C# Resource Management

    Daha aklıma gelmeyen bir sürü şeyi daha bulabilirsiniz. Programın bazı yerlerinde açıklayıcı yorumlar var fakat genel olarak pek açık olmayan yerleri çok. Şu kod neyi yapıyor, nasıl yapıyor diye sorarsanız ben ve arkadaşlarım yardımcı olmaya çalışacaktır. Kolay gelsin.

    https://db.tt/qWq2XhBY

    Düzenleme: Ağaç üzerindeki edit olayındaki çalışırken bırakmışım programı, kodları yazılı biraz fakat hatalı ve hata veriyor haberiniz olsun. :)

  3. Kod bende sorunsuz çalışıyor. Sizin verdiğiniz hata ekranında ise hatanın ShelExecute kısmında değil de $hov kısmında yani GUIGetCursorInfo fonksiyonunda hata olduğuna işaret ediyor. Bir sebepten ötürü konum bilgisini veya tıklama bilgisini alamıyor olabilir. Bunun yerine başka bir yöntemle kodu aşağıdaki gibi düzelttim. GUI düzenlemelerinizi aşağıdaki yöntemle de yapabilirsiniz. Yapmaya çalıştığınız şeyin tam olarak aynısını yapmakta. Sorun olursa tekrar bildirin, ilgilenelim.

    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    
    $Main = GUICreate('GUI', 200, 100)
    
    $hDownload1 = InetGet('https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif',@ScriptDir&'/paypal.gif')
    $Button = GUICtrlCreatePic('', 10, 35, 100,51)
    GUICtrlSetCursor(-1,0)
    iconbutton_1($Button)
    GUISetState()
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			exit
    		case $Button
    			ShellExecute("www.google.com")
    	EndSwitch
    WEnd
    
    
    Func iconbutton_1($control)
    	_GDIPlus_Startup()
    	$hwd = GUICtrlGetHandle($control)
    	$width = _WinAPI_GetClientWidth($hwd)
    	$height = _WinAPI_GetClientHeight($hwd)
    	$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hwd)
    	$hBitmap1 = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
    	$hBitmap1 = _ImageDrawicon($hBitmap1,@ScriptDir&'/paypal.gif',100,51)
    	$hBMP1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap1)
    	_WinAPI_DeleteObject(GUICtrlSendMsg($control, 0x0172, 0, $hBMP1))
    
    	_WinAPI_DeleteObject($hBMP1)
    	_GDIPlus_BitmapDispose($hBitmap1)
    	_GDIPlus_GraphicsDispose($hGraphic)
    	_GDIPlus_Shutdown()
    EndFunc
    
    Func _ImageDrawicon($hImage, $picture, $iW, $iH, $iX = 0, $iY = 0)
    	$hGraphic1 = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
    	$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphic1)
    	$hGraphic2 = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    	_GDIPlus_GraphicsDrawImageRect($hGraphic2, $hImage, 0, 0, $iW, $iH)
    	Global $icon = _GDIPlus_ImageLoadFromFile($picture)
    	_GDIPlus_GraphicsDrawImageRect($hGraphic2, $icon, $iX, $iY, $iW, $iH)
    	_GDIPlus_GraphicsDispose ($hGraphic2)
    	_GDIPlus_GraphicsDispose ($hGraphic1)
    	Return $hBitmap
    EndFunc
    
  4. Aslında bu gibi durumlarda backgroundworker daha iyi bir çözüm şöyleki backgroundworker kendisi zaten bi thread oluşturup onda çalışıyor ve oluşturmak, kontrol etmek normal thread'e göre daha kolay.Aslına bakarsanız backgroundworker tam olarak yukarda anlatılan durum için ortaya çıkmış bir konsept (MainUI thread'ini responsive(dondurmamak) yapmak). Android programlama ile uğraşanlar bunu iyi bilirler ve çokça kullanırlar.

  5. Programını ekran çözünürlüğüne göre değil de tıklatacağın programın penceresine göre yaparsan daha verimli olur. Bunun için ControlClick kullanmalısın.

     

    http://www.tnctr.com/topic/208007-autoit-yle-pencerelere-komut-goenderme/

     

    Bu konuda detaylıca nasıl kullanıldığını anlattım. İstersen help dosyasından da yardım alabilirsin. Kullanımı o kadar zor değil.

  6. Öyle bir yol yok ne yazık ki (bildiğim ve araştırdığım kadarıyla). Fakat neden böyle bir şey yapmaya çalıştığını söylersen belki başka bir yol bulabiliriz.

  7. Genelde verilen rakamların yazılım tarafında okunurken farklı gözükmesinin sebebi yazılım üreticilerinin kilobaytı gigabaytı 2'nin katı (üstel olarak) olarak hesaplarken, donanım üreticileri 10'nun katı olarak hesaplamasından dolayı. Tabi burda muhtemelen başka bi olaydan bahsediyorlardır. Daha fazla öğrenmek isteyenler için:

     

    http://searchstorage.techtarget.com/definition/byte

  8. Eğer ilk başta veri çekmekten bahsediyorsan iki tabloyu JOIN yapmalısın.O da şöyle olur, "SELECT adi, soyadi, grup.grup, vs vs FROM kullanıcı_table JOIN grup_table ON (kullanıcı_table.grup = grup_table.ID)". Tabi kullanıcı tablosunda grup idlerini sakladığını varsayarak yazdım bu sorguyu.

     

    Edit:Combobox verilerini grup tablosundan çekmelisin.

  9. Kullanıcı veritabanı ile grup veritabanı dediğin veritabanında bulunan tabloların sanırım. Comboboxunu doldurmak için "SELECT grup FROM grup_table" diyeceksin ama tabi ID'lerini de çekmek daha iyi olacaktır.Çünkü kayıt yapılırken kullanıcı tablosuna grup ID'si vereceksin.Ekleme yapmak içinse "INSERT INTO kullanici_table (sütun isimler )VALUES (değerleri)". Daha önce hiç sql bağlantı yazmadıysan http://www.dotnetperls.com/sqlconnectionburdan örneklerine bakabilirsin.

  10. Böyle bir sonuca varamazsın, daha önce de buna benzer bir hatanı paylaşmıştın forumda ve yine paylaşıyorsun. Anlamaktan ziyade ezberlemeye çalışıyorsun gibi geliyor bana.Bence sen olta tutmayı bilmeden tekneyle denize açılmışsın.O deniz seni ne yazık ki boğar. Görüyorum ki gerçekten öğrenmek istiyorsun ama bunun yolu acele getirmek, ezberlemek değil.Ve şunu da bilmen lazım ki programlamada gerçekten ingilizce çok önemli.Şimdi visual sana ne diyor mealini çevirelim:

     An object reference is required for the non-static field, method, or property

     

    Bir obje referansı için statik olmayan alan, metod veya özellik gerektirir. Yani ne diyor sen bi objeyi kullanmak istiyorsan bu "static" olmayan bi anlamda kullanılmalı. Şimdi bunun anlamı şöyle ki statik alanlar ile sınıf içinde tanımladığımız objeleri kullanamazsın ya da en anlayacağın dille textBox1 ile textBox2 senin sınıf objelerin olduğu için statik alanda kullanamazsın. Şimdi bu sana saçma geliyor olabilir istediğim şeyi istediğim yerde kullanırım falan fakat statik alanların programlama da kullanıldığı alanlar var ve bu durum buna ters, memoryden ötürü olan sorunlar var vs geniş konu. Sen static metodun ne için kullanıldığını bilmeden static metod yazsan sana hiç bir şey kazandırmaz ne yazık ki.

  11. Birincisi kullanım öyle değil ne yazık ki, programın ismini yazdığınız yere pid'sini yazmanız gerekiyor ve ayrıca kendi çocuk processiniz olarak çalıştırmanız gerekiyor (Örnekte olduğu gibi).Fakat ben kendi yazdığım bi programı denemek istedim, sonuç alamadım ne yazık ki, ama cmd'de çalışıyor, kodlamayla alakalı olabilir, kendi programınız için deneyip görmeniz gerek.Onun dışında programı çalıştırdığınız sistemin dil seçeneğini değiştirebilirsiniz.

×
×
  • Create New...