Win32ASM經驗點滴 (轉)
ASM點滴#1
作者:'Ates(to:ates@.net.tr">ates@anet.net.tr):namespace prefix = o ns = "urn:schemas--com::office" />
Q1.
Q2.
Q3.
Q4.
Q5. 目錄和目錄?
Q6. 開啟開始選單?
Q7.
Q8.
Q9.
Q10.
Q11.
Q12.
Q13.
Q14. 或程式?
Q15. 顯示連線對話方塊?
- 如何隱藏/顯示工作列?
"Shell_TrayWnd",0 ; 工作列的類名
invoke FindWindow,addr shell,NULL ; 先獲得控制程式碼,之後隱藏.
.if eax != 0
invoke ShowWindow,eax,SW_H ; 用SW_SHOW顯示
.endif
- 如何禁止/允許/顯示/隱藏開始按鈕?
.data?
buffer db 127 dup(?)
.data
shell db "Shell_TrayWnd",0
sbar db "BUTTON",0
child dd ?
slen dd ?
.code
invoke FindWindow,addr shell,NULL ; 獲得狀態列控制程式碼
mov tray, eax
invoke GetWindow,tray, GW_CHILD ; 獲得狀態列的子視窗(如果有的話)
mov child, eax
.if child != 0
invoke GetClassName,child,offset buffer, sizeof buffer ;獲得子視窗類名
.if eax > 0
invoke lstrlen, offset buffer ;獲得類名長度
mov slen,eax
invoke CharUpperBuff,offset buffer,slen ;轉為大寫
invoke lstrcmp,addr buffer, addr sbar ;將類名與'BUTTON'比較
.if eax == 0
invoke ShowWindow,child,SW_HIDE ; 隱藏開始按鈕
; invoke ShowWindow,child,SW_SHOW ; 顯示開始按鈕
; invoke EnableWindow,child,FALSE ; 禁止開始按鈕
; invoke EnableWindow,child,TRUE ; 允許開始按鈕
.endif
.endif
.endif
- 如何建立一個真正的"總在最上面"視窗?
invoke SetWindowPos,hWin, HWND_TOPMOST,NULL,NULL,NULL,NULL,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE
- 如何建立熱鍵?比如CTRL + ALT + A
.data
hmsg db "HotKey CTRL + ALT + A Works good!",0
hcap db "Hotkey Example",0
.code
.if uMsg == WM_CREATE
invoke RegisterHotKey,hWnd,065h,MOD_CONTROL or MOD_ALT, 041h ; CTRL + ALT + A (041h is 65 - 065h is 101)
.elseif uMsg == WM_HOTKEY
invoke MessageBox,hWin,addr hmsg,addr hcap, MB_OK or MB_ICONINFORMATION
.elseif uMsg == WM_DESTROY
invoke UnregisterHotKey,hWin,065h
invoke PostQuitMessage,NULL
return 0
.endif
-如何獲得Windows目錄和系統目錄
.data
buffer db 50 dup(?)
hCap db "WindowsDirectory",0
.code
invoke GetWindowsDirectory, addr buffer, sizeof buffer ; 置Windows目錄於緩衝區中
; invoke GetSystemDirectory, addr buffer, sizeof buffer ;置系統目錄於緩衝區中
invoke MessageBox,hWnd, addr buffer, addr hCap, MB_OK or MB_ICONINFORMATION
- 如何從我的程式開啟開始選單?
invoke SendMessage,hWnd,WM_SYMMAND,SC_TASKLIST,NULL
- 如何關閉正被啟用的程式 ?
.data
fwin dd ?
.code
invoke GetForegroundWindow
mov fwin,eax
invoke SendMessage, fwin, WM_CLOSE,NULL
- 如何去掉視窗標題 ?
invoke GetWindowLong,hWnd,GWL_STYLE ; 獲得當前視窗類
and eax,not WS_CAPTION ; 去掉WS_CAPTION
invoke SetWindowLong,hWnd,GWL_STYLE,eax ; 設定視窗類
- 如何知道視窗是否在工作列中(或可見)?
invoke IsWindowVisible,hWin
.if eax == TRUE
; 視窗可見
.else
; 視窗不可見
.endif
- 如何隱藏一個視窗?
.data
mirc db "mIRC32",0
mhand dd ?
.code
invoke FindWindow,addr mirc, NULL ; 尋找mIRC32
mov mhand,eax
.if mhand != 0 ; 找到?
invoke ShowWindow,mhand,SW_SHOW ; 顯示視窗
; invoke ShowWindow,mhand,SW_HIDE ; 隱藏視窗
.else
; mIRC32未執行...
.endif
- 如何將視窗置於前臺?
invoke SetForegroundWindow, mhand
- 如何遮蔽CTRL+ALT+DEL,ALT+TAB+CTRL+ESC這些鍵?
invoke SystemParametersInfo,SPI_SCREENSAVERRUNNING,1,NULL,NULL
; Windows98 only 1 關閉 0 允許
- 如何確定Windows工作列的自動隱藏特性是否被啟用?
.data
AppBar APPBARDATA {} ; {} 指使用預設值... Thanks to TTom
.code
mov AppBar.cbSize, sizeof AppBar
invoke SHAppBarMessage, ABM_GETSTATE, addr AppBar ; ShellApi命令
and eax, ABS_AUTOHIDE
.if eax == TRUE
; 工作列被隱藏
.else
; 工作列未被隱藏
.endif
- 如何使用預設的瀏覽器或郵件程式?
.data
lpPage db "",0
lpMail db "ates@anet.net.tr",0
lpOperation db "open",0
.code
invoke ShellExecute,hWin,addr lpOperation, addr lpPage, NULL, NULL, SW_SHOWNORMAL
invoke ShellExecute,hWin,addr lpOperation, addr lpMail, NULL, NULL, SW_SHOWNORMAL
- 如何用Win32 API顯示網路連線對話方塊?
include MASM32INCLUDEmpr.inc
includelib MASM32LIBmpr.lib
invokeConnectionDialog,hWnd,RETYPE_DISK
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1006882/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VB程式介面設計經驗點滴 (轉)
- Linux下燒錄CDR經驗點滴(轉)Linux
- RedHatLinux使用者管理經驗點滴(轉)RedhatLinux
- Oracle程式設計經驗及維護點滴(轉)Oracle程式設計
- VB程式設計經驗點滴程式設計
- 軟體工程經驗點滴之程式碼易複製性軟體工程
- DB2使用經驗點滴(2008/10/31更新)DB2
- Dev-C++使用點滴 (轉)devC++
- 編譯核心的一點點經驗(轉)編譯
- asm點滴ASM
- oracle點滴Oracle
- 英文投稿的一點經驗【轉載】
- 我的一點學習經驗 (轉)
- mailx使用點滴AI
- win32asm原理 (轉)Win32ASM
- 核心升級2.4.20『談點經驗』(轉)
- UNIX安全構架的九點經驗(轉)
- Linux配置mlterm的一點經驗(轉)Linux
- sql點滴42—mysql中的時間轉換MySql
- 工作點滴積累
- lzma 知識點滴
- 前端點滴記錄前端
- 專題:點滴JavascriptJavaScript
- hp-ux點滴UX
- 經驗點談在JSP中的宣告. (轉)JS
- root檔案系統的一點經驗(轉)
- (譯)win32asm教程-7 (轉)Win32ASM
- (譯)win32asm教程-9 (轉)Win32ASM
- (譯)win32asm教程-8 (轉)Win32ASM
- (譯)win32asm教程-10 (轉)Win32ASM
- (譯)win32asm教程-11 (轉)Win32ASM
- (譯)win32asm教程-5 (轉)Win32ASM
- (譯)win32asm教程-6 (轉)Win32ASM
- ERP實施經驗篇:六點需掌握(轉)
- 關於windows installer的一點小經驗(轉)Windows
- 生活點滴小筆記筆記
- Django之學習點滴Django
- Mac | 技巧點滴記錄Mac