Zireael |
Отправлено: 26 Июля, 2019 - 01:53:35
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: После нажатия enter в комбо на место курсора (или в конец) вставляется какой-то текст, например "энтер". После чего каретка должна быть снова в конце комбо
code (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define EM_SETSEL 177
#define ES_AUTOHSCROLL 128
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetFocus", "GetFocus", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");
int edit;
char text_edit[999];
createdialog(0);
showdialog(0, "Диалог", 100, 100, 300, 300, 1, 1);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
edit=CreateWindow(0, "EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL, 10, 10, 200, 20, gethwnd(0), 0, 0, 0);
RegisterHotKey(gethwnd(0), 1111, 0, 13); // регистрируем хоткей, Enter
}
function getmessage(0, WM_HOTKEY)
{
if(message.wparam==1111) // если нажат Enter
{
if(GetFocus()==edit) // если фокус в окне edit
{
if(GetWindowText(edit, address(#text_edit[0]), sizearray(text_edit))) // узнать текст edit
{
SetWindowText(edit, format(#text_edit[0])+"Enter"); // установить новый текст
if(GetWindowText(edit, address(#text_edit[0]), sizearray(text_edit))) // узнать текст edit
sendmessage(EM_SETSEL, size(#text_edit[0]), -1, formatiw(edit)); // установить курсор в конец текста
}
}
}
}
Если курсор находится в edit, то при нажатии Enter дописывает в edit нужный текст. И перемещает курсор в конец текста. |
|
|
Dantes3000 |
Отправлено: 12 Июля, 2021 - 17:33:29
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Почему пишет LB_SETCURSEL в sendmessage не опознано если выбрать какой-то пункт?
Спойлер (Отобразить)CODE:external(INT, "ReadINI", "GetPrivateProfileStringA", "kernel32.dll");
external(INT, "WriteINI", "WritePrivateProfileStringA", "kernel32.dll");
external(INT, "GetINI", "GetPrivateProfileSectionNamesA", "kernel32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
char c[255];
char c2[255];
string login[200];
string pass[200];
int flag_nodes=0;
string selected_login="";
string path_ini = tempfolder()+"Pswd.ini";
if(fopen(path_ini, "r")<1)
{
WriteINI("CORE", "pass", "np#?", path_ini);
WriteINI("COXd2", "pass", "vQsWr", path_ini);
WriteINI("CORE\PAyd3", "pass", "bHbme", path_ini);
WriteINI("CORE\PAyd4", "pass", "my&<`J/", path_ini);
}
GetINI(address (#c[0]), sizearray (c), path_ini); //получаем список всех нод в ини файле
for(int d=0; d<sizearray (c); d++)
{
if (c[d]!="")
{
login[flag_nodes]=login[flag_nodes]+c[d]; //составляем список nodes[10]
}
else flag_nodes++;
}
for(d=0; d<flag_nodes; d++)
{
ReadINI (login[d], "pass", 0, address (#c2[0]), sizearray(c2), path_ini);
pass[d]=format(#c2[0]);
}
#define LB_ADDSTRING 384
#define LB_GETSELCOUNT 400
#define LB_GETSELITEMS 401
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
createdialog(0);
showdialog(0, "Диалог",100, 100, 170*2+20, 530, 1, 0);
while(window ("Диалог")==0)sleep(10);
win w=window ("Диалог");
int list_arr[15];
int selected_row;
int list1=CreateWindow(0, "LISTBOX", "", 1+2048+8388608+2097152+1342177280, 8, 10, 170, 455, formatwi(w), 0, 0, 0);
int list2=CreateWindow(0, "LISTBOX", "", 1+2048+8388608+2097152+1342177280, 180, 10, 168, 455, formatwi(w), 0, 0, 0);
int b1=CreateWindow(0, "BUTTON", "DELETE", 1342177280+32768, 90, 465, 80, 20, formatwi(w), 0, 0, 0);
int b2=CreateWindow(0, "BUTTON", "ADD", 1342177280+32768, 188, 465, 80, 20, formatwi(w), 0, 0, 0);
int b11, edit1, edit2;//add new
for(int k=0; k<flag_nodes; k++)
{
strcpy(#c[0], login[k]);
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list1));
strcpy(#c[0], pass[k]);
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(list2));
}
loop() pause(100);
function getmessage(0, WM_COMMAND)
{
if(message.lparam==list1)
{
sendmessage(LB_GETSELITEMS, sizearray(list_arr), address(#list_arr[0]), formatiw(list1));
selected_login = login[list_arr[0]];
writeclipboard(login[list_arr[0]]);
sendmessage(LB_GETSELITEMS, sizearray(list_arr), address(#list_arr[0]), formatiw(list1));
sendmessage(LB_SETCURSEL, formatsn(format(list_arr[0])), 0, formatiw(list2));
}
}
(Добавление)
#define LB_SETCURSEL 390
понял |
|
|
Zireael |
Отправлено: 26 Декабря, 2022 - 10:09:31
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как "свернуть в окно"?
CODE:#define SC_MINIMIZE 0xF020
win w = window (-1, "Notepad", -1); // окно, блокнот в данном слчае
if(w) // если найдено
{
sendmessage(WM_SYSCOMMAND, SC_MINIMIZE, 0, w); // свернуть
}
else messagebox("Окно не найдено"); |
|
|
|