mirror of
https://github.com/stasenso/Puer.git
synced 2026-06-26 21:32:42 +03:00
First window (init commit)
This commit is contained in:
+14
@@ -0,0 +1,14 @@
|
|||||||
|
# ---> VisualStudioCode
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
*.obj
|
||||||
Vendored
+56
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||||
|
// for the documentation about the tasks.json format
|
||||||
|
"version":"2.0.0",
|
||||||
|
"tasks":[
|
||||||
|
{
|
||||||
|
"label":"assemble",
|
||||||
|
"type":"shell",
|
||||||
|
"args":[
|
||||||
|
"/I",
|
||||||
|
"include",
|
||||||
|
"/c",
|
||||||
|
"src/${fileBasenameNoExtension}.asm"
|
||||||
|
|
||||||
|
],
|
||||||
|
"command":"ml64.exe",
|
||||||
|
"problemMatcher":{
|
||||||
|
"owner":"nasm",
|
||||||
|
"fileLocation":["relative","${workspaceFolder}"],
|
||||||
|
"pattern":{
|
||||||
|
"regexp":"^(.*)\\((\\d*)\\)\\s+:?\\s+(error|warning)\\s+([A-z]+\\d+):\\s+(.*)$",
|
||||||
|
"file":1,
|
||||||
|
"line":2,
|
||||||
|
"severity":3,
|
||||||
|
"code":4,
|
||||||
|
"message":5,
|
||||||
|
"loop":true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label":"link",
|
||||||
|
"type":"shell",
|
||||||
|
"args":[
|
||||||
|
"/SUBSYSTEM:WINDOWS",
|
||||||
|
"/MACHINE:X64",
|
||||||
|
"/ENTRY:entry_point",
|
||||||
|
"/nologo",
|
||||||
|
"/LARGEADDRESSAWARE",
|
||||||
|
"${fileBasenameNoExtension}.obj"
|
||||||
|
],
|
||||||
|
"command":"link.exe",
|
||||||
|
"dependsOn":"assemble"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label":"execute",
|
||||||
|
"type":"shell",
|
||||||
|
"command":"${workspaceFolder}/${fileBasenameNoExtension}.exe",
|
||||||
|
"group":{
|
||||||
|
"kind":"build",
|
||||||
|
"isDefault":true
|
||||||
|
},
|
||||||
|
"dependsOn":"link"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -0,0 +1,5 @@
|
|||||||
|
# Cocaine -
|
||||||
|
A playful name for a low-level replacement for the Caffeine app. It works by calling SetThreadExecutionState
|
||||||
|
# Кокаин -
|
||||||
|
Шутливое название для низкоуровневой замены приложения Caffeine. Работает за счёт вызова SetThreadExecutionState
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
include /masm64/include64/masm64rt.inc
|
||||||
|
;______________________Прототипы__________________________
|
||||||
|
WinMain proto :HINSTANCE,:HINSTANCE,:LPSTR,:QWORD
|
||||||
|
|
||||||
|
myPaint proto :HWND ;Обработка сообщения WM_PAINT
|
||||||
|
myDraw proto nSegment:DWORD ;принимаю параметр с колличеством сегментов (в HIWORD) и номером данного сегмента (в LOWORD)
|
||||||
|
;_______________________________________________________
|
||||||
|
.data?
|
||||||
|
hInstance HINSTANCE ? ; Хэндл нашей пpогpаммы
|
||||||
|
CommandLine LPSTR ?
|
||||||
|
BITMAPINFOHEADER STRUCT
|
||||||
|
biSize DWORD ?;
|
||||||
|
biWidth LONG ?;
|
||||||
|
biHeight LONG ?;
|
||||||
|
biPlanes WORD ?;
|
||||||
|
biBitCount WORD ?;
|
||||||
|
biCompression DWORD ?;
|
||||||
|
biSizeImage DWORD ?;
|
||||||
|
biXPelsPerMeter LONG ?;
|
||||||
|
biYPelsPerMeter LONG ?;
|
||||||
|
biClrUsed DWORD ?;
|
||||||
|
biClrImportant DWORD ?;
|
||||||
|
BITMAPINFOHEADER ENDS
|
||||||
|
RGBQUAD STRUCT
|
||||||
|
rgbBlue BYTE ?
|
||||||
|
rgbGreen BYTE ?
|
||||||
|
rgbRed BYTE ?
|
||||||
|
rgbReserved BYTE ?
|
||||||
|
RGBQUAD ENDS
|
||||||
|
BITMAPINFO STRUCT
|
||||||
|
bmiHeader BITMAPINFOHEADER <>
|
||||||
|
bmiColors RGBQUAD <>
|
||||||
|
BITMAPINFO ENDS
|
||||||
|
|
||||||
|
|
||||||
|
;_______________________________________________________
|
||||||
|
.data
|
||||||
|
szClassName db "CocaClass",0 ; Имя нашего класса окна
|
||||||
|
AppName db "Cocaine - no sleeping on the job!",0 ; Имя нашего окна
|
||||||
|
ELAPSE_UPDTIMER EQU 20
|
||||||
|
IDT_UPDTIMER EQU 111
|
||||||
|
wc WNDCLASSEX <sizeof WNDCLASSEX,CS_HREDRAW or CS_VREDRAW,WndProc,0,0,?,?,?,COLOR_WINDOW+1,NULL,szClassName,?>
|
||||||
|
bmi BITMAPINFO <>
|
||||||
|
rc RECT <>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
include template.inc
|
||||||
|
.code
|
||||||
|
entry_point proc
|
||||||
|
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
|
||||||
|
mov hInstance,rax ; Под Win32, hmodule==hinstance mov hInstance,eax
|
||||||
|
invoke GetCommandLine ; Взять командную стpоку. Вы не обязаны
|
||||||
|
;вызывать эту функцию ЕСЛИ ваша пpогpамма не обpабатывает командную стpоку.
|
||||||
|
mov CommandLine,rax
|
||||||
|
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию
|
||||||
|
invoke ExitProcess, rax ; Выйти из пpогpаммы.
|
||||||
|
; Возвpащаемое значение, помещаемое в eax, беpется из WinMain'а.
|
||||||
|
entry_point endp
|
||||||
|
;______________________________________________________________________________________________________________________________________________________________
|
||||||
|
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:QWORD
|
||||||
|
; создание локальных пеpеменных в стеке
|
||||||
|
LOCAL msg:MSG
|
||||||
|
LOCAL hwnd:HWND
|
||||||
|
;регистрация оконного класса
|
||||||
|
push hInstance
|
||||||
|
pop wc.hInstance
|
||||||
|
invoke LoadIcon,NULL,IDI_APPLICATION
|
||||||
|
mov wc.hIcon,rax
|
||||||
|
mov wc.hIconSm,rax
|
||||||
|
invoke LoadCursor,NULL,IDC_ARROW
|
||||||
|
mov wc.hCursor,rax
|
||||||
|
invoke RegisterClassEx, addr wc ; pегистpация нашего класса окнаW
|
||||||
|
invoke CreateWindowEx,NULL,ADDR szClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,282,0,1354,1017,NULL,NULL,hInst,NULL
|
||||||
|
mov hwnd,rax
|
||||||
|
invoke ShowWindow,hwnd,CmdShow ; отобpазить наше окно на десктопе (вместо CmdShow можно указать свойство 3 - во весь экран)
|
||||||
|
invoke UpdateWindow, hwnd ; обновить клиентскую область
|
||||||
|
.while TRUE ; Enter message loop
|
||||||
|
invoke GetMessage, ADDR msg,NULL,0,0
|
||||||
|
.break .if (rax==0)
|
||||||
|
invoke TranslateMessage, ADDR msg
|
||||||
|
invoke DispatchMessage, ADDR msg
|
||||||
|
.endw
|
||||||
|
mov rax,msg.wParam ; сохpанение возвpащаемого значения в eax
|
||||||
|
ret
|
||||||
|
WinMain endp
|
||||||
|
;______________________________________________________________________________________________________________________________________________________________
|
||||||
|
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
||||||
|
LOCAL hDC:HDC
|
||||||
|
.if uMsg==WM_DESTROY ; если пользователь закpывает окно
|
||||||
|
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
|
||||||
|
.elseif uMsg==WM_CREATE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.elseif uMsg==WM_PAINT
|
||||||
|
invoke myPaint,hWnd
|
||||||
|
.elseif uMsg==WM_ERASEBKGND
|
||||||
|
mov rax,TRUE
|
||||||
|
ret
|
||||||
|
.else
|
||||||
|
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефолтная функция обpаботки окна
|
||||||
|
ret
|
||||||
|
.endif
|
||||||
|
xor rax,rax
|
||||||
|
|
||||||
|
ret
|
||||||
|
WndProc endp
|
||||||
|
;______________________________________________________________________________________________________________________________________________________________
|
||||||
|
|
||||||
|
;______________________________________________________________________________________________________________________________________________________________
|
||||||
|
|
||||||
|
;______________________________________________________________________________________________________________________________________________________________
|
||||||
|
myPaint proc hWndPaint:HWND
|
||||||
|
LOCAL ps:PAINTSTRUCT
|
||||||
|
invoke BeginPaint,hWndPaint,ptr$(ps) ;тут создаётся контекст устройства окна
|
||||||
|
|
||||||
|
|
||||||
|
invoke EndPaint,hWndPaint,ptr$(ps)
|
||||||
|
ret
|
||||||
|
myPaint endp
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user