نمایش نتایج 1 تا 6 از 6

نام تاپیک: چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

  1. #1

    Unhappy چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

    سلام
    راستش من تازه اسمبلی رو شروع کردم و اطلاعاتم بسیار کمه
    میخوام یه برنامه ای بنویسم که اطلاعات تعدادی دانشجو مثلا نام دانشجو رو در محیط گرافیکی بگیره و در یک فایل ذخیره کنه-میخوام بدونم چه جوری میشه 2 محیط گرافیکی متن از صفحه کلید گرفت ؟؟
    مثلtext box در #cکه متنو واردش میکنی یعنی مکان نما برای دریافت فعال باشه
    اصلا همچین چیزی امکان داره؟؟؟؟؟؟؟؟؟؟
    خواهش می کنم اگه چیزی میدونید راهنماییم کنید
    ممنون میشم
    آخرین ویرایش به وسیله maryam abs : جمعه 14 مرداد 1390 در 22:22 عصر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    Thumbs up نقل قول: چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

    سلام دوست عزیز،
    برای این کار باید از یه کامپایلر 32 بیتی مثل FASM استفاده کنی، البته برای برنامه نویس ویندوز MASM مرسوم تره.
    این هم یه نمونه ی ساده از FASM برای یه برنامه ی تحت ویندوز که 2 تا TextBox داره و چند تا چیز دیگه و ورودی می گیره و بر اساس اون ورودی یه کاری می کنه (یه MessageBox نشون می ده):


    ; DialogBox example

    format PE GUI 4.0
    entry start

    include 'win32a.inc'

    ID_CAPTION = 101
    ID_MESSAGE = 102
    ID_ICONERROR = 201
    ID_ICONINFORMATION = 202
    ID_ICONQUESTION = 203
    ID_ICONWARNING = 204
    ID_TOPMOST = 301

    section '.data' data readable writeable

    flags dd ?
    caption rb 40h
    message rb 100h

    section '.code' code readable executable

    start:

    invoke GetModuleHandle,0
    invoke DialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0
    or eax,eax
    jz exit
    invoke MessageBox,HWND_DESKTOP,message,caption,[flags]
    exit:
    invoke ExitProcess,0

    proc DialogProc hwnddlg,msg,wparam,lparam
    push ebx esi edi
    cmp [msg],WM_INITDIALOG
    je wminitdialog
    cmp [msg],WM_COMMAND
    je wmcommand
    cmp [msg],WM_CLOSE
    je wmclose
    xor eax,eax
    jmp finish
    wminitdialog:
    invoke CheckRadioButton,[hwnddlg],ID_ICONERROR,ID_ICONWARNING,ID_ICONINFORMATION
    jmp processed
    wmcommand:
    cmp [wparam],BN_CLICKED shl 16 + IDCANCEL
    je wmclose
    cmp [wparam],BN_CLICKED shl 16 + IDOK
    jne processed
    invoke GetDlgItemText,[hwnddlg],ID_CAPTION,caption,40h
    invoke GetDlgItemText,[hwnddlg],ID_MESSAGE,message,100h
    mov [flags],MB_OK
    invoke IsDlgButtonChecked,[hwnddlg],ID_ICONERROR
    cmp eax,BST_CHECKED
    jne iconerror_ok
    or [flags],MB_ICONERROR
    iconerror_ok:
    invoke IsDlgButtonChecked,[hwnddlg],ID_ICONINFORMATION
    cmp eax,BST_CHECKED
    jne iconinformation_ok
    or [flags],MB_ICONINFORMATION
    iconinformation_ok:
    invoke IsDlgButtonChecked,[hwnddlg],ID_ICONQUESTION
    cmp eax,BST_CHECKED
    jne iconquestion_ok
    or [flags],MB_ICONQUESTION
    iconquestion_ok:
    invoke IsDlgButtonChecked,[hwnddlg],ID_ICONWARNING
    cmp eax,BST_CHECKED
    jne iconwarning_ok
    or [flags],MB_ICONWARNING
    iconwarning_ok:
    invoke IsDlgButtonChecked,[hwnddlg],ID_TOPMOST
    cmp eax,BST_CHECKED
    jne topmost_ok
    or [flags],MB_TOPMOST
    topmost_ok:
    invoke EndDialog,[hwnddlg],1
    jmp processed
    wmclose:
    invoke EndDialog,[hwnddlg],0
    processed:
    mov eax,1
    finish:
    pop edi esi ebx
    ret
    endp

    section '.idata' import data readable writeable

    library kernel,'KERNEL32.DLL',\
    user,'USER32.DLL'

    import kernel,\
    GetModuleHandle,'GetModuleHandleA',\
    ExitProcess,'ExitProcess'

    import user,\
    DialogBoxParam,'DialogBoxParamA',\
    CheckRadioButton,'CheckRadioButton',\
    GetDlgItemText,'GetDlgItemTextA',\
    IsDlgButtonChecked,'IsDlgButtonChecked',\
    MessageBox,'MessageBoxA',\
    EndDialog,'EndDialog'

    section '.rsrc' resource data readable

    directory RT_DIALOG,dialogs

    resource dialogs,\
    37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration

    dialog demonstration,'Create message box',70,70,190,175,WS_CAPTION+WS_POPUP+WS_SYSMENU+ DS_MODALFRAME
    dialogitem 'STATIC','&Caption:',-1,10,10,70,8,WS_VISIBLE
    dialogitem 'EDIT','',ID_CAPTION,10,20,170,13,WS_VISIBLE+WS_BO RDER+WS_TABSTOP
    dialogitem 'STATIC','&Message:',-1,10,40,70,8,WS_VISIBLE
    dialogitem 'EDIT','',ID_MESSAGE,10,50,170,13,WS_VISIBLE+WS_BO RDER+WS_TABSTOP+ES_AUTOHSCROLL
    dialogitem 'BUTTON','&Icon',-1,10,70,80,70,WS_VISIBLE+BS_GROUPBOX
    dialogitem 'BUTTON','&Error',ID_ICONERROR,20,82,60,13,WS_VISI BLE+BS_AUTORADIOBUTTON+WS_TABSTOP+WS_GROUP
    dialogitem 'BUTTON','I&nformation',ID_ICONINFORMATION,20,95,6 0,13,WS_VISIBLE+BS_AUTORADIOBUTTON
    dialogitem 'BUTTON','&Question',ID_ICONQUESTION,20,108,60,13, WS_VISIBLE+BS_AUTORADIOBUTTON
    dialogitem 'BUTTON','&Warning',ID_ICONWARNING,20,121,60,13,WS _VISIBLE+BS_AUTORADIOBUTTON
    dialogitem 'BUTTON','&Style',-1,100,70,80,70,WS_VISIBLE+BS_GROUPBOX
    dialogitem 'BUTTON','&Top most',ID_TOPMOST,110,82,60,13,WS_VISIBLE+WS_TABSTO P+BS_AUTOCHECKBOX
    dialogitem 'BUTTON','OK',IDOK,85,150,45,15,WS_VISIBLE+WS_TABS TOP+BS_DEFPUSHBUTTON
    dialogitem 'BUTTON','C&ancel',IDCANCEL,135,150,45,15,WS_VISIB LE+WS_TABSTOP+BS_PUSHBUTTON
    enddialog

  3. #3

    نقل قول: چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

    سلام ممنون به خاطر جوابی که دادین
    ولی من یه جاهایی از این کد یعنی بیشترش رو نمیفهمم
    راه سادهتری وجود نداره برا کسی که تازه اسمبلی رو شروع کرده؟؟
    یعنی یه مستطیل 2 محیط گرافیکی با یه مختصای که یه مکان نما داشته باشه که اطلاعات رو از صفحه کلید بگیره
    با وقفه ها امکانش نیست این کارو انجام داد؟؟؟
    بازم ممنوونم به خاطر جوابتون

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

    ببینید شما بالاخره باید مشخص کنید چه نوع برنامه ای می خواید بنویسید، مثلا Console Application باشه یا Win32 Application، اگه می خواید Textbox و یا Control های دیگه ای روی Form تون بذارید، باید Win32 App بنویسید، ولی اگه می خواید از وقفه استفاده کنید مسئله فرق می کنه و مثل برنامه های DOS در می یاد. اون کدی که من دادم Win32 App بود توی Flat ASseMbler.
    ضمنا منظورتون از محیط گرافیکی محیط Windows هست یا یه حالت گرافیکی توی برنامه های Console؟

  5. #5

    نقل قول: چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

    منظورم حالت گرافیکی توی برنامه های کنسول و مثل برنامه های dos واصلا نمیخوام شبیه windowsباشه
    در ضمن کامپایلری که دارم masm هستش

  6. #6

    نقل قول: چگونگی دریافت اطلاعات از صفحه کلید در محیط گرافیکی

    شما میتونید برای رفتن به محیط گرافیکی در اسمبلی از وقفه 10h استفاده کنید .
        MOV AH , 00H
    MOV AL , 12H
    INT 10H

    اگه 12 رو به 3 تغییر بدید فکر کنم وارد مود متنی میشید .
    برای دریافت اطلاعات از صفحه کلید هم خیلی راحت میتونید از توابع بایوس استفاده کنید .
    من قبلا برای درس زبان ماشین یک سیستم عامل نوشتم بعضی از توابع رو اینجا براتون قرار میدم امیدوارم بکارتون بیاد.

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; PUTC ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    PUTC PROC
    PUSH AX
    PUSH BX
    MOV AH, 0EH
    MOV BL, 07H
    MOV BH, 00H
    INT 10H
    POP BX
    POP AX
    RET
    PUTC ENDP
    ;========================================
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; PUTS ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;LEA SI, YOURTEXT
    PUTS PROC
    PUSH AX
    _PUT: LODSB
    CMP AL, 0
    JZ _EXIT
    CALL PUTC
    JMP _PUT
    _EXIT:
    POP AX
    RET
    PUTS ENDP
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


    برای دریافت از کاربر:
    GETNUM:
    Push SI
    Push DX
    Push AX


    LEA SI, GETNUMMSG
    CALL PUTS
    MOV DX,8
    LEA DI, NUM
    RD: MOV AH,00
    INT 16H
    CALL PUTC
    MOV BYTE PTR[DI],AL
    INC DI
    DEC DX
    CMP AL,13
    JE GetOut
    CMP DX,0
    JNZ RD
    GetOut:

    Pop AX
    Pop DX
    Pop SI
    RET

    بخش اسمبلی و زبان ماشین اینجا هم فعاله و نمونه های مختلف و خوبی داره : http://forum.ustmb.ir/
    آخرین ویرایش به وسیله Master. : جمعه 08 دی 1391 در 14:08 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •