Jump to content

Search the Community

Showing results for tags 'Örnek ve Anlatım'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • TnC Genel
    • Reklam-Bağış-Sponsorluk
    • Duyurular
  • Modifiye Edilmiş İşletim Sistemleri
    • Windows 11
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows Diğer
    • Windows Xp
    • Diğer İşletim Sistemleri
    • MultiBoot Sistemler
    • Linux Distributions
  • Bilgisayar Dünyası Genel
    • Her Zaman Gerekliler
    • Yazılım
    • Donanım
    • Sosyal Medya - Anında Mesajlaşma
    • Yararlı Linkler
  • TnC PROGRAM-APPZ
    • TNC-TR Çalışmaları
    • Program-Appz
    • Program-Appz - Ebook İstek
    • AIO
    • Portable Programlar
    • Türkçe Yamalar
    • Katılımsız - Unattended
  • Programlama
    • AutoIT
    • AutoPlay Media Studio
    • C#
  • Webmaster
    • Webmaster Sorunları & Çözüm Yolları
    • Hosting & Domain
  • TnC Multimedya
    • Multimedya Istek
    • Kendi Müziğiniz
  • TnC Oyun - Games
    • Oyun-Games
    • Oyun İstek
  • Cep Telefonu - Mobile
    • GSM Bilgi Paylaşımı
    • GSM Multimedya
    • iPhone / iPod
    • Android
    • Diğer GSM Program & Oyun
  • TnC Diğer
    • Teknoloji Haberleri
    • Alım-Satım
    • Kültür-Sanat
    • Sohbet-Chat
    • Çöp Kutusu
    • Anketler
  • Haberler Deneme
  • Olta Balıkçıları Kulübü's Herkes Ekipmanını Paylaşsın
  • Haritacılar's Konular
  • PUBG Oyuncuları's Konular
  • Satranç - Chess's Konular

Calendars

  • Community Calendar
  • Satranç - Chess's Takvim Etkinlikleri

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Facebook


Skype


Twitter


Google+


Steam



Found 1 result

  1. [b][font=Tahoma]İstek üzerine DllCall komutunu ve kullanım yerlerini,sizlere kendimce basit olarak anlatmaya çalışacağım ilgili arkadaşlar konuyadestek verirse çok daha yararlı bir paylaşım olacağına inanıyorum.Bu kod autoitprojelerinde yeri önemlidir.Programlamaya ilgilenen arkadaşlar bu tarz kodlaragenelde ihtiyaç duyarlar. Bu tarz kodları aktif olarak kullanmak için Sistemkaynaklarını ve API* leri bilmek gerektiğini düşünüyorum.En basit olarakgörülen yerleri kütüphaneler ve hali hazırdaki fonksiyonlardır.Genelde WinAPIve GDIPlus gibi sistem kütüphanelerinden dll çağırılarak bu tarz fonksiyonlaryazılabilir.[/font][/b] [left][u]DllCall:[/u][/left] [b][font=Tahoma]Adı üstünde olduğu gibi dinamik olarak Dll* çağırma işlemiolarak bu kodu açıklayabiliriz.[/font][/b] [b][size=4][u]Kullanım:[/u][/size][/b] [b][font=Tahoma]DllCall ( "dll", "return type","function" [, type1, param1 [, type n, param n]] )[/font][/b] [left][b][font=Tahoma]Bu şekilde yazım şekli var bunun yanında en büyük sıkıntı [/font][/b][b][font=Tahoma]yaşanılan yer parametre olayı.Hangi dll hangi parametre ile nerde nasıl [/font][/b][b][font=Tahoma]çalıştığını programcılar az çok bilir bunlar genelde microsoftun msdn [/font][/b][b][font=Tahoma]kütüphanelerinden bulabilirsiniz ama ben burada hazır olarak kod vereceğimden [/font][/b][b][font=Tahoma]az çok mantığını anlayacağınızı ve hangi dll nerde çağırıldığını öğrenmiş [/font][/b][b][font=Tahoma]olacaksınız.Bu arada altını çizerek belirtmek isteğim yer ise bu kod tek başına [/font][/b][b][font=Tahoma]fazla bir şey ifade etmiyor bunların yanında DllOpen,[/font][/b][b][font=Tahoma]DllClose, [/font][/b][b][font=Tahoma]DllStructCreate, DllStructGetData vs gibi kodları da [/font][/b][b][font=Tahoma]bilmeniz şart gibi gözüküyor ancak o zaman iyi bir şekilde konuyu [/font][/b][b][font=Tahoma]anlayabilrisiniz en azından ben böyle düşünüyorum.Bu kodların kullanım [/font][/b][b][font=Tahoma]yelpazesi geniştir bunu bilin yani [img]http://www.tnctr.com/public/style_emoticons/default/smile.gif[/img][/font][/b][/left] [b][font=Tahoma]Help dosyasında da benim bu yazdıklarım ile üç aşağı beş yukarı aynı konuyu uzatmayalım parametre ve geçerli türleri help dosyasından ulaşabilirsiniz. [/font][/b] [b][size=3][font=Tahoma][u]Sistem kütüphane ve API türlerindenbildiğim birkaç örnek:[/u][/font][/size][/b] [size=4][b][font=Tahoma]user32.dll [/font][/b][/size] [size=3][b][font=Tahoma]Windows kullanıcı arabirimi(Pencere taşıma, temel UI işlevleri ve) ilgiliWindows API fonksiyonları içeren bir modüldür.En cok kullanılanve geniş kapsamlı bir dll' dir.[/font][/b][/size] [size=4][b][font=Tahoma]Kernel32.dll[/font][/b][/size] [size=3][b][font=Tahoma]Microsoft Windows'un en önemliişlevsel çekirdek bağlantısını sağlayan modüldür.Sistem çekirdeği çoğukütüphaneyi ve apileri birbirine bağlar. Kernel32.dll dosyası bellekyönetimi, giriş / çıkış işlemleri ve kesmeleri ele alır.[/font][/b][/size] [size=4][b][font=Tahoma]winmm.dll[/font][/b][/size] [size=3][b][font=Tahoma]Bu dll düşük seviye sesve joystick fonksiyonları içeren Windows Çokluortam API içinbir modüldür.Bu modül ile ses çaldırma vs gibi işlemler yapılır.[/font][/b][/size] [size=4][b][font=Tahoma]psapi.dll[/font][/b][/size] [size=3][b][font=Tahoma]Bu modül işlem durumu içindestek sağlayan bir kütüphane dosyasıdır.Kernel ile kullanıldığındadoğru parametre ile ram optimizasyon işlemleri bile yapabilirsiniz.[/font][/b][/size] [size=4][b][font=Tahoma]GDI32.dll[/font][/b][/size] [b][size=3]Bu dll basit 2 boyutlunesneler yaratmak ve Windows pencereleri yardımcı GDI (grafik aygıt arabirimi) fonksiyonları içerir.Grafik ileilgili olduğu için en çok sevdiğim apidir ayrıca üye başlığım GDI Plus Plus dır.[/size][/b][font=Tahoma] [/font][img]http://www.tnctr.com/public/style_emoticons/default/smile.gif[/img] [size=4][b][font=Tahoma]wininet.dll[/font][/b][/size] [size=3][b][font=Tahoma]Windows uygulamaları tarafındankullanılan Internet ile ilgili işlevlerini içeren bir modüldür.[/font][/b][/size] [size=4][b][font=Tahoma]Shell32.dll[/font][/b][/size] [size=3][b][font=Tahoma]Web sayfaları ve dosyalarıaçarken kullanılan Windows Shell API fonksiyonlarını içerenbir kütüphanedir. İşletim sistemi modifiye ile uğraşan arkadaşlar iyibilir.[/font][/b][/size] [size=3][b][font=Tahoma]Şimdi çalışmalarınız dakullanabileceğiniz örnek kodlara geçelim.Elimden geldiğince fonksiyon şeklindeyazmaya çalışacağım bu şekilde daha iyi anlayabilecek ve çalışmalarını dasadece değişkenleri yazarak daha kolay kullanabileceksiniz.[/font][/b] [b][font=Tahoma]Burada ki kod ile yaptığımız işlemuser32.dll kütüphanesini MessageBox parametresi altında çağırarak basit olarakmesaj cıktısı almamızdır.Help dosyasındaki ilk örneğin fonksiyon şeklindeyazılmış halidir.[/font][/b][/size] [codebox]_MsgBox(64, "Bilgi", "İlk Çalışmamız" & @CRLF & @CRLF & "Telif Hakkı © " & @YEAR & " - " & @UserName) Func _MsgBox($MsgBoxType, $MsgBoxTitle, $MsgBoxText, $MainGUI = 0) $RTN = DllCall("user32.dll", "int", "MessageBox", _ "hwnd", $MainGUI, _ "str", $MsgBoxText, _ "str", $MsgBoxTitle, _ "int", $MsgBoxType) Return $RTN[0] EndFunc ;==>_MsgBox [/codebox] [font=Tahoma][b]Farklı bir örnek daha verelim Yine user32.dll kullanarak güvenli mod da olupolmadığınızı bu fonksiyonla anlayabilirsiniz[/b][/font] [codebox] If _Safe_Mode_Check() Then MsgBox(64, "Güvenli Mod", "Şimdi Güvenli Mod'dasınız.") Func _Safe_Mode_Check() Local $RTN = DllCall("user32.dll", "int", "GetSystemMetrics", "long", 67) Return $RTN[0] EndFunc ;==>_Safe_Mode_Check [/codebox] [b][font=Tahoma]Bu örnekte _Ispressed fonksiyonunu en basit halagetirdim.Kısaca form esc tuşuna bastığınız da formu kapatır.Başka bir tuş ilebaşka bir işlem de yaptırabilirsiniz.[/font][/b] [codebox] Local $GUI = GUICreate("Test", 300, 143, 192, 124) Local $EXIT = GUICtrlCreateButton("Çıkış Yap", 64, 80, 137, 25) GUISetState(@SW_SHOW) While 1 Local $ESC = DllCall("User32.dll", "short", "GetAsyncKeyState", "int", 0x1B);Esc tuşu daha fazlası için _IsPressed fonksiyonunu inceleyin If $ESC[0] <> 0 Then Exit Switch GUIGetMsg() Case -3, $EXIT Exit EndSwitch WEnd [/codebox] [b][font=Tahoma]Oturumu kitlemek için basit bir fonksiyon aslında buradadeğişkeni döndürmeye gerek yok ama böyle orj duruyor [img]http://www.tnctr.com/public/style_emoticons/default/tongue.gif[/img][/font][/b] [codebox] Func _SK_LOGON_TEST() Local $RTN = DllCall("user32.dll", "Int", "LockWorkStation") Return $RTN[0] EndIf EndFunc ;==>_SK_LOGON_TEST [/codebox] [b][font=Tahoma]Burada caps lock tuşu açıksa, tuş kapatılana kadar hatamesajı verdirdik .İsteğiniz anahatarı girip farklı işlemler yaptırabilirsiniz.[/font][/b] [codebox] While _Key_Detect("14") <> 0 MsgBox(16, "Capslock açık!", "Lütfen CapsLock Tuşunu Kapatın") WEnd Func _Key_Detect($HexKey, $DLL = 'user32.dll') Local $RTN = DllCall($DLL, "short", "GetKeyState", "int", '0x' & $HexKey) If Not @error And BitAND($RTN[0], 0xFF) = 1 Then Return 1 Return 0 EndFunc ;==>_Key_Detect [/codebox] [b][font=Tahoma]Şimdi Farklı bir Dll den görüntü almak için işlem çağıralım.[/font][/b] [codebox] ; Tam Ekran Görüntüsü Almak için ; Parametreler - Dosyaismi - jpeg kalitesi DllCall("captdll.dll", "int", "CaptureScreen", "str", "Tam Ekran.jpg", "int", 85) ; Belirli Alanlardan Ekran Görüntüsü Almak için ; Parametreler - filename, next four: left, top, width, height. Last one - jpeg quality. ; BMP uzantılı resim dosyalarının görüntü kalitesini negatif sayı ile yapabilisiniz DllCall("captdll.dll", "int", "CaptureRegion", "str", "dump_partial", "int", 100, "int", 100, "int", 300, "int", 200, "int", -1) [/codebox] [b]Captdll.dll Dosyası:[/b] [code]https://www.box.com/s/d33517a219a2de534799[/code] [b]Şimdi Programımıza Windows'un Kendi hakkında arayüzüne isteğimiz bilgileri yazalım:[/b] [codebox]Func _ABOUT() Local $RTN = DllCall("shell32.dll", "long", "ShellAboutA", "ptr", "hwnd", "str", "TNC SCREEN CAPTURE", "str", "© " & @YEAR & " SimpsoN_Bart | TNCTR.COM", "long", 0) If @error Then SetError(1, 0, 0) Return $RTN EndFunc ;==>_ABOUT[/codebox] [b]Yaptığımız bazı işlemler sonucunda explorere restart atmamız gerekebilir daha kolay bir yöntemi ise güncellemektir.Bu şekilde kolayca güncelleyebilirsiniz.[/b] [codebox]Func _Update_Explorer($CLASS = "[CLASS:SHELLDLL_DefView]") Local $bOld = Opt("WinSearchChildren", True) Local $a = WinList($CLASS) For $I = 0 To UBound($a) - 1 DllCall("user32.dll", "long", "SendMessage", "hwnd", $a[$I][1], "int", 0x111, "int", 28931, "int", 0) Next Opt("WinSearchChildren", $bOld) EndFunc ;==>_Update_Explorer[/codebox] [b]Şimdide soundplay dışında winmm.dll ile ses çaldıralım:[/b] [codebox]_PLAY_SOUND('ses.wav') Func _PLAY_SOUND($SOUND) Local $RTN = DllCall('winmm.dll', 'int', 'PlaySoundW', 'wstr', $SOUND, 'ptr', 0, 'dword', BitOR(0x00000001, 0x00020000, 0x00000008)) If @error Then Return SetError(1, 0, 0) Return $RTN[0] EndFunc ;==>_PLAY_SOUND[/codebox] [b]Farklı bir örnek daha, siteden veri çekerek tarih/zamanı güncelleyelim.Kodları ben yazmadım sanırım blackman12 yazmıştı.Kendisine teşekkürler..[/b] [codebox] Func _TIME_UPDATE() $text = BinaryToString(InetRead('http://www.saatkac.com', 1)) $s_Start = StringRegExpReplace('', "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)", "\\$1") $s_End = StringRegExpReplace("", "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)", "\\$1") $a = StringRegExp($text, "(?s)(?i)" & $s_Start & "(.*?)" & $s_End, 3) $s_Start = StringRegExpReplace('', "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)", "\\$1") $b = StringRegExp($text, "(?s)(?i)" & $s_Start & "(.*?)" & $s_End, 3) $tarihzaman = DllStructCreate("word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds") DllStructSetData($tarihzaman, "Month", @MON) DllStructSetData($tarihzaman, "Day", @MDAY) DllStructSetData($tarihzaman, "Year", @YEAR) DllStructSetData($tarihzaman, "Hour", $a[0]) DllStructSetData($tarihzaman, "Minute", $b[0]) DllStructSetData($tarihzaman, "Second", 0) DllStructSetData($tarihzaman, "MSeconds", 0) DllCall("kernel32.dll", "bool", "SetLocalTime", "ptr", DllStructGetPtr($tarihzaman)) EndFunc ;==>_TIME_UPDATE [/codebox] [b]İşlem durdurup devam ettirmek için geliştirdiğim fonksiyonlar aslında bunları kendime saklıyordum ama neyse.Kötü amaç için kullanmayın.![/b] [codebox] Func _PROCESS_STOP($PROCESS) $PROCESS_ID = ProcessExists($PROCESS) If $PROCESS_ID Then $PR_HANDLE = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PROCESS_ID) $NT_SUCESS = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $PR_HANDLE[0]) DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $PR_HANDLE) If IsArray($NT_SUCESS) Then Return 1 Else SetError(1) Return 0 EndIf Else SetError(2) Return 0 EndIf EndFunc ;==>_PROCESS_STOP Func _PROCESS_CONTINUE($PROCESS) $PROCESS_ID = ProcessExists($PROCESS) If $PROCESS_ID Then $PR_HANDLE = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PROCESS_ID) $NT_SUCESS = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $PR_HANDLE[0]) DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $PR_HANDLE) If IsArray($NT_SUCESS) Then Return 1 Else SetError(1) Return 0 EndIf Else SetError(2) Return 0 EndIf EndFunc ;==>_PROCESS_CONTINUE [/codebox] [b]Windows panosunu temizlemek için ufak bir fonksiyon aslında cliput tek başına bu işi yapıyor maksat parametre kullanımını görmek [img]http://www.tnctr.com/public/style_emoticons/default/wink.gif[/img][/b] [codebox] Func _ClipEmpty() Local $RESULT = False DllCall('user32.dll', 'int', 'OpenClipboard', 'hwnd', 0) If @error = 0 Then DllCall('user32.dll', 'int', 'EmptyClipboard') If @error = 0 Then $RESULT = 1 DllCall('user32.dll', 'int', 'CloseClipboard') If $RESULT Then Return 1 EndIf DllCall('user32.dll', 'int', 'CloseClipboard') Return 0 EndFunc ;==>_ClipEmpty[/codebox] [b]Beep komutunun orjinal halini de gösterelim.Bu seslerle bütün notaları bile çalabilirsiniz. [img]http://www.tnctr.com/public/style_emoticons/default/smile.gif[/img][/b] [codebox]_Beep(500, 1000) Func _Beep($Frequency, $Duration) DllCall ("kernel32.dll", "long", "Beep", "long", $Frequency, "long", $Duration) EndFunc[/codebox] [b]Beep demişken şimdi de Windows'un kendi mesaj beeplerinden örnek verelim;[/b] [b]Ayrıca bkz.[/b] [code]http://msdn.microsoft.com/en-us/library/windows/desktop/ms680356(v=vs.85).aspx[/code] [codebox]_MessageBeep(0xFFFFFFFF) ;Basit beep _MessageBeep(0x00000040) ;MB_ICONASTERISK _MessageBeep(0x00000010) ;MB_IConerror Func _MessageBeep($Value) DllCall("user32.dll", "int", "MessageBeep", "int", $Value) EndFunc ;==>_MessageBeep[/codebox] [size=4][font=tahoma, geneva, sans-serif][b]Biraz internet bağlantı işlemi yapalım.Net Bağlantısı var mı yok mu görelim.[/b][/font][/size] [codebox]If _CHECK_CONNECTION("http://www.google.com.tr/") = True Then MsgBox(64,"Bilgi","Internet Bağlantısı var.") Else MsgBox(16,"Bilgi","Internet Bağlantısı yok.") EndIf Func _CHECK_CONNECTION($URL = "") Local $RESULT = DllCall("wininet.dll", "int", "InternetCheckConnection", "str", $URL, "uint", 0x00000001, "uint", 0) If @error Then Return SetError(-1, 0, "") Return SetError($RESULT[0], $RESULT[1], $RESULT[0]) EndFunc ;==>_CHECK_CONNECTION[/codebox] [b][size=4]Sistem çubuğundaki çalışan programları kapattığımız halde yine gözüküyorsa yenilemeniz gerekir.[/size][/b] [codebox] Func _UpdateTray() Local $iMode = Opt("WinTitleMatchMode", 4) Local $hControl = ControlGetHandle("[CLASS:Shell_TrayWnd]", "", "[CLASSNN:ToolbarWindow321]") Local $acSize = WinGetClientSize($hControl) For $x = 0 To $acSize[0] Step 5 For $y = 0 To $acSize[1] Step 5 DllCall("user32.dll", "lparam", "SendMessage", "hwnd", $hControl, "int", 0x0200, "wparam", 0, "lparam", BitOR($y * 0x10000, BitAND($x, 0xFFFF))) Next Next Opt("WinTitleMatchMode", $iMode) EndFunc ;==>_UpdateTray[/codebox] [b][size=4]Şimdi güzel birkaç örnek daha verelim.DLLOPEN ile api dosyamızı açalım ve windowsun aero özelliği var mı bakalım, varsa yoksa açalım varsa kapatalım.[/size][/b] [b][size=4]Örnekte aero özelliğini açma/kapama ve aero özelliği olup olmadığını gösteren fonksiyonlar mevcut hepsini bi arada kullandık. [img]http://www.tnctr.com//public/style_emoticons/default/wink.png[/img][/size][/b] [codebox] Global $DWMAPIDLL = DllOpen("dwmapi.dll") If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_7" Then If _IsAeroEnable() = 0 Then _EnableDisableAero(False) EndIf $Form1 = GUICreate("Form1", 294, 136) GUISetState() While 1 If GUIGetMsg() = -3 Then Exit WEnd Func _EnableDisableAero($ENABLE = True) ;True/False veya 1/0 Local $RESULT = DllCall($DWMAPIDLL, "int", "DwmEnableComposition", "int", $ENABLE) If @error Then Return SetError(@error, 0, 0) Return $RESULT[0] EndFunc ;==>_EnableDisableAero Func _IsAeroEnable() Local $RESULT = DllCall($DWMAPIDLL, "int", "DwmIsCompositionEnabled", "str", "") If @error Then Return SetError(@error, 0, 0) Return StringReplace(StringReplace(Asc($RESULT[1]), "1", True), "0", False) EndFunc ;==>_IsAeroEnable[/codebox] [b][font=Tahoma]Arkadaşlar şimdilik bu kadar elimdeki diğer ileri düzeyörnekleri(Monitör açma/kapatma, Dosya Kitleme,Ekran Çözünürlüğünüdeğiştirme,USB Aygıt çıkarma,Ram Optimize vs)Yarın ilgili arkadaşlar ile düzenledikten sonra paylaşacağım bize takip etmeye devam edin [img]http://www.tnctr.com/public/style_emoticons/default/smile.gif[/img][/font][/b]
×
×
  • Create New...