007wan |
Отправлено: 13 Апреля, 2019 - 11:21:28
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Да-да, я что-то такое читал... спасибо.
(Добавление)
Да, так лучше) спс CODE:SetWindowPos(formatwi(MainWindow), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
(Добавление)
А как можно через розовуб sendmessage сделать GETCURSEL in Combobox/ Примеров предостаточно и я всё вставял в свой код, но ничего не работало. Всегда выдает значение 0! |
|
|
Zireael |
Отправлено: 13 Апреля, 2019 - 13:25:07
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А как можно через розовуб sendmessage сделать GETCURSEL in Combobox/
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define CBS_DROPDOWNLIST 3
#define CB_ADDSTRING 323
#define CB_GETCURSEL 327
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int combo1;
string combo_text[4]={"qwe", "rty", "asd", "123"}; // список строк для комбо
createdialog(0);
showdialog(0, "Диалог", 100, 100, 250, 300, 1, 1);
loop()
{
textbkcolor(255, 65280);
textout(0, 200, 250, format(sendmessage(CB_GETCURSEL, 0, 0, formatiw(combo1))), 0);
sleep(10);
}
function getmessage(0, WM_CREATE)
{
combo1=CreateWindow(0, "COMBOBOX", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 110, 120, gethwnd(0), 0, 0, 0);
// добавление строк в комбо из массива
for(int i=0; i<sizearray(combo_text); i++)
{
new char c[size(combo_text[i])+1];
strcpy(#c[0], combo_text[i]);
sendmessage(CB_ADDSTRING, 0, address(#c[0]), formatiw(combo1));
delete c;
}
} |
|
|
007wan |
Отправлено: 13 Апреля, 2019 - 13:28:55
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Вот я даже удалил свой комбо и поставил комбо, котоырй на 9 странице без изменений переменных и порядка.
Сейчас тогда буду выявлять причину конфликта, что и почему не работает. Начну восстанавливать свой код, но фундаментом послужит код, который на 9 странице.
(Добавление)
Вообщем что-то с меню напортачил:Весь код не стал вставлять, потому что много переменных и код весит больше. чем нужно
CODE:int MENUINFO[7] = {28, MIM_STYLE, 0, 0, 0, 0, 0};
int HMENU, HMENU1, HMENU2, HMENU3, SelectMenu;
win MainWindow, SecondaryWindow, Browser, Game;
//-----------------------------------------------------------------------------------------------------------------------------------------------------
int combo1;
char c[255];
string combo_text[4]={"qwe", "rty", "asd", "123"};
createdialog(0);
createdialog(1);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
function getmessage(0, WM_CREATE)
{
HMENU = CreateMenu();
AppendMenu(HMENU, MF_POPUP, 1, "Настройки" );
SetMenuInfo(HMENU, address(#MENUINFO[0]));
SetMenu(gethwnd(0), HMENU);
}
function getmessage(1, WM_CREATE)
{
combo1=CreateWindow(0, "COMBOBOX", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 110, 120, gethwnd(1), 0, 0, 0);
for(int i=0; i<sizearray(combo_text); i++)
{
strcpy(#c[0], combo_text[i]);
sendmessage(CB_ADDSTRING, 0, address(#c[0]), formatiw(combo1));
}
}
function getmessage(0, WM_COMMAND)
{
if(loword(message.wparam) == 1)
{
showdialog(1, "Диалог2",500, 100, 200, 200, 0, 1);
}
}
loop()
{
int StatusCombobox1=sendmessage(CB_GETCURSEL, 0, 0, formatiw(combo1));
textbkcolor(255, 65280);
textout(0, 150, 250, "Выбранная строка: "+format(StatusCombobox1), 1);
sleep(10);
} |
|
|
Zireael |
Отправлено: 13 Апреля, 2019 - 15:02:24
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
code (Отобразить)CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define CBS_DROPDOWNLIST 3
#define CB_ADDSTRING 323
#define CB_GETCURSEL 327
#define MIM_STYLE 16
#define MF_POPUP 16
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "CreateMenu", "CreateMenu", "User32.dll" );
external(INT, "AppendMenu", "AppendMenuA", "User32.dll" );
external(INT, "SetMenuInfo", "SetMenuInfo", "User32.dll" );
external(INT, "SetMenu", "SetMenu", "User32.dll" );
int MENUINFO[7] = {28, MIM_STYLE, 0, 0, 0, 0, 0};
int HMENU, HMENU1, HMENU2, HMENU3, SelectMenu;
win MainWindow, SecondaryWindow, Browser, Game;
//-----------------------------------------------------------------------------------------------------------------------------------------------------
int combo1;
char c[255];
string combo_text[4]={"qwe", "rty", "asd", "123"};
createdialog(0);
createdialog(1);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
function getmessage(0, WM_CREATE)
{
HMENU = CreateMenu();
AppendMenu(HMENU, MF_POPUP, 1, "Настройки" );
SetMenuInfo(HMENU, address(#MENUINFO[0]));
SetMenu(gethwnd(0), HMENU);
}
function getmessage(1, WM_CREATE)
{
combo1=CreateWindow(0, "COMBOBOX", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 110, 120, gethwnd(1), 0, 0, 0);
for(int i=0; i<sizearray(combo_text); i++)
{
strcpy(#c[0], combo_text[i]);
sendmessage(CB_ADDSTRING, 0, address(#c[0]), formatiw(combo1));
}
}
function getmessage(0, WM_COMMAND)
{
if(loword(message.wparam) == 1)
{
showdialog(1, "Диалог2",500, 100, 200, 200, 0, 1);
}
}
loop()
{
int StatusCombobox1=sendmessage(CB_GETCURSEL, 0, 0, formatiw(combo1));
textbkcolor(255, 65280);
textout(0, 150, 250, "Выбранная строка: "+format(StatusCombobox1), 1);
sleep(10);
} |
|
|
007wan |
Отправлено: 13 Апреля, 2019 - 15:22:45
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Заменяю это:
Zireael пишет: #define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define CBS_DROPDOWNLIST 3
#define CB_ADDSTRING 323
#define CB_GETCURSEL 327
#define MIM_STYLE 16
#define MF_POPUP 16
На это:
Цитата: #define WS_VISIBLE 268435456
#define WS_OVERLAPPED 0
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define WS_SIZEBOX 262144
#define WS_POPUP 2147483648
#define WS_CHILD 1073741824
#define WS_HSCROLL 1048576
#define WS_VSCROLL 2097152
#define WS_POPUP 2147483648
#define WS_GROUP 131072
#define WS_SYSMENU 524288
#define WS_MINIMIZEBOX 131072
#define WS_MAXIMIZEBOX 65536
#define WS_DISABLED 134217728
#define WS_CAPTION 12582912
#define WS_CLIPSIBLINGS 67108864
#define WS_DLGFRAME 4194304
#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 MF_STRING 0
#define MF_POPUP 16
#define MNS_NOTIFYBYPOS 134217728
#define MIM_STYLE 16
#define HWND_TOPMOST -1
#define ES_AUTOHSCROLL 128
#define ES_UPPERCASE 8
#define ES_MULTILINE 4
#define ES_WANTRETURN 4096
#define ES_LOWERCASE 16
#define ES_READONLY 2048
#define BS_AUTOCHECKBOX 3
#define BS_3STATE 5
#define BS_GROUPBOX 7
#define BS_AUTO3STATE 6
#define BS_FLAT 32768
#define BS_PUSHBUTTON 0
#define BS_SPLITNUTTON 12
#define BM_GETSTATE 242
#define BM_SETCHECK 241
#define BM_SETSTATE 243
#define BN_DISABLE 4
#define EM_LIMITTEXT 197
#define SW_HIDE 0
#define SW_SHOWNA 8
#define SW_SHOW 5
#define SW_SHOWMAXIMIZED 3
#define SWP_NOSIZE 1
#define SWP_NOMOVE 2
#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 CB_GETLBTEXT 328
#define CB_SETCUEBANNER 5891
#define CB_SETCURSEL 334
#define CBS_DROPDOWNLIST 3
#define CBS_AUTOHSCROLL 64
#define CBS_DROPDOWN 2
#define CBS_DROPDOWNLIST 3
#define LB_GETCURSEL 392
#define LB_ADDSTRING 384
#define LB_GETCOUNT 395
#define LB_SETTOPINDEX 407
#define LB_GETTEXT 393
#define LB_SETHORIZONTALEXTENT 404
#define LBS_EXTENDEDSEL 2048
#define LBS_DISABLENOSCROLL 4096
#define LBS_OWNERDRAWVARIABLE 32
#define LBS_MULTIPLESEL 8
#define LBS_NOINTEGRALHEIGHT 256
#define LBS_OWNERDRAWFIXED 16
#define LBS_NOSEL 16384
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
#define TPM_RETURNCMD 256
И почему-то перестает получать номер выбранной строки |
|
|
Zireael |
Отправлено: 13 Апреля, 2019 - 15:28:35
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: И почему-то перестает получать номер выбранной строки
Цитата: #define CB_GETCURSEL 32
CODE:#define CB_GETCURSEL 327 |
|
|
Zireael |
Отправлено: 13 Апреля, 2019 - 18:29:17
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как с помощью external сделать, что бы программа смогла открыться только один раз
code (Отобразить)CODE:#define MUTEX_ALL_ACCESS 2031617
external(INT, "CreateMutex", "CreateMutexA", "Kernel32.dll");
external(INT, "OpenMutex", "OpenMutexA", "Kernel32.dll");
external(INT, "ReleaseMutex", "ReleaseMutex", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
int my_mutex=Mutex("any_name_mutex"); // в скобках имя мьютекса (любое)
createdialog(0);
showdialog(0, "Диалог", 300, 300, 300, 300, 4, 1); // седьмым параметром должно быть 4
loop()sleep(10);
function getmessage(0, WM_CLOSE)
{
ReleaseMutex(my_mutex);
CloseHandle(my_mutex);
close();
}
function Mutex(string s)
{
if(OpenMutex(MUTEX_ALL_ACCESS, 0, s))close(); // если мьютекс существует, закрыть программу
return CreateMutex(0, 1, s); // иначе создать мьютекс
}
2 таких скрипта (или exe) одновременно не запустятся. |
|
|
Zireael |
Отправлено: 13 Апреля, 2019 - 20:39:43
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: что бы фшел виндоу сделал мигающим вкладку на панели задач
CODE:#define FLASHW_TRAY 2
#define FLASHW_TIMER 4
#define FLASHW_STOP 0
external(INT, "FlashWindow", "FlashWindowEx", "User32.dll");
createdialog(0);
showdialog(0, "Диалог", 300, 300, 300, 300, 1, 1);
win w=window("Кибор");
int FLASHWINFO1[5]={20, formatwi(w), FLASHW_TRAY | FLASHW_TIMER, 0, 0};
int FLASHWINFO2[5]={20, formatwi(w), FLASHW_STOP, 0, 0};
FlashWindow(address(#FLASHWINFO1[0])); // начать мигать
sleep(3000);
FlashWindow(address(#FLASHWINFO2[0])); // перестать мигать
loop()sleep(10); |
|
|
|