Kibor Bot Autoclicker » Kibor - Integrated development environment for bots » About Kibor » Version 5.87 Creating your own dialog boxes using WinApi

Страниц (1): [1]
 

1. Kibor - 21 Марта, 2021 - 10:47:19 - перейти к сообщению
Description -(для просмотра ссылки Вам необходимо авторизоваться)
CODE:
#define WS_MINIMIZEBOX 131072
#define WS_MAXIMIZEBOX 65536
#define WS_VISIBLE 268435456
#define WS_CAPTION 12582912
#define WS_SYSMENU 524288
#define WS_CHILD 1073741824

#define COLOR_APPWORKSPACE 12

#define WM_LBUTTONDOWN 513
#define WM_COMMAND 273
#define WM_CREATE 1
#define WM_LBUTTONDOWN 513

external(INT, "RegisterClass", "RegisterClassA", "User32.dll" );
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "LoadCursor", "LoadCursorA", "User32.dll" );
external(INT, "LoadCursor", "LoadCursorA", "User32.dll" );
external(INT, "LoadIcon", "LoadIconA", "User32.dll" );

////////////////////
int b1;

int WinProc=address("WindowProc");
char Class[8]={'m', 'y', 'c', 'l', 'a', 's', 's', 0};
int CLASS=address(#PWNDCLASS[0]);//Указатель на название класа

int PWNDCLASS[10];//Структура WNDCLASS
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру

writeaddress(WinProc, address(#PWNDCLASS[1]));//Указываем адрес функции WindowProc
writeaddress(COLOR_APPWORKSPACE, address(#PWNDCLASS[7]));//Указываем цвет диалога
writeaddress(address(#Class[0]), address(#PWNDCLASS[9]));//Указываем указатель на название класа

if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать клас"); goto er;}

int Win=CreateWindow(0, address(#Class[0]), "Основное окно",
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
10, 10, 500, 500, 0, 0, 0, 0);

/////////////////////

loop()sleep(10);

er:;


//Тут можно создавать контролы для окна, поскольку оно одно и мы можем указать родительским окном для контролов message.hwnd
function getmessage(WM_CREATE)
{
b1=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 200, 30, message.hwnd, 0, 0, 0);
}


function getmessage(WM_LBUTTONDOWN)
{
if (message.hwnd==Win)//Если сообщение от окна
{
beep(1000, 100);
}
}

function getmessage(WM_COMMAND)
{
if (message.lparam==b1)//Если кнопка
{
messagebox ("Кнопка");
}
}



CODE:
#define WS_MINIMIZEBOX 131072
#define WS_MAXIMIZEBOX 65536
#define WS_VISIBLE 268435456
#define WS_CAPTION 12582912
#define WS_SYSMENU 524288
#define WS_CHILD 1073741824

#define COLOR_APPWORKSPACE 12

#define WM_LBUTTONDOWN 513
#define WM_COMMAND 273
#define WM_CREATE 1
#define WM_LBUTTONDOWN 513

external(INT, "RegisterClass", "RegisterClassA", "User32.dll" );
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "LoadCursor", "LoadCursorA", "User32.dll" );
external(INT, "LoadCursor", "LoadCursorA", "User32.dll" );
external(INT, "LoadIcon", "LoadIconA", "User32.dll" );

////////////////////

int WinProc=address("WindowProc");
char Class[8]={'m', 'y', 'c', 'l', 'a', 's', 's', 0};
int CLASS=address(#PWNDCLASS[0]);//Указатель на название класа

int PWNDCLASS[10];//Структура WNDCLASS
initialarray(#PWNDCLASS[0], 0);//Обнуляем структуру

writeaddress(WinProc, address(#PWNDCLASS[1]));//Указываем адрес функции WindowProc
writeaddress(COLOR_APPWORKSPACE, address(#PWNDCLASS[7]));//Указываем цвет диалога
writeaddress(address(#Class[0]), address(#PWNDCLASS[9]));//Указываем указатель на название класа

if (RegisterClass(CLASS)==0){messagebox("Не удалось зарегистрировать клас"); goto er;}

int Win=CreateWindow(0, address(#Class[0]), "Первое окно",
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
10, 10, 500, 500, 0, 0, 0, 0);

int Win_D=CreateWindow(0, address(#Class[0]), "Дочерное окно в окне",
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_CHILD,
10, 50, 300, 200, Win, 0, 0, 0);
//Кнопку создаем посде создания окна и получения на него HWND, а не в сообщение WM_CREATE, так как в том сообщение окно еще не записало в Win = HWND
int b1=CreateWindow(0, "BUTTON", "Кнопка в доч окне", WS_VISIBLE | WS_CHILD, 10, 10, 200, 30, Win_D, 0, 0, 0);

int Win2=CreateWindow(0, address(#Class[0]), "Второе окно",
WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
515, 10, 500, 200, 0, 0, 0, 0);
int b2=CreateWindow(0, "BUTTON", "Кнопка", WS_VISIBLE | WS_CHILD, 10, 10, 120, 30, Win2, 0, 0, 0);

/////////////////////

loop()sleep(10);

er:;

/*
//Тут контролы не создаем, так как в переменные Win и Win2 HWND будут записаны только после отработки функций CreateWindow!
function getmessage(WM_CREATE)
{

}
*/

function getmessage(WM_LBUTTONDOWN)
{
if (message.hwnd==Win2)//Если сообщение от второго окна
{
beep(1000, 100);
}
}

function getmessage(WM_COMMAND)
{
if (message.lparam==b1)//Если кнопка в дочерном окне
{
messagebox ("Кнопка в доч окне");
}
if (message.lparam==b2)//Если кнопка во втором окне
{
messagebox ("Кнопка");
}
}

Powered by ExBB FM 1.0 Final