Zireael |
Отправлено: 13 Октября, 2019 - 10:28:06
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А как добавить:
-Свою иконку в трей и на сообщение?
Вместо LoadIconA использовать LoadImageA.
Цитата: что бы открывалось меню
CODE:if(message.lparam==WM_RBUTTONDOWN) // если нажата правая кнопка мыши
{
// тут вызов созданного меню, CreatePopupMenu
messagebox("Нажата правая кнопка мыши");
return;
}
Цитата: Добавить иконку в трей
А СЮДА куда-нибудь
В настройках панели задачи выбрать значки, отображаемые в панели задач.
Цитата: а в сообщение была "Информация"
CODE:writeaddress(1, address(#NOTIFYICONDATA[484])); |
|
|
007wan |
Отправлено: 13 Октября, 2019 - 10:34:22
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , О, спасибо!!! Но это мне походу не видать, раз конфликтуют функции WM_, то мне никогда наверное не видать того, чего хотелось бы.... Будем ждать, пока всё починят, а пока время в пустую....
(Добавление)
Zireael , Вопрос: Как создать функцию в dll, например, которая вызывает какой-то код в Киборе, т.е такой же принцип как у и функции: Что бы лишний код не вставлять, можно это в функцию запихать, а потом эту функцию вызывать сколько душе угодно, так вот. С dll такое не прокатит? Тоже самое, только вызывать dll external/ |
|
|
007wan |
Отправлено: 13 Октября, 2019 - 12:53:35
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Zireael пишет: // тут вызов созданного меню, CreatePopupMenu А можно пример? Именно с Код (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define NIF_SHOWTIP 128
#define NIF_TIP 4
#define NIF_ICON 2
#define NIF_INFO 16
#define NIM_ADD 0
#define NIM_DELETE 2
#define NIF_MESSAGE 1
#define SC_MINIMIZE 61472
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define IMAGE_ICON 1
#define LR_LOADFROMFILE 16
#define IDI_INFORMATION 32516
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "Shell_NotifyIcon", "Shell_NotifyIconA", "Shell32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "LoadImage", "LoadImageA", "User32.dll");
external(INT, "ShowWindow", "ShowWindow", "User32.dll");
int static;
char NOTIFYICONDATA[488];
createdialog(0);
showdialog(0, "Dialog",300, 300, 300, 150, 1, 1);
loop()sleep(10);
function getmessage(0, WM_SYSCOMMAND)
{
if(message.wparam==SC_MINIMIZE) // если окно было свёрнуто
{
ShowWindow(gethwnd(0), SW_HIDE); // скрыть диалог
Shell_NotifyIcon(NIM_ADD, address(#NOTIFYICONDATA[0])); // добавить значок в трей
return;
}
}
function getmessage(0, WM_CREATE)
{
static=CreateWindow(0, "STATIC", "Это окно будет сворачиваться в трей", WS_CHILD | WS_VISIBLE, 20, 10, 250, 20, gethwnd(0), 0, 0, 0);
initialarray(#NOTIFYICONDATA[0], 0);
writeaddress(sizearray(NOTIFYICONDATA), address(#NOTIFYICONDATA[0]));
writeaddress(gethwnd(0), address(#NOTIFYICONDATA[4]));
writeaddress(1025, address(#NOTIFYICONDATA[8])); // идентификатор иконки
writeaddress(WM_MOUSEMOVE, address(#NOTIFYICONDATA[16]));
writeaddress(NIF_ICON | NIF_SHOWTIP | NIF_TIP | NIF_INFO | NIF_MESSAGE, address(#NOTIFYICONDATA[12]));
//writeaddress(LoadIcon(0, IDI_INFORMATION), address(#NOTIFYICONDATA[20])); // одна из стандартных иконок
writeaddress(LoadImage(0, "C:\Users\Home\Desktop\МОЁ\Kibor\Bot_Icon.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE), address(#NOTIFYICONDATA[20])); // своя иконка
strcpy(#NOTIFYICONDATA[24], "Bot"); // подсказка при наведении на значок
strcpy(#NOTIFYICONDATA[160], "Щёлкните значок в трее, что бы показать окно программы."); // в win10 не работает
strcpy(#NOTIFYICONDATA[420], "Bot"); // в win10 не работает
writeaddress(1, address(#NOTIFYICONDATA[484]));
}
function getmessage(0, WM_MOUSEMOVE)
{
if(message.wparam == 1025) // если курсор наведён на значок с указанным идентификатором
{
if(message.lparam == WM_LBUTTONDOWN) // если был клик левой кнопкой мыши
{
ShowWindow(gethwnd(0), SW_SHOWNORMAL); // показать диалог
//Shell_NotifyIcon(NIM_DELETE, address(#NOTIFYICONDATA[0])); // удалить значок из трея
return;
}
//===============
if(message.lparam == WM_RBUTTONDOWN) // если нажата правая кнопка мыши
{
// тут вызов созданного меню, CreatePopupMenu
messagebox("Нажата правая кнопка мыши");
return;
}
}
} Просто я не пойму как мне вывести меню на панель, на диалог там gethwnd0, а тут другая песня. |
|
|
Zireael |
Отправлено: 13 Октября, 2019 - 13:36:53
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: CreatePopupMenu
А можно пример?
code (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define NIF_SHOWTIP 128
#define NIF_TIP 4
#define NIF_ICON 2
#define NIF_INFO 16
#define NIM_ADD 0
#define NIM_DELETE 2
#define NIF_MESSAGE 1
#define SC_MINIMIZE 61472
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define IMAGE_ICON 1
#define LR_LOADFROMFILE 16
#define IDI_INFORMATION 32516
#define TPM_RETURNCMD 256
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "Shell_NotifyIcon", "Shell_NotifyIconA", "Shell32.dll");
external(INT, "LoadIcon", "LoadIconA", "User32.dll");
external(INT, "LoadImage", "LoadImageA", "User32.dll");
external(INT, "ShowWindow", "ShowWindow", "User32.dll");
external(INT, "CreatePopupMenu", "CreatePopupMenu", "User32.dll");
external(INT, "TrackPopupMenu", "TrackPopupMenu", "User32.dll");
external(INT, "AppendMenu", "AppendMenuA", "User32.dll");
int static;
char NOTIFYICONDATA[488];
int mouseX, mouseY;
int HMENU, result;
createdialog(0);
showdialog(0, "Dialog",300, 300, 300, 150, 1, 1);
loop()sleep(10);
function getmessage(0, WM_SYSCOMMAND)
{
if(message.wparam==SC_MINIMIZE) // если окно было свёрнуто
{
ShowWindow(gethwnd(0), SW_HIDE); // скрыть диалог
Shell_NotifyIcon(NIM_ADD, address(#NOTIFYICONDATA[0])); // добавить значок в трей
return;
}
}
function getmessage(0, WM_CREATE)
{
HMENU=CreatePopupMenu(); // создать меню
AppendMenu(HMENU, 0, 1025, "Пункт1"); // добавить пункт
AppendMenu(HMENU, 0, 1026, "Пункт2"); // добавить пункт
AppendMenu(HMENU, 0, 0, 0); // добавить линию
AppendMenu(HMENU, 0, 1027, "Пункт3"); // добавить пункт
static=CreateWindow(0, "STATIC", "Это окно будет сворачиваться в трей"+formatic(13)+formatic(10)+
"При нажатии на значок правой кнопкой мыши откроется меню", WS_CHILD | WS_VISIBLE, 20, 10, 250, 60, gethwnd(0), 0, 0, 0);
initialarray(#NOTIFYICONDATA[0], 0);
writeaddress(sizearray(NOTIFYICONDATA), address(#NOTIFYICONDATA[0]));
writeaddress(gethwnd(0), address(#NOTIFYICONDATA[4]));
writeaddress(1025, address(#NOTIFYICONDATA[8])); // идентификатор иконки
writeaddress(WM_MOUSEMOVE, address(#NOTIFYICONDATA[16]));
writeaddress(NIF_ICON | NIF_SHOWTIP | NIF_TIP | NIF_INFO | NIF_MESSAGE, address(#NOTIFYICONDATA[12]));
writeaddress(LoadIcon(0, IDI_INFORMATION), address(#NOTIFYICONDATA[20])); // одна из стандартных иконок
//writeaddress(LoadImage(0, "C:\Users\Home\Desktop\МОЁ\Kibor\Bot_Icon.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE), address(#NOTIFYICONDATA[20])); // своя иконка
strcpy(#NOTIFYICONDATA[24], "Bot"); // подсказка при наведении на значок
strcpy(#NOTIFYICONDATA[160], "Щёлкните значок в трее, что бы показать окно программы."); // в win10 не работает
strcpy(#NOTIFYICONDATA[420], "Bot"); // в win10 не работает
writeaddress(1, address(#NOTIFYICONDATA[484]));
}
function getmessage(0, WM_MOUSEMOVE)
{
if(message.wparam == 1025) // если курсор наведён на значок с указанным идентификатором
{
if(message.lparam == WM_LBUTTONDOWN) // если был клик левой кнопкой мыши
{
ShowWindow(gethwnd(0), SW_SHOWNORMAL); // показать диалог
Shell_NotifyIcon(NIM_DELETE, address(#NOTIFYICONDATA[0])); // удалить значок из трея
return;
}
//===============
if(message.lparam == WM_RBUTTONDOWN) // если нажата правая кнопка мыши
{
// тут вызов созданного меню, CreatePopupMenu
//messagebox("Нажата правая кнопка мыши");
getmouse(mouseX, mouseY);
result=TrackPopupMenu(HMENU, TPM_RETURNCMD, mouseX, mouseY, 0, gethwnd(0), 0); // вывести меню
if(result==1025)messagebox("Выбран пункт1");
if(result==1026)messagebox("Выбран пункт2");
if(result==1027)messagebox("Выбран пункт3");
return;
}
}
} |
|
|
Nikanr |
Отправлено: 17 Октября, 2019 - 18:57:38
|
Специалист
Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019
Репутация: 5
|
007wan пишет: чтт бы искал слово админ
Можно так:
CODE:string c="vfvfAdmin/fvfv4fdsfd";
regexsearch(1, #c, c, "Admin/(?=.)");
messagebox(c);
Иначе нужен полный пример)(Отредактировано автором: 17 Октября, 2019 - 19:00:08) |
|
|
007wan |
Отправлено: 19 Октября, 2019 - 21:08:41
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Здравствуйте, уважаемый Владимир, когда будет исправлена ошибка с WM функциями? Может проблема не в Киборе, а в нас? Будет ли когда-нибудь она исправлена или вы оставите все как есть? Прости мне очень это нужно, умоляю. Или может эта какая-то фишка, что ее никак не исправить? Пожалуйста, откликнитесь на вопросы, что будете делать в близжайшее время и что изменится. Кибор очень хорошая программа и несмотря на то,что С++ у меня работает,я всеравно не могу отказаться от Кибора, я привык - я живу в нём, и С++ не родной для меня, с него я не начинал.
Пожалуйста ответьте, не хочется бросать свои проекты или начинать новые с мыслью,что получится такая же "сломанная нога"(неполноценная), ведь мой первый удачный проект несет в себе будущий шаблон для других программ.
Пожалуйста ответьте, прошу вас не игнорировать, я благодарен вам,что есть такая программа как Кибор, которая облегчает весь геморой в создании будущих проектов.
Просто ответьте: будет ли исправления по поводу Wm?, Когда? Если нет-почему?
(Добавление)
Возможно я единственный кому это нужно.
Но прошу ради одного пользователя - разберитесь с ошибкой. |
|
|
|