Japonamat Опубликовано 23 апреля, 2015 Поделиться Опубликовано 23 апреля, 2015 Всем привет. Ребят, помогите с куском кода, плиз! Сам трейнер делаю в Game Trainer Studio, но там возможностей не хватает или я о них не знаю, приходиться дорабатывать код вручную, но тут я плаваю.Собственно суть в заголовке. Нужно в окне трейнера вставить ссылку на свой сайт, в html это выглядело бы так:[url="http://mojsite.ru"]Домашняя страница[/URL]Тут, как я понимаю, трейнер должен запустить ИЕ с заданными параметрами, то есть с конкретным адресом.Да, и в какую секцию надо будет вставлять этот код? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 апреля, 2015 Поделиться Опубликовано 23 апреля, 2015 В диалоге делаешь метку с нужным текстом, в коде делаешь по клику на эту метку ShellExecute на свой сайт, и сайт откроется в браузере по умолчанию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Japonamat Опубликовано 23 апреля, 2015 Автор Поделиться Опубликовано 23 апреля, 2015 В диалоге делаешь метку с нужным текстом, в коде делаешь по клику на эту метку ShellExecute на свой сайт, и сайт откроется в браузере по умолчанию.С моими знаниями мне это ни о чем не говорит . Хорошо бы пример кода, а там я его уже доведу до ума на практике. Ссылка на комментарий Поделиться на другие сайты Поделиться
CuBiC Опубликовано 23 апреля, 2015 Поделиться Опубликовано 23 апреля, 2015 Пишу с телефона, поэтому даю ссылку.http://autoit-script.ru/autoit3_docs/functions/ShellExecute.htmНа onclick добавь вызов функции ShellExecute. Ссылка на комментарий Поделиться на другие сайты Поделиться
Japonamat Опубликовано 24 апреля, 2015 Автор Поделиться Опубликовано 24 апреля, 2015 Пишу с телефона, поэтому даю ссылку.http://autoit-script.ru/autoit3_docs/functions/ShellExecute.htmНа onclick добавь вызов функции ShellExecute.Посмотрел - не осилю . Хотелось бы готовый образец, если не трудно Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 ShellExecute(nil, 'open', 'http://forum.gamehacklab.ru/', nil, nil, SW_SHOW); Вместо "nil" может потребоваться использовать "NULL" - зависит от языка Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 Привет! Попробуй сначала написать сам, если не сработает - покажи, как пытался, а мы попробуем помочь. Если снабдить тебя готовым решением - ты так и не узнаешь, как оно работает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 Даю подсказку - строки нужно объявить в секции .dataОбработчик клика надо делать в оконной процедуре, где идет цикл обработки сообщений.И вызвать функцию можно командой call ShellExecute, но предварительно все параметры нужно положить в стек в нужном порядке.Пока все. Пробуй. Не получится - спрашивай. Ссылка на комментарий Поделиться на другие сайты Поделиться
Japonamat Опубликовано 24 апреля, 2015 Автор Поделиться Опубликовано 24 апреля, 2015 Попробуй сначала написать сам, если не сработает - покажи, как пытался, а мы попробуем помочь.Я пишу не сам, за меня пишет Game Trainer Studio. А дальше я, по возможности, дорабатываю.Задача.Дано:Требуется:Сделать надпись "Домашняя страница" ссылкой. Вот как подступиться к этой задаче - я даже не представляю, честно сказать . Обработчик клика, стек - для меня темный-темный лес... ЗЫ. Блин, да что ж я никак со спойлером не могу подружиться...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 Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 25 апреля, 2015 Поделиться Опубликовано 25 апреля, 2015 вроде адекватный пример:http://www.dreamincode.net/forums/topic/241669-masm-creating-a-hyperlink/ Я пишу не сам, за меня пишет Game Trainer Studio. А дальше я, по возможности, дорабатываю.надо наоборот. взять тот код как пример, исправить бредокод +переписать его на fasm или nasm а потом добавлять функционал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Japonamat Опубликовано 25 апреля, 2015 Автор Поделиться Опубликовано 25 апреля, 2015 вроде адекватный пример:http://www.dreamincode.net/forums/topic/241669-masm-creating-a-hyperlink/Выглядит все вполне прилично, но готовая ссылка в программе не работает, то есть при клике на ней ничего происходит. Почему? надо наоборот. взять тот код как пример, исправить бредокод +переписать его на fasm или nasm а потом добавлять функционал.Для меня что masm, что fasm или nasm - темный лес. Просто Game Trainer Studio пишет именно на masm, а мне уже приходиться экспериментировать с тем, что есть. Сам я код не напишу, не умею. Ссылка на комментарий Поделиться на другие сайты Поделиться
Japonamat Опубликовано 25 апреля, 2015 Автор Поделиться Опубликовано 25 апреля, 2015 (изменено) Попробую зайти с другой стороны . Нашел такой пример в сети: Проверил - работает. Но тут куча лишнего, то, что мне совсем не нужно. Пробовал удалять - сыплются ошибки. Помогите удалить мусор, ребята! Надо оставить только голый каркас программы с надписью-ссылкой "Домашняя страница". Все!.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 Изменено 25 апреля, 2015 пользователем Japonamat Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 27 апреля, 2015 Поделиться Опубликовано 27 апреля, 2015 лови. добавь там shell32.inc / shell32.libps оно как кусок г. выглядит, даже 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Japonamat Опубликовано 27 апреля, 2015 Автор Поделиться Опубликовано 27 апреля, 2015 лови. добавь там shell32.inc / shell32.libps оно как кусок г. выглядит, даже 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;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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения