Zireael |
Отправлено: 14 Сентября, 2019 - 18:54:33
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сделать через fopen принцип "если открыл файл, то записать это в переменную 1, если не открыл, то записать в переменную 0".
Детский сад, штаны на лямках.
Цитата: Как мне добавить переменную "скорость полосы загрузки"?
CODE:double speed=0.2; // чем меньше, тем быстрее выполнится цикл
for(int i=0; i<100; i++)sleep(100*speed); |
|
|
007wan |
Отправлено: 15 Сентября, 2019 - 08:10:35
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: как проверить файл не только на наличие, а на оригинальность,например,было изображение и его изменили.
findimage. Как? Зачем искать?
(Добавление)
Как извлечь какую-то характеристику изображения, которая меняется с изменение изображение, например, какая-то сумма цветных пикселей. Тоесть нужна характеристика, которая меняется при изменении пикселя(пикселей изображений), а так же размера в целом. Но не размер файла(пробовал изменить в паинте bmp того же изображений ручкой 1 пиксель и не поменялось ничего). Может какую-то цифру получить для сравнения или еще чего. |
|
|
007wan |
Отправлено: 15 Сентября, 2019 - 10:22:43
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Тут скорее вопрос зачем вообще это проверять, если пользователь подменил картинку и бот перестал работать это проблемы пользователя. Ну очень нужно, пожалуйста. Потом скажу зачем, а то не согласишься. Или реально не согласишься после второго предложения? НУ пж.(Отредактировано автором: 15 Сентября, 2019 - 10:23:08) |
|
|
Zireael |
Отправлено: 15 Сентября, 2019 - 12:11:24
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как проверить файл не только на наличие, а на оригинальность
https://drive.google.com/open?id...IPzn5T8Nk_O4SSmZ
Закинуть длл в папку с кибор.
CODE:external(INT, "HashMD5", "HashMD5", pathfolder()+"HashMD5.dll");
string filename="C:\2.bmp"; // имя файла
char md5[32]; // сюда запишется хеш
initialarray(#md5[0], 0);
if(HashMD5(filename, address(#md5[0])))messagebox(format(#md5[0]));
// можно сравнивать
//if(format(#md5[0]) == "634ed65190810f22b86e929a5d45ecc0")messagebox("+++"); // если хеш совпадает, то файлы идентичны
|
|
|
007wan |
Отправлено: 15 Сентября, 2019 - 12:18:34
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Вауууу
(Добавление)
Вообще мне она нужна была, что бы перед запуском прямоугольника с полосой загрузкой проверял хеш всех картинок, и записывал те, которые совпадают будут равны 1, а другие 0.
Потом запускается прямоугольник с полосой загрузки и начинает загружать не ВСЕ и не обычной скоростью, а чем меньше изображений(взависимости от их количества: меньше - быстрее грузит, а больше - медленнее), загрузит, например, изображение, которое не совпадает с хешом, а уже потом ускорит полосу загрузки - как то так)) Ну лишняя работа, но unpack получает только: Есть(не распаковывать), нету(распаковать), а хеш он не проверяет, поэтому ТАК)
(Добавление)
Zireael , А как сделать, что бы при открытия меню не мигало? Просто где кнопка "Настройки" вверху (меню) при нажатии он считывает координаты и мигает при открытии настроек. Я не могу методом тыка как-то высчитать, что бы не брал во внимание зону с квадратиком "настройки" (кнопка)
CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define FLASHW_CAPTION 1
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "FlashWindowEx", "FlashWindowEx", "User32.dll" );
external(INT, "EnableWindow", "EnableWindow", "User32.dll" );
external(INT, "PtInRect", "PtInRect", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
win dialog;
int b0;
int rect_dialog[4], mouse_x, mouse_y;
int FLASHWINFO[5]={20, 0, FLASHW_CAPTION, 7, 10}
createdialog(0);
showdialog(0, "Диалог1",100, 100, 500, 500, 1, 0);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
b0=CreateWindow(0, "BUTTON", "Кнопка", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0);
}
function getmessage(1, WM_CREATE)
{
EnableWindow(gethwnd(0), 0);
FLASHWINFO[1] = gethwnd(1);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == b0)
{
createdialog(1);
showdialog(1, "Диалог2",200, 200, 300, 300, 4, 1);
}
}
function getmessage(1, WM_CLOSE)
{
destroydialog(1);
EnableWindow(gethwnd(0), 1);
}
CREATE_TIMER(0, 30)
{
if(getkeystate(1) || getkeystate(2))
{
setwindowparam(dialog);
getmouse(mouse_x, mouse_y);
rect_dialog[0] = dialog.left;
rect_dialog[1] = dialog.top;//где тут ту сделать расчет, что бы ервую кнопку на панели меню 'Настройки' не брал во внимание.
rect_dialog[2] = dialog.left+dialog.width;
rect_dialog[3] = dialog.top+dialog.height;
if(WindowFromPoint(mouse_x, mouse_y) != gethwnd(1))
{
if(PtInRect(address(#rect_dialog[0]), mouse_x, mouse_y))
{
FlashWindowEx(address(#FLASHWINFO[0]));
return;
}
}
}
}
(Добавление)
А можно к CODE:Rect_Dialog[1] = MainWindow.top; прибавить 45 или же ко всем прибавить текстclientCODE:Rect_Dialog[0] = MainWindow.leftclient;
Rect_Dialog[1] = MainWindow.topclient;//45
Rect_Dialog[2] = MainWindow.leftclient+MainWindow.widthclient;
Rect_Dialog[3] = MainWindow.topclient+MainWindow.heightclient;
(Добавление)
Ну или проще: Добавите переменную - флаг, которая будет изменять свое состояние во время открытия настроек и закрытия, и при открытии будет в положительную сторону, т.е разрешать мигание при открытии, а при закрытии - запрещать
(Добавление)
007wan пишет: Ну или проще: Добавите переменную - флаг Предпочтительным будет, т.к что бы при открытых настройках и при нажатии на меню(панели) настроек тоже мигало, но тогда нужно убрать client рядом со словами
(Добавление)
Хотя я лучше буду передавать в эту фукцию, которая мигает: 1)Разрешать или не разрешать мигать при открытых настройках.
2)Указатель на нужный диалог(Если нужно мигать нескольким окнам)
(Добавление)
Zireael , при добавлении контрола во второе окно - нажимаем - мигает. Пока не нахожу решение как избавится от мигания при нажатие на контролы.Код (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define FLASHW_CAPTION 1
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "FlashWindowEx", "FlashWindowEx", "User32.dll" );
external(INT, "EnableWindow", "EnableWindow", "User32.dll" );
external(INT, "PtInRect", "PtInRect", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
win dialog;
int b0;
int rect_dialog[4], mouse_x, mouse_y;
int FLASHWINFO[5]={20, 0, FLASHW_CAPTION, 7, 10};
int Object_Checkbox;
createdialog(0);
showdialog(0, "Диалог1",100, 100, 500, 500, 1, 0);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
b0=CreateWindow(0, "BUTTON", "Кнопка", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0);
}
function getmessage(1, WM_CREATE)
{
EnableWindow(gethwnd(0), 0);
FLASHWINFO[1] = gethwnd(1);
Object_Checkbox = CreateWindow(0, "BUTTON", "Кнопка", WS_CHILD | WS_VISIBLE, 10, 20, 80, 20, gethwnd(1), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == b0)
{
createdialog(1);
showdialog(1, "Диалог2",200, 200, 300, 300, 4, 1);
}
}
function getmessage(1, WM_CLOSE)
{
destroydialog(1);
EnableWindow(gethwnd(0), 1);
}
CREATE_TIMER(0, 30)
{
if(getkeystate(1) || getkeystate(2))
{
setwindowparam(dialog);
getmouse(mouse_x, mouse_y);
rect_dialog[0] = dialog.left;
rect_dialog[1] = dialog.top;
rect_dialog[2] = dialog.left+dialog.width;
rect_dialog[3] = dialog.top+dialog.height;
if(WindowFromPoint(mouse_x, mouse_y) != gethwnd(1))
{
if(PtInRect(address(#rect_dialog[0]), mouse_x, mouse_y))
{
FlashWindowEx(address(#FLASHWINFO[0]));
return;
}
}
}
}
(Добавление)
А хотя если чисто логически, то
CODE:if(WindowFromPoint(Mouse_x, Mouse_y) != gethwnd(1) && WindowFromPoint(Mouse_x, Mouse_y) != gethwnd(2) && WindowFromPoint(Mouse_x, Mouse_y) != Object_Group..остальные контролы)
(Отредактировано автором: 15 Сентября, 2019 - 12:26:13) |
|
|
007wan |
Отправлено: 16 Сентября, 2019 - 14:33:18
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Не работает for
CODE: if (Flash == 1)
{
if(getkeystate(1) || getkeystate(2))
{
setwindowparam(MainWindow);
getmouse(Mouse_x, Mouse_y);
Rect_Dialog[0] = MainWindow.left;
Rect_Dialog[1] = MainWindow.top;
Rect_Dialog[2] = MainWindow.left+MainWindow.width;
Rect_Dialog[3] = MainWindow.top+MainWindow.height;
int Handle_Controls = WindowFromPoint(Mouse_x, Mouse_y);
for (int ia=0; ia<sizearray(Object_Checkbox); ia++)
{
if (Handle_Controls != gethwnd(1) &&
Handle_Controls != Object_Checkbox[ia])//не работает для вех контролов, их всего 5
{
if(PtInRect(address(#Rect_Dialog[0]), Mouse_x, Mouse_y))
{
FlashWindowEx(address(#FLASHWINFO[0]));
return;
}
}
}
}
}
(Добавление)
Чо за дичь?
CODE: if (Flash == 1)
{
if(getkeystate(1) || getkeystate(2))
{
setwindowparam(MainWindow);
getmouse(Mouse_x, Mouse_y);
Rect_Dialog[0] = MainWindow.left;
Rect_Dialog[1] = MainWindow.top;
Rect_Dialog[2] = MainWindow.left+MainWindow.width;
Rect_Dialog[3] = MainWindow.top+MainWindow.height;
int Handle_Controls = WindowFromPoint(Mouse_x, Mouse_y);
for (int ia=0; ia<sizearray(Object_Checkbox); ia++)
{
if (Handle_Controls != gethwnd(1) &&
Handle_Controls != Object_Checkbox[ia] &&//так не работает с циклом эта строчка
Handle_Controls != Object_Checkbox2[ia] &&//так не работает с циклом эта строчка
Handle_Controls != gethwnd(2) &&
Handle_Controls != Object_Static1 &&
Handle_Controls != Object_Static2 &&
Handle_Controls != Object_Static3 &&
Handle_Controls != Object_Static4 &&
Handle_Controls != Object_Static5 &&
Handle_Controls != Object_Edit1 &&
Handle_Controls != Object_Button3)
{
if(PtInRect(address(#Rect_Dialog[0]), Mouse_x, Mouse_y))
{
FlashWindowEx(address(#FLASHWINFO[0]));
break;
}
}
}
}
}
CODE: Handle_Controls != Object_Checkbox[0] &&//так работает эта строчка
Handle_Controls != Object_Checkbox2[1] &&//так работает строчка
Object_Checkbox и Object_Checkbox2 эта 2 группы галочек. Просто разделены так, что бы не путатся. Столбец галочек короче. |
|
|
|