2008. 6. 25. 19:49

.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                                     ; 핸들값을 tray 변수에 저장
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                    ; 클래스이름의 길이를 slen변수에 저장
        invoke CharUpperBuff,offset buffer,slen     ; 대문자로 변경
        invoke lstrcmp,addr buffer, addr sbar ; 시작버튼과 비교
        .if eax == 0                                     ; 같다면, 즉 시작버튼을 찾았으므로 여러가지 제어가능
            invoke ShowWindow,child,SW_HIDE        ; 시작 버튼 숨기기
            ; invoke ShowWindow,child,SW_SHOW    ; 시작 버튼 표시
            ; invoke EnableWindow,child,FALSE        ; 시작 버튼 사용불가
             ; invoke EnableWindow,child,TRUE          ; 시작  버튼 사용가능
       .endif
    .endif
.endif

Posted by openserver