![]() |
| | #1 (permalink) |
Member | Gerekli olanlar; 1- Assembly ile Win32 kodu yazma isteği 2- Bir adet Windows 9x ile çalışan bilgisayar 3- Turbo Assembler 5.0 (TASM32.EXE, TLINK.EXE ve Win32 libraryleri yeterli) 4- Bir adet text editörü (Windowsun not defteri bile olabilir) 5- Win32 Programmers’ Reference Yukarıdaki 5 şey sizde varsa olaya başlayabiliriz. Örnek olsun diye ’marabaa televole’ şeklinde bir mesaj kutusu çıkaran bir program yazalım. Programı yazarken windows apilerini kullanmamız gerekecek. Geçen sayılardan birinde Melikşah’ın da belirttiği gibi API dediğimiz olay eskiden DOS’ta kullandığımız interrupt servislerine benzer bir olay. API konusunda geniş bilgiyi Win32 Programmers’ Ref. de bulabilirsiniz. Not: API konusunda bazı APIlerin sonunda ...A harfini görürsünüz. Bu ’A’ harfi o APInin 32 bitlik olduğunu gösterir. Mesela MessageBox 16 bitlik iken MessageBoxA 32 bitliktir. Amacımız ekrana bir mesaj kutusu çıkarmak olduğuna göre MessageBoxA APIsini kullanmamiz gerekecek (Win32.hlp dosyasında MessageBoxA ile ilgili bilgiyi bulabilirsiniz). Konuyu bulduysanız karşınızda aşağıdaki gibi bir şey göreceksiniz.[/COLOR][/B] int MessageBox( HWND hWnd, // handle of owner window LPCTSTR lpText, // address of text in message box LPCTSTR lpCaption, // address of title of message box UINT uType // style of message box ); Burada hWnd mesaj kutusunu görüntüleyen pencerenin handle numarası, LpText mesaj kutusunda görünecek olan yazının adresini, LpCaption mesaj kutusunun başlık çubuğuna yazılacak yazıyı (caption) ve uType ise mesaj kutusu tipini gösterir (Butonlar + Question, information vs..) Eğer ortalıkta daha pencere falan yokken bir mesaj kutusu görüntülenecekse haliyle hWnd=0 olacaktır. uType olayında ise mesaj kutusuna konulacak düğmeleri ve mesaj kutusunun iconunu ifade eden bir sayı bulunacaktır. (Ayrıntılı bilgi windows derleyicileri helpinde..) MessageBox ile ilgili bilmemiz gerekenler bunlar. Şimdi kodlamaya başlayabiliriz. ;MESAJ.ASM .386P Locals Jumps .Model Flat ,StdCall Yukarıdaki kısım derleyiciye yönelik olan parçalardır extrn ExitProcess : Proc extrn MessageBoxA : Proc Yukarıda external olarak kullanacağımız API’leri tanımladık. .Data baslik db "ho hoyt !",0 yazi db "Marabaa televole",0 Kod özelliği taşımayan bilgileri .Data ile ifade edilen alana yazıyoruz. Burada text yazıların sonunu #0 karakteri belirtir .Code Main: push 0 ;uType değeri stackte (Sadece Tamam düğmesi gösterilecek) push offset Baslik ;Başlık adresi stackte push offset Yazi ;Yazi adresi stackte push 0 ;Pencere yok, o yüzden hWnd değeri olarak 0 değerini stacke koyduk call MessageBoxA ;Mesaj kutusu gösterildi CALL ExitProcess ;Programın sonu.. (Kernel32.ExitProcess) End Main ;Burada da program bitti. Bu programı aşağıdaki şekilde derleyebilirsiniz. TASM32.EXE mesaj.asm /mx /m3 /z /q TLINK32 -x /Tpe /ap /c mesaj,mesaj,, import32.lib Alıntıdır. . . |
|
| | #3 (permalink) |
Moderator | tsk. arkadasim ben bunu ogrenmeye calisiyorum elimde gorsel set var ben tin tin ilerliyorum daha hizli nasil ogrenebilirim? birde Turbo Assembler 5.0 yazmissin bendekide Negatory Assembly Studio arasinda fark varmi hangisini kullanmaliyim? hangisi daha iyi? tsk. Konu arqadas tarafından (05-12-09 Saat 11:04 ) değiştirilmiştir.. Sebep: eksik |
|
![]() |
| Bookmarks |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Seçenekler | |
| Stil | |
| |