Win32ASM经验点滴#1
  作者:'Ates(ates@anet.net.tr)
  shell db "Shell_TrayWnd",0 ;  任务栏的类名
   invoke FindWindow,addr shell,NULL ;  先获得句柄,之后隐藏. 
  
  .if eax != 0
  invoke ShowWindow,eax,SW_HIDE ;  用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
  .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 
  .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_SYSCOMMAND,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  允许 
 .data
  lpPage db "http://win32asm.cjb.net",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 
   
include \MASM32\INCLUDE\mpr.inc
  includelib \MASM32\LIB\mpr.lib
  invoke WNetConnectionDialog,hWnd,RESOURCETYPE_DISK
Designed By Atilla Yurtseven
Chinese Translation By Orochi,2000.12.16