Скрыть диалог в панели задач

Тема в разделе "WASM.BEGINNERS", создана пользователем pashe4ka13, 30 май 2011.

  1. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Всем доброго времени суток! Подскажите пожалуйсто как мне справиться с такой проблемой: есть диалог DialogBoxParam. В качестве родителя указываю HWND_DESKTOP. При выводе диалога он отображается на панели задач. Как сделать так, что бы он там не отображался? Я знаю вариант с созданием скрытой формы, но может быть есть что то лучше?
     
  2. dinoweb

    dinoweb Дмитрий

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    129
    Адрес:
    Россия. Красноярск
    посмотрите вот этот пример. вам это нужно?
    Код (Text):
    1. ; Component Object Model usage demonstration
    2.  
    3. format PE GUI 4.0
    4. entry start
    5.  
    6. include 'win32a.inc'
    7.  
    8. struc GUID def
    9.  {
    10.    match d1-d2-d3-d4-d5, def
    11.     \{
    12.       .Data1 dd 0x\#d1
    13.       .Data2 dw 0x\#d2
    14.       .Data3 dw 0x\#d3
    15.       .Data4 db 0x\#d4 shr 8,0x\#d4 and 0FFh
    16.       .Data5 db 0x\#d5 shr 40,0x\#d5 shr 32 and 0FFh,0x\#d5 shr 24 and 0FFh,0x\#d5 shr 16 and 0FFh,0x\#d5 shr 8 and 0FFh,0x\#d5 and 0FFh
    17.     \}
    18.  }
    19.  
    20. interface ITaskBarList,\
    21.        QueryInterface,\
    22.        AddRef,\
    23.        Release,\
    24.        HrInit,\
    25.        AddTab,\
    26.        DeleteTab,\
    27.        ActivateTab,\
    28.        SetActiveAlt
    29.  
    30. CLSCTX_INPROC_SERVER        = 0x1
    31. CLSCTX_INPROC_HANDLER       = 0x2
    32. CLSCTX_LOCAL_SERVER     = 0x4
    33. CLSCTX_INPROC_SERVER16      = 0x8
    34. CLSCTX_REMOTE_SERVER        = 0x10
    35. CLSCTX_INPROC_HANDLER16     = 0x20
    36. CLSCTX_INPROC_SERVERX86     = 0x40
    37. CLSCTX_INPROC_HANDLERX86    = 0x80
    38. CLSCTX_ESERVER_HANDLER      = 0x100
    39. CLSCTX_NO_CODE_DOWNLOAD     = 0x400
    40. CLSCTX_NO_CUSTOM_MARSHAL    = 0x1000
    41. CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
    42. CLSCTX_NO_FAILURE_LOG       = 0x4000
    43. CLSCTX_DISABLE_AAA      = 0x8000
    44. CLSCTX_ENABLE_AAA       = 0x10000
    45. CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
    46.  
    47. ID_EXIT = IDCANCEL
    48. ID_SHOW = 100
    49. ID_HIDE = 101
    50.  
    51. IDD_COMDEMO = 1
    52.  
    53. section '.text' code readable executable
    54.  
    55.  start:
    56.  
    57.     invoke  CoInitialize,NULL
    58.     invoke  CoCreateInstance,CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,ShellTaskBar
    59.  
    60.     invoke  GetModuleHandle,0
    61.     invoke  DialogBoxParam,eax,IDD_COMDEMO,HWND_DESKTOP,COMDemo,0
    62.  
    63.     cominvk ShellTaskBar,Release
    64.  
    65.     invoke  ExitProcess,0
    66.  
    67. proc COMDemo hwnd,msg,wparam,lparam
    68.     push    ebx esi edi
    69.     cmp [msg],WM_INITDIALOG
    70.     je  .wminitdialog
    71.     cmp [msg],WM_COMMAND
    72.     je  .wmcommand
    73.     cmp [msg],WM_CLOSE
    74.     je  .wmclose
    75.     xor eax,eax
    76.     jmp .finish
    77.   .wminitdialog:
    78.     jmp .processed
    79.   .wmcommand:
    80.     cmp [wparam],BN_CLICKED shl 16 + ID_EXIT
    81.     je  .wmclose
    82.     cmp [wparam],BN_CLICKED shl 16 + ID_SHOW
    83.     je  .show
    84.     cmp [wparam],BN_CLICKED shl 16 + ID_HIDE
    85.     jne .processed
    86.   .hide:
    87.     cominvk ShellTaskBar,HrInit
    88.     cominvk ShellTaskBar,DeleteTab,[hwnd]
    89.     jmp .processed
    90.   .show:
    91.     mov ebx,[ShellTaskBar]
    92.     comcall ebx,ITaskBarList,HrInit
    93.     comcall ebx,ITaskBarList,AddTab,[hwnd]
    94.     comcall ebx,ITaskBarList,ActivateTab,[hwnd]
    95.     jmp .processed
    96.   .wmclose:
    97.     invoke  EndDialog,[hwnd],0
    98.   .processed:
    99.     mov eax,1
    100.   .finish:
    101.     pop edi esi ebx
    102.     ret
    103. endp
    104.  
    105. section '.data' data readable writeable
    106.  
    107.  CLSID_TaskbarList GUID 56FDF344-FD6D-11D0-958A-006097C9A090
    108.  IID_ITaskbarList GUID 56FDF342-FD6D-11D0-958A-006097C9A090
    109.  
    110.  ShellTaskBar ITaskBarList
    111.  
    112. section '.idata' import data readable
    113.  
    114.   library kernel,'KERNEL32.DLL',\
    115.       user,'USER32.DLL',\
    116.       ole,'OLE32.DLL'
    117.  
    118.   import kernel,\
    119.      GetModuleHandle,'GetModuleHandleA',\
    120.      ExitProcess,'ExitProcess'
    121.  
    122.   import user,\
    123.      DialogBoxParam,'DialogBoxParamA',\
    124.      EndDialog,'EndDialog'
    125.  
    126.   import ole,\
    127.      CoInitialize,'CoInitialize',\
    128.      CoCreateInstance,'CoCreateInstance'
    129.  
    130. section '.rsrc' resource data readable
    131.  
    132.   directory RT_DIALOG,dialogs
    133.  
    134.   resource dialogs,\
    135.        IDD_COMDEMO,LANG_ENGLISH+SUBLANG_DEFAULT,comdemo
    136.  
    137.   dialog comdemo,'Taskbar item control',70,70,170,24,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
    138.     dialogitem 'BUTTON','Show',ID_SHOW,4,4,45,15,WS_VISIBLE+WS_TABSTOP
    139.     dialogitem 'BUTTON','Hide',ID_HIDE,54,4,45,15,WS_VISIBLE+WS_TABSTOP
    140.     dialogitem 'BUTTON','Exit',ID_EXIT,120,4,45,15,WS_VISIBLE+WS_TABSTOP
    141.   enddialog
     
  3. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    dinoweb
    Спасибо огромное, смысл у приведенного Вами кода полностью соответствует моей задачи, но мне не хотелось бы использовать ole32. Может быть можно сделать как то еще?