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

Приведите код как открывали Messagebox и код как пытаетесь закрыть.
...
Рейтинг: 0 / 0
01.04.2007, 10:09
    #34429591
mikg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
//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
02.04.2007, 10:41
    #34430572
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
Дестроить окно без WM_CLOSE - это плохо.
чаще всего именно на WM_CLOSE висит логическая обработка закрытия окна.
в случае messagebox - это как минимум enable родительского окна.

так что лучше послать WM_CLOSE окну, либо BM_CLICK кнопке на которую хотите нажать.
...
Рейтинг: 0 / 0
02.04.2007, 13:09
    #34431046
mikg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
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
02.04.2007, 19:00
    #34432384
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
Код: plaintext
1.
l_handle = FindWindowA( 0 , ls_wname)
send( l_handle , 16  /*WM_CLOSE*/ , 0 , 0 )
...
Рейтинг: 0 / 0
02.04.2007, 19:02
    #34432391
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
...
Рейтинг: 0 / 0
04.04.2007, 14:12
    #34437422
mikg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
почему то 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
04.04.2007, 16:08
    #34437966
zuzu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
2 mikg
почему не создаешь свой messagebox?
...
Рейтинг: 0 / 0
04.04.2007, 16:16
    #34437998
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
zuzu wrote:

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

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

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

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

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

Это, конечно, да, но... важна ли эта разница для автора?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.04.2007, 18:19
    #34438527
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
Автору сейчас она может и не важна. Но если он вдруг прислушается к идиотскому совету о создании собственного messagebox и использовании его в своей программе, и у него вдруг возникнут необъяснимые глюки (из-за того что message queue вдруг стала по другому обрабатываться), тогда станет важна...
...
Рейтинг: 0 / 0
05.04.2007, 09:51
    #34439338
mikg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
это большая апликациа
такие мысли были , но проще не менять
...
Рейтинг: 0 / 0
05.04.2007, 15:04
    #34440785
Oleg1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
Филиппиз-за того что message queue вдруг стала по другому обрабатыватьсяМожно пример, какие проблемы будут?
...
Рейтинг: 0 / 0
05.04.2007, 21:13
    #34441875
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
Oleg1 Филиппиз-за того что message queue вдруг стала по другому обрабатыватьсяМожно пример, какие проблемы будут?
Ну вот пример
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
26.11.2008, 13:56
    #35676560
тамтам
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие Messagebox
в 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
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Закрытие Messagebox / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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