Budni |
Отправлено: 30 Октября, 2019 - 08:34:56
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
Как сделать так чтобы после нажатия на одну из цифр срабатывал код из функции? И прирывался если выберется другая функция? В этом Диалоговом окне?
Д.Окно (Отобразить)CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define LB_ADDSTRING 384
#define LB_SETCURSEL 390
#define WS_VSCROLL 2097152
#define LB_DELETESTRING 386
#define LB_GETCURSEL 392
#define LBS_NOTIFY 1
#define SS_NOTIFY 256
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int static;
int list;
int current_item=0;
createdialog(0);
showdialog(0, "Скрипты",300, 300, 380, 215, 1, 1);
for (int h=0; h<10; h++){
add_list(format(h));
}
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
list=CreateWindow(0, "LISTBOX", "", LBS_NOTIFY | WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL, 10, 10, 15, 170, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 12, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 26, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 42, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 58, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 74, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 90, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 106, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 122, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 138, 400, 18, gethwnd(0), 0, 0, 0);
static=CreateWindow(0, "STATIC", " - скрипт для много текста для описания скрипта", SS_NOTIFY | WS_CHILD | WS_VISIBLE, 25, 154, 400, 18, gethwnd(0), 0, 0, 0);
}
function add_list(string s)
{
new char c[size(s)+1];
strcpy(#c[0], s);
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list));
delete c;
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam==list)
{
current_item=sendmessage(LB_GETCURSEL, 0, 0, formatiw(list));
textout(0, 350, 350, "Выбран пункт: "+format(current_item), 1);
}
}
function 0p(){
}
function 1p(){
}
function 2p(){
}
function 3p(){
}
function 4p(){
}
function 5p(){
}
function 6p(){
}
function 7p(){
}
function 8p(){
}
function 9p(){
}
|
|
|
Zireael |
Отправлено: 30 Октября, 2019 - 10:09:27
|
Эксперт
Покинул форум
Сообщений всего: 4468
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать так чтобы после нажатия на одну из цифр срабатывал код из функции?
Добавить вызовы функций:
CODE: current_item=sendmessage(LB_GETCURSEL, 0, 0, formatiw(list));
textout(0, 350, 150, "Выбран пункт: "+format(current_item), 1);
if(current_item==0){0p(); return;} // если выбрана строка 0
if(current_item==1){1p(); return;} // если выбрана строка 1
// тоже самое для остальных
(Добавление)
Цитата: что бы менялся курсор в окружности
code (Отобразить)CODE:#define PS_SOLID 0
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "Ellipse", "Ellipse", "Gdi32.dll");
int hdc, pen, brush1, brush2, old_pen, old_brush;
int mouseX, mouseY;
win dialog;
int centrX=100, centrY=100, radius=70; // центр и радиус окружности
int distance;
pen=CreatePen(PS_SOLID, 2, 16017042); // тип линии, толщина и цвет
brush1=CreateSolidBrush(65280); // фон для круга
brush2=CreateSolidBrush(255); // фон для круга
createdialog(0);
showdialog(0, "Диалог",300, 300, 250, 250, 1, 1);
textbkcolor(16000000, 65279);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
hdc=GetDC(gethwnd(0));
}
CREATE_TIMER(0, 100)
{
// рисуем круг
old_pen=SelectObject(hdc, pen);
getmouse(mouseX, mouseY, dialog);
distance=sqrt(pow(mouseX-centrX, 2)+pow(mouseY-centrY, 2)); // расстояние от курсора до центра окружности
if(distance<radius)old_brush=SelectObject(hdc, brush1);
else old_brush=SelectObject(hdc, brush2);
Ellipse(hdc, centrX-radius, centrY-radius, centrX+radius, centrY+radius);
SelectObject(hdc, old_pen);
SelectObject(hdc, old_brush);
/////////
}
function getmessage(0, WM_MOVE)
{
pause(100);
} |
|
|
Zireael |
Отправлено: 02 Ноября, 2019 - 02:02:54
|
Эксперт
Покинул форум
Сообщений всего: 4468
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать,что бы возвращал какая винда стоит?
CODE:#define SW_HIDE 0
external(INT, "ShellExecute", "ShellExecuteA", "Shell32.dll");
string s, os_name;
writeclipboard ("");
ShellExecute(0, "open", "C:\WINDOWS\system32\cmd.exe", "/c chcp 65001 && systeminfo | clip", "", SW_HIDE);
looptime(10000)
{
readclipboard (s);
if(regexsearch(1, #os_name, s, "OS Name")) // пока в буфере не появится имя ОС
{
// messagebox(s); // содержимое буфера
if(regexreplace(1, #os_name, s, "(.*?OS Name.*?)(Windows[^\r\n]+)(.*)", "$2", SINGLELINE)){messagebox(os_name); break;}
}
sleep(300);
} |
|
|
|