powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Закрытие Messagebox
17 сообщений из 17, страница 1 из 1
Закрытие Messagebox
    #34428840
mikg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот вопрос периодически обсуждается , но я так и не могу коректно закрыть Messagebox
API destroy закрывает месаж , но после этого нет доступа к главному окну
на SendMessage Windows не реагирует , может я что то не то посылаю
Мне в идеале надо автоматически нажать на нужную клавишу в messagebox или скажем просто сделать Tab + Enter или хотябы коректно закрыть Messagebox
спасибо
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34428921
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikgЭтот вопрос периодически обсуждается , но я так и не могу коректно закрыть Messagebox
API destroy закрывает месаж , но после этого нет доступа к главному окну
на SendMessage Windows не реагирует , может я что то не то посылаю
Мне в идеале надо автоматически нажать на нужную клавишу в messagebox или скажем просто сделать Tab + Enter или хотябы коректно закрыть Messagebox
спасибо
А Messagebox виндовый или PB'шный?
Закрывать пытаетесь из другого процесса или из другого потока того же процесса или по таймеру?

Приведите код как открывали Messagebox и код как пытаетесь закрыть.
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34429591
mikg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
//vizov messagebox

answer = messagebox( "WARNING!" , msgb_txt1 + " '" + st_2.text + "' " + msgb_txt2, Question!, YesNo! )


//ob'javleni API function
// ispolzoval raznie varianti


FUNCTION ulong FindWindA(ulong classname,string windowname) LIBRARY "User32.dll"

FUNCTION boolean DestroyWindow(ulong w_handle) LIBRARY "USER32.DLL"

SUBROUTINE keybd_event (int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll"

FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY "Kernel32.dll"

FUNCTION long SendMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong lParam) Library "User32.dll"


// vneshnee sobitie po kotoromu nado zakrit messagebox
int a

boolean rtn
ulong l_handle
string ls_wname

ls_wname = "WARNING!" //gs_title_messagebox //"WARNING!" // message box
l_handle = FindWindowA(0, ls_wname)

// proboval po raznomu , no reakzii nebilo voobshe, kak ja opisival destroy zakrivaet messagebox , no k oknu ego vizvavshemu net dostupa , tak kak bud to messagebox ostalsa

//if l_handle <> 0 then
// keybd_event( 13, 0, 0, 0 )
// keybd_event( 13, 0, 2, 0 )
// keybd_event( 9, 0, 0, 0 )
// SendMessageA(l_handle,256,13,0)
//end if

rtn = DestroyWindow(l_handle)
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34430572
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дестроить окно без WM_CLOSE - это плохо.
чаще всего именно на WM_CLOSE висит логическая обработка закрытия окна.
в случае messagebox - это как минимум enable родительского окна.

так что лучше послать WM_CLOSE окну, либо BM_CLICK кнопке на которую хотите нажать.
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34431046
mikg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
na sendMessag ja ne vizu voobche ni kakoj reaksii,
vozmozno chto to ne tak pishu
mozno poluchit primer i zelatelno cifrofie znachenija WM_CLOSE and BM_CLICK
i isli mozno podrobnee pro nazatie na knopku

spasibo
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34432384
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
l_handle = FindWindowA( 0 , ls_wname)
send( l_handle , 16  /*WM_CLOSE*/ , 0 , 0 )
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34432391
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34437422
mikg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почему то send не закрывает и возврашает 0
b конце концов у меня заработал цледующий вариант


l_handle = FindWindowA(0, gs_title_messagebox)

rtn = SetForegroundWindow(l_handle)
keybd_event( 9, 0, 0, 0 ) //tab
keybd_event( 9, 0, 2, 0 )
keybd_event( 13, 0, 0, 0 ) //enter
keybd_event( 13, 0, 2, 0 )

спасибо
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34437966
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mikg
почему не создаешь свой messagebox?
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34437998
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zuzu wrote:

> почему не создаешь свой messagebox?

Это слишком просто и примитивно .
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34438466
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
zuzu wrote:

> почему не создаешь свой messagebox?

Это слишком просто и примитивно .
Это на самом деле не такой примитивный вопрос. РВшное модальное окно ведёт себя НЕ ТАК как системный (модальный) messagebox...
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34438487
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп wrote:

> Это на самом деле не такой примитивный вопрос. РВшное модальное окно
> ведёт себя *НЕ ТАК *как системный (модальный) messagebox...

Это, конечно, да, но... важна ли эта разница для автора?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34438527
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору сейчас она может и не важна. Но если он вдруг прислушается к идиотскому совету о создании собственного messagebox и использовании его в своей программе, и у него вдруг возникнут необъяснимые глюки (из-за того что message queue вдруг стала по другому обрабатываться), тогда станет важна...
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34439338
mikg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это большая апликациа
такие мысли были , но проще не менять
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34440785
Oleg1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Филиппиз-за того что message queue вдруг стала по другому обрабатыватьсяМожно пример, какие проблемы будут?
...
Рейтинг: 0 / 0
Закрытие Messagebox
    #34441875
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg1 Филиппиз-за того что message queue вдруг стала по другому обрабатыватьсяМожно пример, какие проблемы будут?
Ну вот пример
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Закрытие Messagebox
    #35676560
тамтам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в winapi есть MessageBox c таймаутом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
FUNCTION long MessageBoxTimeoutA (ulong hwnd, ref string text, ref string title, ulong style, long wlanguageid, long milisec) LIBRARY "user32.dll"

long ll_rtn_t
ulong ll_handle_t
ulong ll_style_t
string ls_text_t
string ls_title_t

ll_handle_t = handle(parent)
ls_text_t = "текст"
ls_title_t = "название"
ll_style_t =  3  //yes no cancel

//закроется через  60  секунд
ll_rtn_t = MessageBoxTimeoutA(ll_handle_t,ls_text_t,ls_title_t,ll_style_t, 0 , 60000 )

...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Закрытие Messagebox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]