程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 匯編中使用打開對話框

匯編中使用打開對話框

編輯:匯編語言

如果從命令行參數中不能取得文件名,那麼我們就可以使用一個通用對話框(打開文件對話框)要求用戶選擇一個文件,從而取得要操作的文件對象。

---------------------------------------------------------------------
;文件名:16.asm,顯示一個打開對話框
    .386
    .model flat, stdcall
    option casemap:none
    include windows.inc
    include kernel32.inc
    include user32.inc
    include comdlg32.inc
    includelib kernel32.lib
    includelib user32.lib
    includelib comdlg32.lib
    .data
ofn      OPENFILENAME <0>           ;打開文件對話框要用到該結構
szFileName   db 256 dup(0)
szFilterString db '可執行文件(*.exe)',0,'*.exe',0,0 ;文件過濾器字符串
szMyTitle   db '請選擇要打開的文件', 0
szMessageTitle db '你選擇的文件是',0
    .code
GetFileNameFromDialog  proc
    mov ofn.lStructSize,sizeof ofn       ;結構的大小
    mov ofn.lpstrFilter,offset szFilterString  ;文件過濾器
    mov ofn.lpstrFile,offset szFileName     ;文件名的存放位置
    mov ofn.nMaxFile,256            ;文件名的最大長度
    mov ofn.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_LONGNAMES
    mov ofn.lpstrTitle,offset szMyTitle     ;“打開”對話框的標題
    invoke GetOpenFileName,addr ofn       ;顯示打開對話框
    ret
GetFileNameFromDialog  endp
Start:
    call GetFileNameFromDialog
    .if eax!=0         ;若選擇有文件,則顯示出來
    invoke MessageBoxA,NULL,addr szFileName,addr szMessageTitle,NULL
    .endif
    invoke ExitProcess,NULL   ;結束程序
    end Start
--------------------------------------------------------------------------

程序運行時的界面:

選擇一個文件後的顯示

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved