Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (4): « 1 2 [3] 4 »   

> Без описания
Zireael
Отправлено: 07 Марта, 2019 - 07:25:26
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Как еще сделать и ограничить минимальный размер окна

Никак, тоже самое что и с перекрашивание статика. Нет функционала.
 
 Top
Kibor
Отправлено: 07 Марта, 2019 - 11:06:48
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8091
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 007wan пишет:
Как еще сделать и ограничить минимальный размер окна, что бы не пропали контролы

CODE:
#define WS_SIZEBOX 262144
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll");

int Button1, x;
win w;
createdialog(0);
SetWindowPos(Button1, 0, x-50, 10, 40, 20, 0);

loop()sleep(1);


function getmessage (0, WM_CREATE)
{
SetWindowLong(gethwnd(0), -16, GetWindowLong(gethwnd(0), -16) + WS_SIZEBOX); // добавляем стиль к диалогу (позволяет растягивать диалог за край окна)
showdialog(0, "Диалог", 558, 234, 250, 300, 1, 0);
Button1 = CreateWindow(0, "BUTTON", "1", 1342177280, 0, 0, 0, 0, gethwnd(0), 0, 0, 0);
}


function getmessage (0, WM_SIZE) // если меняется размер окна
{
w= window ("Диалог");
if (message.x<200)
{
w.width=200;
movewindow(w);
}
if (message.y<250)
{
w.height=250;
movewindow(w);
}

x=message.x;
SetWindowPos(Button1, 0, message.x-50, 10, 40, 20, 0);
}

Максимальный так же.
 
 Top
007wan
Отправлено: 07 Марта, 2019 - 12:33:23
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Я не могу это сопоставить со своим диалогом
(Добавление)
А во. всё
 
 Top
007wan
Отправлено: 07 Марта, 2019 - 14:37:50
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Как сделать вывод визуального окна(уже сложнее) в зависимости от ширины и высоты окна, причем ширина и высота тесно связано между собой:

максимальная ширина окна = 1034.
максимальная высота окна = 819.
минимальная ширина окна = 644.
минимальная высота окна = 534.

Почему я решил, что ширина и высота тесно связана:
если меняем ширину(тянем за угол), то высота же остается неизменной и так же наоборот(тянем за высоту). поэтому надо, что бы высота и ширина в правильных пропорция уменьшала или увеличивала масштаб визуального окна.

Координаты визуального окна(положение и размеры в диалоге): 294,111,1292,841.
(Добавление)
Kibor ,
CODE:
function getmessage (0, WM_SIZE)
{
MainWindow = window ("Диалог");


if (message.x < 644)
{
MainWindow.width = 644;
movewindow(MainWindow);

}
[size=18]
if (message.y < 534)
{
MainWindow.height = 534);

}
[/size]
if (message.x > 1034)
{
MainWindow.width = 1034;
movewindow(MainWindow);

}

if (message.y > 819)
{
MainWindow.height = 819;
movewindow(MainWindow);

}



Button3_X = message.x;
SetWindowPos(Button3, 0, message.x-30, 10, 20, 20, 0);
}

То, что я отметил не работает
(Добавление)
 007wan пишет:
movewindow(MainWindow);
Сорян. Случайно стер и не заметил. целый час искал)
(Добавление)
CODE:
if (message.y < 534)
{
MainWindow.height = 534);
movewindow(MainWindow);
}

if (message.y > 819)
{
MainWindow.height = 819;
movewindow(MainWindow);

}

Да-да. Всё верно сделал и почему-то с высотой не работает, а с шириной пашет
(Добавление)
CODE:
#define WS_SIZEBOX 262144
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll");

int Button1, x;
win w;
createdialog(0);
SetWindowPos(Button1, 0, x-50, 10, 40, 20, 0);

loop()sleep(1);


function getmessage (0, WM_CREATE)
{
SetWindowLong(gethwnd(0), -16, GetWindowLong(gethwnd(0), -16) + WS_SIZEBOX); // äîáàâëÿåì ñòèëü ê äèàëîãó (ïîçâîëÿåò ðàñòÿãèâàòü äèàëîã çà êðàé îêíà)
showdialog(0, "Äèàëîã", 558, 234, 250, 300, 1, 0);
Button1 = CreateWindow(0, "BUTTON", "1", 1342177280, 0, 0, 0, 0, gethwnd(0), 0, 0, 0);
}


function getmessage (0, WM_SIZE) // åñëè ìåíÿåòñÿ ðàçìåð îêíà
{
w= window ("Äèàëîã");
if (message.x < 644)
{
w.width = 644;
movewindow(w);

}

if (message.x > 1034)
{
w.width = 1034;
movewindow(w);

}

if (message.y < 534)
{
w.height = 534);
movewindow(w);
}

if (message.y > 819)
{
w.height = 819;
movewindow(w);

}

x=message.x;
SetWindowPos(Button1, 0, message.x-50, 10, 40, 20, 0);
}

даже на примере не работает
(Добавление)
CODE:
if (message.y < 534)
{
w.height = 534);
movewindow(w);
}
Именно оно не работает, а другие 3 работают
(Добавление)
CODE:
А всё. нашел ошубка там скобка мешалась
 
 Top
007wan
Отправлено: 29 Марта, 2019 - 14:38:23
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Вообщем я сделал так:
При кручении колесика прибавляется значение 1. (в зависимости как крутим если вниз, то минусуется, а если вверх , то прибвляется).
Минимальное значение колесика = 38, а максимальное = 100;

Потом это значение идет в расчеты:
рассчитал ширину визуального окна таким образом:
CODE:

VisualWindow_Width = 1000/100*Value1;
/*
1000/100*значение колесика.
*/

А ширину таким образом:
CODE:
VisualWindow_Height = 730/100*Value1;

Потом зная ширину окна я мысленно прибавляю +20(отступ)
CODE:
SetWindowPos(Object_Listbox1, 0, VisualWindow_Width+20, 10, 200, VisualWindow_Height+30, 0);

Далее, я раз знаю ширину визуального окна, а еще значит складываю все отступы, а так же ширину списка+ еще один отстпу и мы теперь знаем какой предел окна будет, т.е ширина окна будет = ширины визуального окна+ширины списка+отстпупы эти контроллов+ 20
CODE:
MainWindow.width = Listbox1_Size[0]+VisualWindow_Width+30+(MainWindow.width-MainWindow.widthclient);
MainWindow.height = VisualWindow_Height+50+(MainWindow.height-MainWindow.heightclient);
movewindow(MainWindow);


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

Вот код для скроллера мыши:(это то, что я описал выше, только цельный)
CODE:
function getmessage(0, WM_MOUSEWHEEL)
{

resettextout(1);


if(message.wparam > 0)
{
Value1++;
}
else
{
Value1--;
}

if (Value1 < 38)
{
Value1 = 38;
}

if (Value1 > 100)
{
Value1 = 100;
}

if (Game != 0)
{
if(format(#Text_Button2[0]) == "Получить изображение из игры")
{
visualwindow(MainWindow, 0, 0, 0, Game.widthclient, Game.heightclient, 10, 40, Value1, Game);

}

}

VisualWindow_Width = 1000/100*Value1;
VisualWindow_Height = 730/100*Value1;

textout(0, 0, 0, format(VisualWindow_Width)+","+format(VisualWindow_Height)+","+format(Value1)+"-"+format(hiword(message.wparam)), 1);
//visualwindow(MainWindow, 0, 0, 0, sizearray(VisualImage), sizearray(VisualImage[]), 10, 40, Value1, #VisualImage[0][0]);
SetWindowPos(Object_Listbox1, 0, VisualWindow_Width+20, 10, 200, VisualWindow_Height+30, 0);

MainWindow.width = Listbox1_Size[0]+VisualWindow_Width+30+(MainWindow.width-MainWindow.widthclient);
MainWindow.height = VisualWindow_Height+50+(MainWindow.height-MainWindow.heightclient);
movewindow(MainWindow);
}

(Добавление)
 007wan пишет:
VisualWindow_Width = 1000/100*Value1;
/*
1000/100*значение колесика.
*/

Где 1000 и 730 это ширина и высота визуального окна в максимальных размерах, а 38 это масштаб его.
(Добавление)
Тоесть при кручении колеса меняется масштаб, а потом вычитывается и размер и размер окна и списка меняется
 
 Top
007wan
Отправлено: 30 Марта, 2019 - 09:10:52
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




CODE:

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateMenu", "CreateMenu", "User32.dll" );
external(INT, "CreatePopupMenu", "CreatePopupMenu", "User32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );

external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll");
external(INT, "SetMenuInfo", "SetMenuInfo", "User32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "SetScrollRange", "SetScrollRange", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "SetScrollRange", "SetScrollRange", "User32.dll" );
external(INT, "SetScrollPos", "SetScrollPos", "User32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetWindowTextA", "SetWindowTextA", "User32.dll" );
external(INT, "SetMenu", "SetMenu", "User32.dll" );
external(INT, "SendMessage", "SendMessageA", "User32.dll" );
external(INT, "ShowWindow", "ShowWindow", "User32.dll" );
external(INT, "SetFocus", "SetFocus", "User32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );

external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );

external(INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
external(INT, "GetFocus", "GetFocus", "User32.dll" );
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll" );
external(INT, "GlobalMemoryStatusEx", "GlobalMemoryStatusEx", "Kernel32.dll");
external(INT, "GetSystemTimes", "GetSystemTimes", "Kernel32.dll");

external(INT, "InvalidateRect", "InvalidateRect", "user32.dll");
external(INT, "IsWindowVisible", "IsWindowVisible", "User32.dll");
external(INT, "IsIconic", "IsIconic", "User32.dll");
external(INT, "IsZoomed", "IsZoomed", "User32.dll");

external(INT, "EnableWindow", "EnableWindow", "User32.dll" );

external(INT, "AppendMenu", "AppendMenuA", "User32.dll" );

external(INT, "TrackPopupMenu", "TrackPopupMenu", "User32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );

external(INT, "FlashWindowEx", "FlashWindowEx", "User32.dll" );

external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "Strftime", "Strftime", pathfolder()+"Time.dll" );

external(INT, "WritePrivateProfileString", "WritePrivateProfileStringA", "kernel32.dll");

#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define WS_SIZEBOX 262144
#define WS_CHILD 1073741824
#define WS_HSCROLL 1048576
#define WS_VSCROLL 2097152
#define WS_POPUP 2147483648
#define WS_GROUP 131072

#define MNS_NOTIFYBYPOS 134217728
#define MIM_STYLE 16
#define MF_POPUP 16
#define WM_GETTEXT 13
#define WM_SETTEXT 12
#define WM_GETTEXTLENGTH 14
#define WM_SETCURSOR 32
#define WM_SIZE 5
#define WM_ERASEBKGND 20
#define WM_ENABLE 10



#define CB_GETITEMDATA 336
#define CB_GETCURSEL 327
#define CB_ADDSTRING 323
#define CB_DELETESTRING 324
#define CB_FINDSTRING 332
#define CB_GETCURSEL 32
#define CBS_DROPDOWNLIST 3
#define CBS_AUTOHSCROLL 64
#define CBS_DROPDOWN 2
#define CBS_DROPDOWNLIST 3

#define LBS_EXTENDEDSEL 2048
#define LB_ADDSTRING 384
#define LB_GETCOUNT 395
#define LB_SETTOPINDEX 407
#define LBS_DISABLENOSCROLL 4096


win MainWindow, SecondaryWindow, Browser, Game;
int Display_Color, Display_Width, Display_Height;
int VisualWindow_Width = 1000, VisualWindow_Height = 730;
int Value1 = 38;
int ImageX[10], ImageY[10];
int VisualImage[1000][730];


int Object_Button1;

char Text_Button1[255];


int Object_Button2;
int RectButton2[4];

char Text_Button2[255];

int Object_Listbox1;

int Object_Edit1;
int Edit1_TextLength;

int Menu_Information[7] = {28, MIM_STYLE, MNS_NOTIFYBYPOS, 0, 0, 0, 0};
int Menu1, Menu2 = CreatePopupMenu();

getdisplay(Display_Color, Display_Width, Display_Height);
createdialog(0);
createdialog(1);

showdialog(0, "диалог", Display_Width/2-450, Display_Height/2-400, 700, 400, 1, 1);

MainWindow = window ("диалог");

function getmessage(0, WM_CREATE)
{
Object_Button1 = CreateWindow(0, "BUTTON", "1", WS_VISIBLE | WS_CHILD, 10, 10, 120, 20, gethwnd(0), 0, 0, 0);
Object_Button2 = CreateWindow(0, "BUTTON", "2", WS_VISIBLE | WS_CHILD, 140, 10, 250, 20, gethwnd(0), 0, 0, 0);
Object_Listbox1 = CreateWindow(0, "LISTBOX", "3", WS_BORDER | WS_HSCROLL | WS_VSCROLL | LBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE, 400, 10, 200, 200, gethwnd(0), 0, 0, 0);
}

function getmessage(0, WM_MOUSEWHEEL)
{

MainWindow = window ("диалог");
resettextout(1);


if(message.wparam > 0)
{
Value1++;
}
else
{
Value1--;
}

if (Value1 < 38)
{
Value1 = 38;
}

if (Value1 > 100)
{
Value1 = 100;
}

VisualWindow_Width = 1000/100*Value1;
VisualWindow_Height = 730/100*Value1;
visualwindow(MainWindow, 0, 0, 0, 1000, 730, 10, 40, Value1, #VisualImage[0][0]);


SetWindowPos(Object_Listbox1, 0, VisualWindow_Width+20, 10, 200, VisualWindow_Height+30, 0);

MainWindow.width = 200+VisualWindow_Width+30+(MainWindow.width-MainWindow.widthclient);
MainWindow.height = VisualWindow_Height+50+(MainWindow.height-MainWindow.heightclient);

movewindow(MainWindow);
}

loop()
{
textout(0, 0, 0, format(VisualWindow_Width)+","+format(VisualWindow_Height)+","+format(Value1)+"-"+format(hiword(message.wparam)), 1);
sleep(10);
}

(Добавление)
Проблема в том, что когда быстро крутишь, то размеры окна сильно теряются, а если медленно по 1 значению, то всё супер
(Добавление)
Пожалуйста, нужна помощь!
 
 Top
Zireael
Отправлено: 30 Марта, 2019 - 19:17:17
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Проблема в том, что когда быстро крутишь, то размеры окна сильно теряются

Это из-за того что при первом скролле вызывается соответсвующая функция, но она не успевает до конца отработать, как вызывается заново при следующем скролле.
Или менять логику, т. е. сначала менять размеры диалога, а потом подгонять размер визуала.
Или ждать когда появится возможность отключать/включать обработку события.
 
 Top
007wan
Отправлено: 31 Марта, 2019 - 12:26:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Zireael , Всё я сделал. Использовал это и не пойму что к чему немного:
CODE:

MainWindow.width = 1000*Value1/100+220+10+(MainWindow.width-MainWindow.widthclient);
MainWindow.height = 730*Value1/100+40+10+(MainWindow.height-MainWindow.heightclient);
movewindow(MainWindow);
Не понимаю: Почеему+220 и +40 и +10

Еще выше есть код . Почему список не четко прижимается к визуальному окну, т.е не одном уровне?
(Добавление)
 007wan пишет:
Не понимаю: Почеему+220 и +40 и +10
Но это работает и без лагов, а:
 Zireael пишет:
сначала менять размеры диалога, а потом подгонять размер визуала.
Ты имел ввиду поменять местами? Пробовал - не работает
 
 Top
Zireael
Отправлено: 31 Марта, 2019 - 13:42:48
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
function getmessage(0, WM_MOUSEWHEEL)

Заменить содержимое функции на это:
CODE:
function getmessage(0, WM_MOUSEWHEEL)
{
MainWindow = window ("диалог");
Value1=Value1 + hiword(message.wparam) / 120;
if (Value1 < 38)Value1 = 38;
if (Value1 > 100)Value1 = 100;

VisualWindow_Width = 1000/100*Value1;
VisualWindow_Height = 730/100*Value1;
MainWindow.width = 200+VisualWindow_Width+30+(MainWindow.width-MainWindow.widthclient);
MainWindow.height = VisualWindow_Height+50+(MainWindow.height-MainWindow.heightclient);

movewindow(MainWindow);
SetWindowPos(Object_Listbox1, 0, VisualWindow_Width+20, 10, 200, VisualWindow_Height+30, 0);
visualwindow(MainWindow, 0, 0, 0, 1000, 730, 10, 40, Value1, #VisualImage[0][0]);
update(MainWindow);
}
 
 Top
007wan
Отправлено: 31 Марта, 2019 - 14:05:29
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Zireael , Спасибо.
(Добавление)
Zireael ,
CODE:
SetWindowPos(Object_Listbox1, 0, VisualWindow_Width+20, 10, 200, VisualWindow_Height+30, 0);
Вот высота визуального окна при каждом скролле не равняется с списком, причем если первый раз крутануть, то равняется, а вот следующий раз - нет. и так чередуется. В чем проблема? Как выровнять? Может добавить что-то из этгоо духа:
CODE:
+(MainWindow.width-MainWindow.widthclient)
Однако пробовал, но шикарных результатов мне не дало.
(Добавление)
Такая в голову идея пришла: А возможно ли после скрытия браузера через прозрачность с параметром -1. Отключить звук в браузере определенной игры? Что бы не работала музыка из игры, например. через external.
(Добавление)
Я хочу отключить звук программно, а не так, что бы пришлось игру кликать или по поиску изображениям
 
 Top
Страниц (4): « 1 2 [3] 4 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by