Ответ 1. Как можно скрыть/показать панель задач?
invoke FindWindow,addr shell,NULL ; получение хэндла панели задач
.if eax != 0
invoke ShowWindow,eax,SW_HIDE ; скрытие панели задач, используйте SW_SHOW для показа
.endif
Ответ 2. Как можно сделать недоступной/доступной/показать/скрыть кнопку “Пуск”?
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
Ответ 3. Как сделать окно действительно Stay On Top?
Ответ 4. Как создать горячие клавиши? Например CTRL+ALT+A.
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
Ответ 5. Как узнать директорию Windows и системную директорию.
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
Ответ 6. Как можно открыть меню Старт из моей программы?
Ответ 7. Как закрыть активную программу?
fwin dd ?
.code
invoke GetForegroundWindow
mov fwin,eax
invoke SendMessage, fwin, WM_CLOSE,NULL
Ответ 8. Как отобразить моё окно без заголовка?
and eax,not WS_CAPTION ; удаление WS_CAPTION
invoke SetWindowLong,hWnd,GWL_STYLE,eax ; установка свойств окна
Ответ 9. Как определить видимо окно или нет?
.if eax == TRUE
; окно видимо
.else
; окно не видимо
.endif
Ответ 10. Как скрыть окно?
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
Ответ 11. Как отобразить окно поверх всех окон?
Ответ 12. Как запретить комбинацию CTRL+ALT+DEL, ALT+TAB+CTRL+ESC?
; работает только под Windows 98 1 - запретить; 0 - разрешить.
Ответ 13. Как определить включено ли свойство панели задач “Автоматически убирать с экрана”?
AppBar APPBARDATA {} ; {} означает использовать установки по умолчанию...
.code
mov AppBar.cbSize, sizeof AppBar
invoke SHAppBarMessage, ABM_GETSTATE, addr AppBar
and eax, ABS_AUTOHIDE
.if eax == TRUE
; свойство включено
.else
; свойство не включено
.endif
Ответ 14. Как открыть браузер или почтовую программу, используемые по умолчанию?
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
Ответ 15. Как вызвать диалог “Установка соединения” используя Win32 API?
includelib \MASM32\LIB\mpr.lib
invoke WNetConnectionDialog,hWnd,RESOURCETYPE_DISK