Перейти к содержанию

Ассемблер. Ссылка в окне программы на домашнюю страницу


Рекомендуемые сообщения

Всем привет. Ребят, помогите с куском кода, плиз! Сам трейнер делаю в Game Trainer Studio, но там возможностей не хватает или я о них не знаю, приходиться дорабатывать код вручную, но тут я плаваю.

Собственно суть в заголовке. Нужно в окне трейнера вставить ссылку на свой сайт, в html это выглядело бы так:

[url="http://mojsite.ru"]Домашняя страница[/URL]

Тут, как я понимаю, трейнер должен запустить ИЕ с заданными параметрами, то есть с конкретным адресом.

Да, и в какую секцию надо будет вставлять этот код?

 

Ссылка на комментарий
Поделиться на другие сайты

В диалоге делаешь метку с нужным текстом, в коде делаешь по клику на эту метку ShellExecute на свой сайт, и сайт откроется в браузере по умолчанию.

Ссылка на комментарий
Поделиться на другие сайты

В диалоге делаешь метку с нужным текстом, в коде делаешь по клику на эту метку ShellExecute на свой сайт, и сайт откроется в браузере по умолчанию.

С моими знаниями мне это ни о чем не говорит :mellow: . Хорошо бы пример кода, а там я его уже доведу до ума на практике.

Ссылка на комментарий
Поделиться на другие сайты

Пишу с телефона, поэтому даю ссылку.

http://autoit-script.ru/autoit3_docs/functions/ShellExecute.htm

На onclick добавь вызов функции ShellExecute.

Посмотрел - не осилю . Хотелось бы готовый образец, если не трудно :inlove:

Ссылка на комментарий
Поделиться на другие сайты

Привет!

 

Попробуй сначала написать сам, если не сработает - покажи, как пытался, а мы попробуем помочь. Если снабдить тебя готовым решением - ты так и не узнаешь, как оно работает.

Ссылка на комментарий
Поделиться на другие сайты

Даю подсказку - строки нужно объявить в секции .data

Обработчик клика надо делать в оконной процедуре, где идет цикл обработки сообщений.

И вызвать функцию можно командой call ShellExecute, но предварительно все параметры нужно положить в стек в нужном порядке.

Пока все. Пробуй. Не получится - спрашивай.

Ссылка на комментарий
Поделиться на другие сайты

Попробуй сначала написать сам, если не сработает - покажи, как пытался, а мы попробуем помочь.

Я пишу не сам, за меня пишет Game Trainer Studio. А дальше я, по возможности, дорабатываю.

Задача.

Дано:

Требуется:

Сделать надпись "Домашняя страница" ссылкой. Вот как подступиться к этой задаче - я даже не представляю, честно сказать :mellow:. Обработчик клика, стек - для меня темный-темный лес...

 

ЗЫ. Блин, да что ж я никак со спойлером не могу подружиться...

NullAlex: большой код принято заключать в тег спойлера.

; #########################################################################;; This Is My Trainer Template Created For The Game Trainer Studio (Xeta);; This Is Based On A MASM Example.;; #########################################################################.386.model flat, stdcall ; 32 bit memory modeloption casemap :none ; case sensitiveinclude trainer.inc ; local includes for this file; #########################################################################.dataLabelHandle5500 dd ?LabelHandle5501 dd ?LabelHandle5502 dd ?; ### Constants Below; ### Constants Above; ### Bytes BelowHotKey00000 db 000hdb 001hdb 000hdb 001hHotKey00001 db 001hdb 001hdb 001hdb 000h; ### Bytes Above; ### Button Messages Below; ### Button Messages AboveWindCap db "Game.exe",0szDisplayName db 'Trainer-2',0.codestart:invoke GetModuleHandle, NULLmov hInstance, eaxinvoke GetCommandLinemov CommandLine, eaxinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eax; #########################################################################WinMain proc hInst :DWORD,hPrevInst :DWORD,CmdLine :DWORD,CmdShow :DWORD;====================; Put LOCALs on stack;====================LOCAL wc :WNDCLASSEXLOCAL msg :MSGLOCAL Wwd :DWORDLOCAL Wht :DWORDLOCAL Wtx :DWORDLOCAL Wty :DWORD;==================================================; Fill WNDCLASSEX structure with required variables;==================================================invoke LoadIcon,hInst,500 ; icon IDmov hIcon, eaxszText szClassName,"Trainer_Class"mov wc.cbSize, sizeof WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAW \or CS_BYTEALIGNWINDOWmov wc.lpfnWndProc, offset WndProcmov wc.cbClsExtra, NULLmov wc.cbWndExtra, NULLm2m wc.hInstance, hInstmov wc.hbrBackground, COLOR_BTNFACE+1mov wc.lpszMenuName, NULLmov wc.lpszClassName, offset szClassNamem2m wc.hIcon, hIconinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor, eaxm2m wc.hIconSm, hIconinvoke RegisterClassEx, ADDR wc;================================; Centre window at following size;================================mov Wwd, 209 ; Dialog Widthmov Wht, 118 ; Dialog Heightinvoke GetSystemMetrics,SM_CXSCREENinvoke TopXY,Wwd,eaxmov Wtx, eaxinvoke GetSystemMetrics,SM_CYSCREENinvoke TopXY,Wht,eaxmov Wty, eaxinvoke CreateWindowEx,WS_EX_LEFT,ADDR szClassName,ADDR szDisplayName,WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,Wtx,Wty,Wwd,Wht,NULL,NULL,hInst,NULLmov hWnd,eaxinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd;===================================; Loop until PostQuitMessage is sent;===================================StartLoop:invoke GetMessage,ADDR msg,NULL,0,0cmp eax, 0je ExitLoopinvoke TranslateMessage, ADDR msginvoke DispatchMessage, ADDR msgjmp StartLoopExitLoop:return msg.wParamWinMain endp; #########################################################################WndProc proc hWin :DWORD,uMsg :DWORD,wParam :DWORD,lParam :DWORDLOCAL var :DWORDLOCAL caW :DWORDLOCAL caH :DWORDLOCAL color :DWORDLOCAL hDC :DWORDLOCAL Rct :RECTLOCAL Ps :PAINTSTRUCTLOCAL buffer1[128]:BYTELOCAL buffer2[128]:BYTELOCAL lfnt :LOGFONTLOCAL psd :PAGESETUPDLGLOCAL pd :PRINTDLGLOCAL RectB :RECT.if uMsg == WM_COMMANDMOV EAX, wParam.if wParam == 499.endif.elseif uMsg == WM_CTLCOLORSTATICJMP @WM_CTLCOLOREDIT.elseif uMsg == WM_CTLCOLOREDIT@WM_CTLCOLOREDIT:.elseif uMsg == WM_DRAWITEM.elseif uMsg == WM_CREATEMOV HotKeyMiniToggle, TRUEszText font1,'MS Sans Serif'invoke CreateFont,8,5,0,0,500,0,0,0, \DEFAULT_CHARSET,0,0,0,\DEFAULT_PITCH,ADDR font1mov hFont, eaxInvoke SetTimer, hWin, 1, 100, 0 ; HotKey TimerInvoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze TimerszText lbl11, "Домашняя страница"invoke Static,ADDR lbl11,hWin,48,56,116,17,5500mov LabelHandle5500, eaxszText lbl12, "Trainer for Game"invoke Static,ADDR lbl12,hWin,56,8,92,17,5501mov LabelHandle5501, eaxszText lbl13, "F12 - бесконечные патроны"invoke Static,ADDR lbl13,hWin,24,32,148,17,5502mov LabelHandle5502, eax.elseif uMsg == WM_TIMER.If wParam == 1 ; ### Timer Below ###Invoke GetKeyState, VK_HOMEmov HotBuffer1, eax.if HotBuffer1 > 1Invoke TrainerEngineRead, NULL, Offset WindCap, 001C0F965h, 1MOV Read, EAX.If Read == 001hInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00000, 4.ElseInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00001, 4.EndIf.endif.Endif ; ### Timer Above ###.If wParam == 2 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 3 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 4 ; ### EBFreeze Timer Below ###.Endif ; ### EBFreeze Timer Above ###.elseif uMsg == WM_HOTKEY.elseif uMsg == WM_PAINTinvoke BeginPaint,hWin,ADDR Psmov hDC, eaxinvoke Paint_Proc,hWin,hDCinvoke EndPaint,hWin,ADDR Psreturn 0.elseif uMsg == WM_DESTROYinvoke PostQuitMessage,NULLreturn 0.endifinvoke DefWindowProc,hWin,uMsg,wParam,lParamretWndProc endp; ########################################################################TopXY proc wDim:DWORD, sDim:DWORDshr sDim, 1 ; divide screen dimension by 2shr wDim, 1 ; divide window dimension by 2mov eax, wDim ; copy window dimension into eaxsub sDim, eax ; sub half win dimension from half screen dimensionreturn sDimTopXY endp; #########################################################################Paint_Proc proc hWin:DWORD, hDC:DWORDLOCAL btn_hi :DWORDLOCAL btn_lo :DWORDLOCAL Rct :RECTinvoke GetSysColor,COLOR_BTNHIGHLIGHTmov btn_hi, eaxinvoke GetSysColor,COLOR_BTNSHADOWmov btn_lo, eaxreturn 0Paint_Proc endp; ########################################################################OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORDLOCAL tbuff[20h]:bytemov ebx,pdisassume ebx:ptr DRAWITEMSTRUCT.if [ebx].CtlType == ODT_BUTTON.if pbkcol == 0.elseinvoke SetBkMode,[ebx].hdc,OPAQUEInvoke SetBkColor,[ebx].hdc,pbkcolInvoke CreateSolidBrush, pbkcolinvoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax.endifinvoke SetTextColor,[ebx].hdc,pcol.if ([ebx].itemState & ODS_SELECTED)invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECTinvoke OffsetRect,addr [ebx].rcItem,1,1.elseinvoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT.endifinvoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbufflea edx,[ebx].rcItemlea ecx,tbuffinvoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP.if [ebx].itemState & ODS_FOCUSinvoke InflateRect,addr [ebx].rcItem,-4,-4invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem.endif.endifassume ebx:nothingretOnDrawItem endp; ########################################################################end start
Ссылка на комментарий
Поделиться на другие сайты

вроде адекватный пример:

http://www.dreamincode.net/forums/topic/241669-masm-creating-a-hyperlink/

 

Я пишу не сам, за меня пишет Game Trainer Studio. А дальше я, по возможности, дорабатываю.

надо наоборот. взять тот код как пример, исправить бредокод +переписать его на fasm или nasm а потом добавлять функционал.

Ссылка на комментарий
Поделиться на другие сайты

Выглядит все вполне прилично, но готовая ссылка в программе не работает, то есть при клике на ней ничего происходит. Почему?

 

надо наоборот. взять тот код как пример, исправить бредокод +переписать его на fasm или nasm а потом добавлять функционал.

Для меня что masm, что fasm или nasm - темный лес. Просто Game Trainer Studio пишет именно на masm, а мне уже приходиться экспериментировать с тем, что есть. Сам я код не напишу, не умею.

Ссылка на комментарий
Поделиться на другие сайты

Попробую зайти с другой стороны :rolleyes: . Нашел такой пример в сети:

 

 

Проверил - работает. Но тут куча лишнего, то, что мне совсем не нужно. Пробовал удалять - сыплются ошибки. Помогите удалить мусор, ребята! Надо оставить только голый каркас программы с надписью-ссылкой "Домашняя страница". Все!

.586.model flat, stdcalloption casemap:noneinclude \masm32\include\windows.incinclude \masm32\include\masm32.incinclude \masm32\include\user32.incinclude \masm32\include\kernel32.incinclude \masm32\include\gdi32.incinclude \masm32\include\shell32.incincludelib \masm32\lib\masm32.libincludelib \masm32\lib\user32.libincludelib \masm32\lib\kernel32.libincludelib \masm32\lib\gdi32.libincludelib \masm32\lib\shell32.libUrlProc PROTO :HWND,:UINT,:WPARAM,:LPARAM.data?hInst DWORD ?hFont DWORD ?hFontUl DWORD ?lpOrgStaticProc DWORD ?lpOrgWebProc DWORD ?hBrush DWORD ?bMouseOver DWORD ?msg MSGhEmail DWORD ?hWeb DWORD ?hMain DWORD ?.codestart:jmp @FszWndClsMain BYTE "SSC_MAIN", 0szWndClsStatic BYTE "STATIC", 0szAppName BYTE "Static Subclass Example", 0szEmailText BYTE "Send Gunner Mail", 0szEmailURL BYTE "mailto://gunner@gunnerinc.com", 0szWebText BYTE "Домашняя страница", 0szWebURL BYTE "http://http://forum.gamehacklab.ru", 0szShelOpen BYTE "open", 0szFontName BYTE "Verdana", 0@@:call Startup.while TRUEinvoke GetMessage, addr msg, NULL, 0, 0.break .if !eaxinvoke TranslateMessage, addr msginvoke DispatchMessage, addr msg.endwmov eax, msg.messageinvoke ExitProcess, eaxStartup proc uses ebxLOCAL lfnt:LOGFONTLOCAL wc:WNDCLASSEXinvoke GetModuleHandle, NULLmov hInst, eax;##### Create 2 fontsinvoke RtlZeroMemory, addr lfnt, sizeof LOGFONT;##### Reg fontmov lfnt.lfHeight, -11mov lfnt.lfWeight, FW_NORMALinvoke szCatStr, addr lfnt.lfFaceName, offset szFontNameinvoke CreateFontIndirect, addr lfntmov hFont, eax;##### Bold fontmov lfnt.lfUnderline, TRUEinvoke CreateFontIndirect, addr lfntmov hFontUl, eax;##### Register main window classinvoke RtlZeroMemory, addr wc, sizeof WNDCLASSEXmov wc.cbSize, sizeof WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAWmov wc.lpfnWndProc, offset WndProcMainpush hInstpop wc.hInstancemov wc.hbrBackground, COLOR_HIGHLIGHT + 1; COLOR_3DFACE + 1mov wc.lpszClassName, offset szWndClsMaininvoke LoadIcon, NULL, IDI_EXCLAMATIONmov wc.hIcon, eaxmov wc.hIconSm, eaxinvoke LoadCursor, NULL, IDC_ARROWmov wc.hCursor, eaxinvoke RegisterClassEx, addr wc;##### Coords to center windowinvoke GetSystemMetrics, SM_CXSCREENsub eax, 300shr eax, 1xchg eax, ebxinvoke GetSystemMetrics, SM_CYSCREENsub eax, 123shr eax, 1;##### Create main windowinvoke CreateWindowEx,WS_EX_APPWINDOW or WS_EX_CONTROLPARENT,offset szWndClsMain,offset szAppName,WS_OVERLAPPED or WS_SYSMENU or WS_MINIMIZEBOX or WS_VISIBLE,ebx, eax,300, 123,HWND_DESKTOP, NULL,hInst, NULLmov hMain, eaxretStartup endpWndProcMain proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMlocal rect:RECTmov eax, uMsg.if eax == WM_CREATE;##### Email Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szEmailText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,88, 20,117, 17,hWin, 0,hInst, 0mov hEmail, eax;##### URL is dif than text, save URLinvoke SetWindowLong, eax, GWL_USERDATA, offset szEmailURL;##### Subclass controlinvoke SetWindowLong, hEmail, GWL_WNDPROC, UrlProcmov lpOrgStaticProc, eaxinvoke SendMessage, hEmail, WM_SETFONT, hFont, FALSE;##### Web Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szWebText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,76, 60,137, 17,hWin, 0,hInst, 0mov hWeb, eax;##### URL is dif than text, save URLinvoke SetWindowLong, eax, GWL_USERDATA, offset szWebURL;##### Subclass controlinvoke SetWindowLong, hWeb, GWL_WNDPROC, offset UrlProcmov lpOrgStaticProc, eaxinvoke SendMessage, hWeb, WM_SETFONT, hFont, FALSEinvoke GetSysColorBrush,COLOR_HIGHLIGHT ; COLOR_3DFACEmov hBrush, eax.elseif eax==WM_CTLCOLORSTATICmov ecx, hEmailmov edx, hWeb.if ecx == lParam || edx == lParam.if bMouseOvermov eax, Red.elsemov eax, Yellow.endifinvoke SetTextColor, wParam, eaxinvoke SetBkMode, wParam, TRANSPARENTmov eax, hBrush.endifret.elseif eax == WM_CLOSEinvoke DeleteObject, hFontinvoke DeleteObject, hFontUlinvoke DeleteObject, hBrushinvoke DestroyWindow, hWin.elseif eax == WM_DESTROYinvoke PostQuitMessage, NULL.elseinvoke DefWindowProc, hWin, uMsg, wParam, lParamret.endifxor eax, eaxretWndProcMain endpUrlProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMlocal rect:RECTmov eax,uMsg.if eax == WM_MOUSEMOVEinvoke GetClientRect, hWin, addr rectinvoke GetCapture;##### Make sure the mouse is in our control.if eax != hWinmov bMouseOver, TRUEinvoke SetCapture, hWininvoke SendMessage, hWin, WM_SETFONT, hFontUl, TRUE.endifmov edx,lParammovzx eax,dxshr edx,16.if eax > rect.right || edx > rect.bottom;##### moved out of controlmov bMouseOver, FALSEinvoke ReleaseCaptureinvoke SendMessage, hWin, WM_SETFONT, hFont, TRUE.endif.elseif eax == WM_LBUTTONUPmov bMouseOver, FALSEinvoke ReleaseCaptureinvoke SendMessage, hWin, WM_SETFONT, hFont, TRUE;##### Get URL we stored with the controlinvoke GetWindowLong, hWin, GWL_USERDATAinvoke ShellExecute, hMain, offset szShelOpen, eax, NULL, NULL, SW_SHOWNORMAL.elseif eax==WM_SETCURSORinvoke LoadCursor, NULL, IDC_HANDinvoke SetCursor, eax.elseinvoke CallWindowProc, lpOrgStaticProc, hWin, uMsg, wParam, lParamret.endifxor eax,eaxretUrlProc endpend start
Изменено пользователем Japonamat
Ссылка на комментарий
Поделиться на другие сайты

лови. добавь там shell32.inc / shell32.lib

ps оно как кусок г. выглядит, даже unicode нету Lol

; #########################################################################;; This Is My Trainer Template Created For The Game Trainer Studio (Xeta);; This Is Based On A MASM Example.;; #########################################################################.386.model flat, stdcall ; 32 bit memory modeloption casemap :none ; case sensitiveinclude trainer.inc ; local includes for this fileinclude include\shell32.incincludelib lib\shell32.lib   UrlProc PROTO :DWORD, :DWORD, :DWORD, :DWORD; #########################################################################.datahFontUl DWORD ?lpOrgStaticProc DWORD ?lpOrgWebProc DWORD ?hBrush DWORD ?bMouseOver DWORD ?hEmail DWORD ?hWeb DWORD ?hMain DWORD ?szWndClsMain BYTE "SSC_MAIN", 0szWndClsStatic BYTE "STATIC", 0szWebText BYTE "Домашняя страница", 0szWebURL BYTE "http://forum.gamehacklab.ru", 0szShelOpen BYTE "open", 0LabelHandle5500 dd ?LabelHandle5501 dd ?LabelHandle5502 dd ?; ### Constants Below; ### Constants Above; ### Bytes BelowHotKey00000 db 000hdb 001hdb 000hdb 001hHotKey00001 db 001hdb 001hdb 001hdb 000h; ### Bytes Above; ### Button Messages Below; ### Button Messages AboveWindCap db "Game.exe",0szDisplayName db 'Trainer-2',0.codestart:invoke GetModuleHandle, NULLmov hInstance, eaxinvoke GetCommandLinemov CommandLine, eaxinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eax; #########################################################################WinMain proc hInst :DWORD,hPrevInst :DWORD,CmdLine :DWORD,CmdShow :DWORD;====================; Put LOCALs on stack;====================LOCAL wc :WNDCLASSEXLOCAL msg :MSGLOCAL Wwd :DWORDLOCAL Wht :DWORDLOCAL Wtx :DWORDLOCAL Wty :DWORD;==================================================; Fill WNDCLASSEX structure with required variables;==================================================invoke LoadIcon,hInst,500 ; icon IDmov hIcon, eaxszText szClassName,"Trainer_Class"mov wc.cbSize, sizeof WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAW \or CS_BYTEALIGNWINDOWmov wc.lpfnWndProc, offset WndProcmov wc.cbClsExtra, NULLmov wc.cbWndExtra, NULLm2m wc.hInstance, hInstmov wc.hbrBackground, COLOR_BTNFACE+1mov wc.lpszMenuName, NULLmov wc.lpszClassName, offset szClassNamem2m wc.hIcon, hIconinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor, eaxm2m wc.hIconSm, hIconinvoke RegisterClassEx, ADDR wc;================================; Centre window at following size;================================mov Wwd, 209 ; Dialog Widthmov Wht, 118 ; Dialog Heightinvoke GetSystemMetrics,SM_CXSCREENinvoke TopXY,Wwd,eaxmov Wtx, eaxinvoke GetSystemMetrics,SM_CYSCREENinvoke TopXY,Wht,eaxmov Wty, eaxinvoke CreateWindowEx,WS_EX_LEFT,ADDR szClassName,ADDR szDisplayName,WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,Wtx,Wty,Wwd,Wht,NULL,NULL,hInst,NULLmov hWnd,eaxinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd;===================================; Loop until PostQuitMessage is sent;===================================StartLoop:invoke GetMessage,ADDR msg,NULL,0,0cmp eax, 0je ExitLoopinvoke TranslateMessage, ADDR msginvoke DispatchMessage, ADDR msgjmp StartLoopExitLoop:return msg.wParamWinMain endp; #########################################################################WndProc proc hWin :DWORD,uMsg :DWORD,wParam :DWORD,lParam :DWORDLOCAL var :DWORDLOCAL caW :DWORDLOCAL caH :DWORDLOCAL color :DWORDLOCAL hDC :DWORDLOCAL Rct :RECTLOCAL Ps :PAINTSTRUCTLOCAL buffer1[128]:BYTELOCAL buffer2[128]:BYTELOCAL lfnt :LOGFONTLOCAL psd :PAGESETUPDLGLOCAL pd :PRINTDLGLOCAL RectB :RECT.if uMsg == WM_COMMANDMOV EAX, wParam.if wParam == 499.endifmov ecx, hEmailmov edx, hWeb.if ecx == lParam || edx == lParam.if bMouseOvermov eax, Red.elsemov eax, Yellow.endifinvoke SetTextColor, wParam, eaxinvoke SetBkMode, wParam, TRANSPARENTmov eax, hBrush.endifret.elseif uMsg == WM_DRAWITEM.elseif uMsg == WM_CREATEMOV HotKeyMiniToggle, TRUEszText font1,'MS Sans Serif'invoke CreateFont,8,5,0,0,500,0,0,0, \DEFAULT_CHARSET,0,0,0,\DEFAULT_PITCH,ADDR font1mov hFont, eax   ;#####  Create 2 fonts    invoke  RtlZeroMemory, addr lfnt, sizeof LOGFONT    ;#####  Reg font    mov     lfnt.lfHeight, -11    mov     lfnt.lfWeight, FW_NORMAL   invoke  szCatStr, addr lfnt.lfFaceName, offset font1    ;#####  Bold font    mov     lfnt.lfUnderline, TRUE    invoke  CreateFontIndirect, addr lfnt    mov     hFontUl, eax;##### Web Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szWebText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,48,60,140, 17,hWin, 0,0, 0mov hWeb, eax;##### URL is dif than text, save URLinvoke SetWindowLong, eax, GWL_USERDATA, offset szWebURL;##### Subclass controlinvoke SetWindowLong, hWeb, GWL_WNDPROC, offset UrlProcmov lpOrgStaticProc, eaxinvoke SendMessage, hWeb, WM_SETFONT, hFont, FALSE;invoke GetSysColorBrush,COLOR_HIGHLIGHT ; COLOR_3DFACE;mov hBrush, eaxInvoke SetTimer, hWin, 1, 100, 0 ; HotKey TimerInvoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze Timer;szText lbl11, "?омашн¤¤ страница";invoke Static,ADDR lbl11,hWin,48,56,116,17,5500;mov LabelHandle5500, eaxszText lbl12, "Trainer for Game"invoke Static,ADDR lbl12,hWin,56,8,92,17,5501mov LabelHandle5501, eaxszText lbl13, "F12 - бесконечные патроны"invoke Static,ADDR lbl13,hWin,24,32,148,17,5502mov LabelHandle5502, eax.elseif uMsg == WM_TIMER.If wParam == 1 ; ### Timer Below ###Invoke GetKeyState, VK_HOMEmov HotBuffer1, eax.if HotBuffer1 > 1Invoke TrainerEngineRead, NULL, Offset WindCap, 001C0F965h, 1MOV Read, EAX.If Read == 001hInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00000, 4.ElseInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00001, 4.EndIf.endif.Endif ; ### Timer Above ###.If wParam == 2 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 3 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 4 ; ### EBFreeze Timer Below ###.Endif ; ### EBFreeze Timer Above ###    .elseif uMsg==WM_CTLCOLORSTATIC        mov     ecx, hEmail        mov     edx, hWeb        .if ecx == lParam || edx == lParam            .if bMouseOver                mov        eax, Red                        .else                mov     eax, Yellow            .endif            invoke  SetTextColor, wParam, eax            invoke  SetBkMode, wParam, TRANSPARENT            mov        eax, hBrush        .endif        ret.elseif uMsg == WM_HOTKEY.elseif uMsg == WM_PAINTinvoke BeginPaint,hWin,ADDR Psmov hDC, eaxinvoke Paint_Proc,hWin,hDCinvoke EndPaint,hWin,ADDR Psreturn 0.elseif uMsg == WM_DESTROYinvoke PostQuitMessage,NULLreturn 0.endifinvoke DefWindowProc,hWin,uMsg,wParam,lParamretWndProc endp; ########################################################################TopXY proc wDim:DWORD, sDim:DWORDshr sDim, 1 ; divide screen dimension by 2shr wDim, 1 ; divide window dimension by 2mov eax, wDim ; copy window dimension into eaxsub sDim, eax ; sub half win dimension from half screen dimensionreturn sDimTopXY endp; #########################################################################Paint_Proc proc hWin:DWORD, hDC:DWORDLOCAL btn_hi :DWORDLOCAL btn_lo :DWORDLOCAL Rct :RECTinvoke GetSysColor,COLOR_BTNHIGHLIGHTmov btn_hi, eaxinvoke GetSysColor,COLOR_BTNSHADOWmov btn_lo, eaxreturn 0Paint_Proc endp; ########################################################################OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORDLOCAL tbuff[20h]:bytemov ebx,pdisassume ebx:ptr DRAWITEMSTRUCT.if [ebx].CtlType == ODT_BUTTON.if pbkcol == 0.elseinvoke SetBkMode,[ebx].hdc,OPAQUEInvoke SetBkColor,[ebx].hdc,pbkcolInvoke CreateSolidBrush, pbkcolinvoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax.endifinvoke SetTextColor,[ebx].hdc,pcol.if ([ebx].itemState & ODS_SELECTED)invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECTinvoke OffsetRect,addr [ebx].rcItem,1,1.elseinvoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT.endifinvoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbufflea edx,[ebx].rcItemlea ecx,tbuffinvoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP.if [ebx].itemState & ODS_FOCUSinvoke InflateRect,addr [ebx].rcItem,-4,-4invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem.endif.endifassume ebx:nothingretOnDrawItem endp; ########################################################################UrlProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMlocal   rect:RECT    mov        eax,uMsg    .if eax == WM_MOUSEMOVE        invoke  GetClientRect, hWin, addr rect        invoke  GetCapture        ;#####  Make sure the mouse is in our control        .if eax != hWin            mov        bMouseOver, TRUE            invoke  SetCapture, hWin            invoke  SendMessage, hWin, WM_SETFONT, hFontUl, TRUE        .endif        mov        edx,lParam        movzx    eax,dx        shr        edx,16        .if eax > rect.right || edx > rect.bottom            ;#####  moved out of control            mov        bMouseOver, FALSE            invoke  ReleaseCapture            invoke  SendMessage, hWin, WM_SETFONT, hFont, TRUE        .endif    .elseif eax == WM_LBUTTONUP        mov        bMouseOver, FALSE        invoke  ReleaseCapture        invoke  SendMessage, hWin, WM_SETFONT, hFont, TRUE                ;#####  Get URL we stored with the control        invoke  GetWindowLong, hWin, GWL_USERDATA        invoke  ShellExecute, hMain, offset szShelOpen, eax, NULL, NULL, SW_SHOWNORMAL    .elseif eax==WM_SETCURSOR        invoke  LoadCursor, NULL, IDC_HAND        invoke  SetCursor, eax            .else        invoke  CallWindowProc, lpOrgStaticProc, hWin, uMsg, wParam, lParam        ret    .endif    xor        eax,eax    retUrlProc endpend start
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

лови. добавь там shell32.inc / shell32.lib

ps оно как кусок г. выглядит, даже unicode нету Lol

 

 

Ага, спасибо, работает :-D. Кодировка, правда, сломалась, но я поправил.

Ты вот это закомментировал:

Не понял - где теперь настроить положение надписи в окне?

 

А, все, нашел:

; #########################################################################;; This Is My Trainer Template Created For The Game Trainer Studio (Xeta);; This Is Based On A MASM Example.;; #########################################################################.386.model flat, stdcall ; 32 bit memory modeloption casemap :none ; case sensitiveinclude trainer.inc ; local includes for this fileinclude include\shell32.incincludelib lib\shell32.lib   UrlProc PROTO :DWORD, :DWORD, :DWORD, :DWORD; #########################################################################.datahFontUl DWORD ?lpOrgStaticProc DWORD ?lpOrgWebProc DWORD ?hBrush DWORD ?bMouseOver DWORD ?hEmail DWORD ?hWeb DWORD ?hMain DWORD ?szWndClsMain BYTE "SSC_MAIN", 0szWndClsStatic BYTE "STATIC", 0szWebText BYTE "Домашняя страница", 0szWebURL BYTE "http://forum.gamehacklab.ru", 0szShelOpen BYTE "open", 0LabelHandle5500 dd ?LabelHandle5501 dd ?LabelHandle5502 dd ?; ### Constants Below; ### Constants Above; ### Bytes BelowHotKey00000 db 000hdb 001hdb 000hdb 001hHotKey00001 db 001hdb 001hdb 001hdb 000h; ### Bytes Above; ### Button Messages Below; ### Button Messages AboveWindCap db "Game.exe",0szDisplayName db 'Trainer-2',0.codestart:invoke GetModuleHandle, NULLmov hInstance, eaxinvoke GetCommandLinemov CommandLine, eaxinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eax; #########################################################################WinMain proc hInst :DWORD,hPrevInst :DWORD,CmdLine :DWORD,CmdShow :DWORD;====================; Put LOCALs on stack;====================LOCAL wc :WNDCLASSEXLOCAL msg :MSGLOCAL Wwd :DWORDLOCAL Wht :DWORDLOCAL Wtx :DWORDLOCAL Wty :DWORD;==================================================; Fill WNDCLASSEX structure with required variables;==================================================invoke LoadIcon,hInst,500 ; icon IDmov hIcon, eaxszText szClassName,"Trainer_Class"mov wc.cbSize, sizeof WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAW \or CS_BYTEALIGNWINDOWmov wc.lpfnWndProc, offset WndProcmov wc.cbClsExtra, NULLmov wc.cbWndExtra, NULLm2m wc.hInstance, hInstmov wc.hbrBackground, COLOR_BTNFACE+1mov wc.lpszMenuName, NULLmov wc.lpszClassName, offset szClassNamem2m wc.hIcon, hIconinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor, eaxm2m wc.hIconSm, hIconinvoke RegisterClassEx, ADDR wc;================================; Centre window at following size;================================mov Wwd, 209 ; Dialog Widthmov Wht, 118 ; Dialog Heightinvoke GetSystemMetrics,SM_CXSCREENinvoke TopXY,Wwd,eaxmov Wtx, eaxinvoke GetSystemMetrics,SM_CYSCREENinvoke TopXY,Wht,eaxmov Wty, eaxinvoke CreateWindowEx,WS_EX_LEFT,ADDR szClassName,ADDR szDisplayName,WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,Wtx,Wty,Wwd,Wht,NULL,NULL,hInst,NULLmov hWnd,eaxinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd;===================================; Loop until PostQuitMessage is sent;===================================StartLoop:invoke GetMessage,ADDR msg,NULL,0,0cmp eax, 0je ExitLoopinvoke TranslateMessage, ADDR msginvoke DispatchMessage, ADDR msgjmp StartLoopExitLoop:return msg.wParamWinMain endp; #########################################################################WndProc proc hWin :DWORD,uMsg :DWORD,wParam :DWORD,lParam :DWORDLOCAL var :DWORDLOCAL caW :DWORDLOCAL caH :DWORDLOCAL color :DWORDLOCAL hDC :DWORDLOCAL Rct :RECTLOCAL Ps :PAINTSTRUCTLOCAL buffer1[128]:BYTELOCAL buffer2[128]:BYTELOCAL lfnt :LOGFONTLOCAL psd :PAGESETUPDLGLOCAL pd :PRINTDLGLOCAL RectB :RECT.if uMsg == WM_COMMANDMOV EAX, wParam.if wParam == 499.endifmov ecx, hEmailmov edx, hWeb.if ecx == lParam || edx == lParam.if bMouseOvermov eax, Red.elsemov eax, Yellow.endifinvoke SetTextColor, wParam, eaxinvoke SetBkMode, wParam, TRANSPARENTmov eax, hBrush.endifret.elseif uMsg == WM_DRAWITEM.elseif uMsg == WM_CREATEMOV HotKeyMiniToggle, TRUEszText font1,'MS Sans Serif'invoke CreateFont,8,5,0,0,500,0,0,0, \DEFAULT_CHARSET,0,0,0,\DEFAULT_PITCH,ADDR font1mov hFont, eax   ;#####  Create 2 fonts    invoke  RtlZeroMemory, addr lfnt, sizeof LOGFONT    ;#####  Reg font    mov     lfnt.lfHeight, -11    mov     lfnt.lfWeight, FW_NORMAL   invoke  szCatStr, addr lfnt.lfFaceName, offset font1    ;#####  Bold font    mov     lfnt.lfUnderline, TRUE    invoke  CreateFontIndirect, addr lfnt    mov     hFontUl, eax;##### Web Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szWebText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,48,60,140, 17,hWin, 0,0, 0mov hWeb, eax;##### URL is dif than text, save URLinvoke SetWindowLong, eax, GWL_USERDATA, offset szWebURL;##### Subclass controlinvoke SetWindowLong, hWeb, GWL_WNDPROC, offset UrlProcmov lpOrgStaticProc, eaxinvoke SendMessage, hWeb, WM_SETFONT, hFont, FALSE;invoke GetSysColorBrush,COLOR_HIGHLIGHT ; COLOR_3DFACE;mov hBrush, eaxInvoke SetTimer, hWin, 1, 100, 0 ; HotKey TimerInvoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze Timer;szText lbl11, "?омашн¤¤ страница";invoke Static,ADDR lbl11,hWin,48,56,116,17,5500;mov LabelHandle5500, eaxszText lbl12, "Trainer for Game"invoke Static,ADDR lbl12,hWin,56,8,92,17,5501mov LabelHandle5501, eaxszText lbl13, "F12 - бесконечные патроны"invoke Static,ADDR lbl13,hWin,24,32,148,17,5502mov LabelHandle5502, eax.elseif uMsg == WM_TIMER.If wParam == 1 ; ### Timer Below ###Invoke GetKeyState, VK_HOMEmov HotBuffer1, eax.if HotBuffer1 > 1Invoke TrainerEngineRead, NULL, Offset WindCap, 001C0F965h, 1MOV Read, EAX.If Read == 001hInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00000, 4.ElseInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00001, 4.EndIf.endif.Endif ; ### Timer Above ###.If wParam == 2 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 3 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 4 ; ### EBFreeze Timer Below ###.Endif ; ### EBFreeze Timer Above ###    .elseif uMsg==WM_CTLCOLORSTATIC        mov     ecx, hEmail        mov     edx, hWeb        .if ecx == lParam || edx == lParam            .if bMouseOver                mov        eax, Red                        .else                mov     eax, Yellow            .endif            invoke  SetTextColor, wParam, eax            invoke  SetBkMode, wParam, TRANSPARENT            mov        eax, hBrush        .endif        ret.elseif uMsg == WM_HOTKEY.elseif uMsg == WM_PAINTinvoke BeginPaint,hWin,ADDR Psmov hDC, eaxinvoke Paint_Proc,hWin,hDCinvoke EndPaint,hWin,ADDR Psreturn 0.elseif uMsg == WM_DESTROYinvoke PostQuitMessage,NULLreturn 0.endifinvoke DefWindowProc,hWin,uMsg,wParam,lParamretWndProc endp; ########################################################################TopXY proc wDim:DWORD, sDim:DWORDshr sDim, 1 ; divide screen dimension by 2shr wDim, 1 ; divide window dimension by 2mov eax, wDim ; copy window dimension into eaxsub sDim, eax ; sub half win dimension from half screen dimensionreturn sDimTopXY endp; #########################################################################Paint_Proc proc hWin:DWORD, hDC:DWORDLOCAL btn_hi :DWORDLOCAL btn_lo :DWORDLOCAL Rct :RECTinvoke GetSysColor,COLOR_BTNHIGHLIGHTmov btn_hi, eaxinvoke GetSysColor,COLOR_BTNSHADOWmov btn_lo, eaxreturn 0Paint_Proc endp; ########################################################################OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORDLOCAL tbuff[20h]:bytemov ebx,pdisassume ebx:ptr DRAWITEMSTRUCT.if [ebx].CtlType == ODT_BUTTON.if pbkcol == 0.elseinvoke SetBkMode,[ebx].hdc,OPAQUEInvoke SetBkColor,[ebx].hdc,pbkcolInvoke CreateSolidBrush, pbkcolinvoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax.endifinvoke SetTextColor,[ebx].hdc,pcol.if ([ebx].itemState & ODS_SELECTED)invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECTinvoke OffsetRect,addr [ebx].rcItem,1,1.elseinvoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT.endifinvoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbufflea edx,[ebx].rcItemlea ecx,tbuffinvoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP.if [ebx].itemState & ODS_FOCUSinvoke InflateRect,addr [ebx].rcItem,-4,-4invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem.endif.endifassume ebx:nothingretOnDrawItem endp; ########################################################################UrlProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMlocal   rect:RECT    mov        eax,uMsg    .if eax == WM_MOUSEMOVE        invoke  GetClientRect, hWin, addr rect        invoke  GetCapture        ;#####  Make sure the mouse is in our control        .if eax != hWin            mov        bMouseOver, TRUE            invoke  SetCapture, hWin            invoke  SendMessage, hWin, WM_SETFONT, hFontUl, TRUE        .endif        mov        edx,lParam        movzx    eax,dx        shr        edx,16        .if eax > rect.right || edx > rect.bottom            ;#####  moved out of control            mov        bMouseOver, FALSE            invoke  ReleaseCapture            invoke  SendMessage, hWin, WM_SETFONT, hFont, TRUE        .endif    .elseif eax == WM_LBUTTONUP        mov        bMouseOver, FALSE        invoke  ReleaseCapture        invoke  SendMessage, hWin, WM_SETFONT, hFont, TRUE                ;#####  Get URL we stored with the control        invoke  GetWindowLong, hWin, GWL_USERDATA        invoke  ShellExecute, hMain, offset szShelOpen, eax, NULL, NULL, SW_SHOWNORMAL    .elseif eax==WM_SETCURSOR        invoke  LoadCursor, NULL, IDC_HAND        invoke  SetCursor, eax            .else        invoke  CallWindowProc, lpOrgStaticProc, hWin, uMsg, wParam, lParam        ret    .endif    xor        eax,eax    retUrlProc endpend start
;szText lbl11, "?омашн¤¤ страница";invoke Static,ADDR lbl11,hWin,48,56,116,17,5500;mov LabelHandle5500, eax
;##### Web Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szWebText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,48,60,140, 17,hWin, 0,0, 0
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.