PDA

View Full Version : فرم شیشه ای (Aero Glass)



IamOverlord
شنبه 08 بهمن 1390, 16:03 عصر
سلام دوستان.
کسی می تونه بگه مشکل این کد چیه؟
می خواستم کد این تاپیک (http://barnamenevis.org/showthread.php?325191-%D9%81%D8%B1%D9%85-%D8%B4%DB%8C%D8%B4%D9%87-%D8%A7%DB%8C-(Aero-Glass)/page2) رو در FASM بنویسم.



; Template for program using standard Win32 headers

format PE GUI 4.0
entry start

include 'include\win32a.inc'


struc tagInitCommonControlsEx lngSize,lngICC
{
.lngSize dw lngSize
.lngICC dw lngICC
}

struc tRect m_Left,m_Right,m_Top,m_Bottom
{
.m_Left dw m_Left
.m_Right dw m_Right
.m_Top dw m_Top
.m_Bottom dw m_Bottom
}


ICC_USEREX_CLASSES equ 200h
WM_KEYDOWN equ 100h


;section '.rsrc' data readable resource from 'XP Resource.res'



section '.data' data readable writeable

_title db 'Win32 program XP style template',0
_class db 'FASMWIN32',0


wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NU LL,_class

msg MSG

iccex tagInitCommonControlsEx 4,ICC_USEREX_CLASSES
GRect tRect -1,-1,-1,-1

flags dd ?
caption db 'XP Style Without External Manifest File',0
message db 'Look At Button Below:',0


section '.code' code readable executable

start:











;invoke InitCommonControls,iccex



invoke MessageBox,HWND_DESKTOP,message,caption,[flags]




invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFR AME+WS_SYSMENU,200,300,400,300,NULL,NULL,[wc.hInstance],NULL

msg_loop:
invoke GetMessage,msg,NULL,0,0
or eax,eax
jz end_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop

end_loop:
invoke ExitProcess,[msg.wParam]

proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
cmp [wmsg],WM_DESTROY
je wmdestroy
cmp [wmsg],WM_KEYDOWN
je keyboardproc
defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]

jmp finish
keyboardproc:
invoke ApplyGlass,[hwnd],GRect
jmp finish
wmdestroy:
invoke PostQuitMessage,0
xor eax,eax
finish:

pop edi esi ebx
ret
endp



section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
comctl32,'COMCTL32.DLL',\
dwmapi,'DWMAPI.DLL'


include 'include\apia\kernel32.inc'
include 'include\apia\user32.inc'
include 'include\apia\comctl32.inc'


;Private Declare Function ApplyGlass Lib "dwmapi.dll" Alias "DwmExtendFrameIntoClientArea" (ByVal hWnd As Long, rect As tRect) As Long

import dwmapi,\
ApplyGlass,'DwmExtendFrameIntoClientArea'

xman_1365_x
سه شنبه 11 بهمن 1390, 14:21 عصر
برای تغییرات یا پیاده سازی gui با اسمبلی برنامه های win32 رو بگیر و توابع و پارامتر هاشو چک کن چون در اسمبلی هم به همون حالت ارسال میشه و برای درک بهتر از ollydbg کمک بگیر
http://www.codeproject.com/Articles/18910/Adding-or-Retrofitting-Aero-Glass-into-Legacy-Wind

موفق باشی