flat assembler
Message board for the users of flat assembler.

Index > Windows > Just A Little (annoying) problem

Author
Thread Post new topic Reply to topic
calpol2004



Joined: 16 Dec 2004
Posts: 110
calpol2004 06 Jan 2006, 21:17
this isnt necessarily a problem everything does function fine just it really annoys me. using the "USECOM" example ive made my application not appear in the taskbar, however for like a second it appears then disappears, this is what annoys me. i know its because the code which makes it disappear from task bar initializes a split second after the program is actually put in the the taskbar. there must be another method of doing this so it doesnt appear for a split second, ive seen a fair few other applications do it unfortunatly i cant look at their source Crying or Very sad . heres my code:

Code:
format PE GUI 4.0
entry start

include '..\..\include\win32a.inc'

struc GUID def
 {
   match d1-d2-d3-d4-d5, def
    \{
      .Data1 dd 0x\#d1
      .Data2 dw 0x\#d2
      .Data3 dw 0x\#d3
      .Data4 db 0x\#d4 shr 8,0x\#d4 and 0FFh
      .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
    \}
}
interface ITaskBarList,QueryInterface,AddRef,Release,HrInit,AddTab,DeleteTab,ActivateTab,SetActiveAlt

CLSCTX_INPROC_SERVER = 0x1
ID_PASS  = 100
ID_OK    = 102
ID_CLOSE = 103

section '.data' data readable writeable

   CLSID_TaskbarList GUID 56FDF344-FD6D-11D0-958A-006097C9A090
   IID_ITaskbarList GUID 56FDF342-FD6D-11D0-958A-006097C9A090
   ShellTaskBar ITaskBarList
   flags       dd ?
   password    db 'password',0
   incorrect   db 'Invalid Password, Please Try Again',0
   alert       db 'Alert!',0
   buffer      db 49

section '.code' code readable executable

  start:
                  ;!!! functions to make program disappear from taskbar here !!!!
                  invoke  CoInitialize,NULL
                  invoke  CreateInstance,CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,ShellTaskBar
        invoke  GetModuleHandle,0
        invoke  DialogBoxParam,eax,37,NULL,DialogProc,0
        cominvk ShellTaskBar,Release
        or      eax,eax
        jz      exit
  exit:
        invoke  ExitProcess,0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;          Initial Dialog          ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

proc DialogProc hwnddlg,msg,wparam,lparam
cominvk ShellTaskBar,HrInit
cominvk ShellTaskBar,DeleteTab,[hwnddlg]
push    ebx esi edi
cmp     [msg],WM_INITDIALOG
je      wminitdialog
cmp     [msg],WM_COMMAND
je      wmcommand
xor     eax,eax
jmp     finish
wminitdialog:
        invoke  SetWindowPos,[hwnddlg],HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE
        jmp     processed
wmcommand:
mov     eax,[wparam]
and     eax,0FFFFh
cmp     eax,ID_OK
je      enteredpass
cmp     eax,ID_CLOSE
je      close
jmp     processed
enteredpass:
                invoke GetDlgItemText,[hwnddlg],ID_PASS,buffer,buffer
                invoke lstrcmp,password,buffer
                cmp    eax,0
                je     equal
                       invoke  MessageBox,[hwnddlg],incorrect,alert,MB_OK+MB_ICONINFORMATION
                       jmp     processed
                equal:
                       invoke  EndDialog,[hwnddlg],0
                       ;run second dialog from here
                       jmp     processed
close:
invoke  EndDialog,[hwnddlg],0
processed:
mov     eax,1
finish:
pop     edi esi ebx
ret
endp


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;  function imports and resources  ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',user,'USER32.DLL',ole,'OLE32.DLL'
  import kernel,GetModuleHandle,'GetModuleHandleA',ExitProcess,'ExitProcess',lstrcmp,'lstrcmp'
  import user,DialogBoxParam,'DialogBoxParamA',GetDlgItemText,'GetDlgItemTextA',MessageBox,'MessageBoxA',EndDialog,'EndDialog',SetWindowPos,'SetWindowPos'
  import ole,CoInitialize,'CoInitialize',CoCreateInstance,'CoCreateInstance'

section '.rsrc' resource data readable
  directory RT_DIALOG,dialogs
  resource dialogs,37,LANG_ENGLISH+SUBLANG_DEFAULT,filehider
  dialog filehider,'Enter Your Password',340,280,140,37,DS_MODALFRAME+DS_CENTER+WS_POPUP+WS_CAPTION
  dialogitem 'EDIT','',ID_PASS,2,3,136,15,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_PASSWORD
  dialogitem 'BUTTON','&Enter',ID_OK,12,20,52,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON
  dialogitem 'BUTTON','&Close',ID_CLOSE,74,20,52,15,WS_VISIBLE
enddialog
    


any form of help appreciated.
Post 06 Jan 2006, 21:17
View user's profile Send private message MSN Messenger Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2023, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.