Página 1 de 1
Como testar se hwgui está em uso?
Enviado: 27 Ago 2024 20:42
por JoséQuintas
Preciso bloquear a execução do fivewin, caso hwgui esteja rodando.
Alguma idéia de como testar se hwgui tem alguma coisa aberta?
Como testar se hwgui está em uso?
Enviado: 27 Ago 2024 20:51
por JoséQuintas
Esqueci de uma coisa importante:
O teste normal não serve pra multithread.
Len() de aWindows e aDialogs não serve.
Como testar se hwgui está em uso?
Enviado: 28 Ago 2024 14:36
por alxsts
Olá!
Talvez consiga usando a função
Type() do [x]Harbour:
Código: Selecionar todos
? Type( 'hMainWindow()' ) --> "UI"
? Type( 'hMainWindow():new()' ) --> "UI"
? Type( 'hDialog()' ) --> "UI"
? Type( 'hDialog():new()' ) --> "UI"
O retorno "UI" indica que a função foi linkeditada na aplicação. Não quer dizer que esteja sendo executada no momento da chamada da função Type().
Como testar se hwgui está em uso?
Enviado: 28 Ago 2024 15:05
por JoséQuintas
A idéia é boa, mas não dá.
Estou linqueditando hwgui e fivewin, juntos, hwgui e suas funções sempre vão existir.
Acho que não vai ter opção.
Janela aberta é visivel somente na thread, então não dá pra testar janela aberta, porque na thread atual nunca vai ter.
Deixar com erro mesmo, é coisa temporária.
Como testar se hwgui está em uso?
Enviado: 28 Ago 2024 15:19
por JoséQuintas
Pronto resolvido.
Usar normal, com controle único de janelas.
Código: Selecionar todos
PRGFLAGS=-m -n -w3 -es2 -ge1 -DHB_NO_GTGUI=YES
##PRGFLAGS=-m -n -w3 -es2 -ge1 -DMT_EXPERIMENTAL -DHB_NO_GTGUI=YES
Agora a lista volta a ser geral, e não por thread.
Código: Selecionar todos
FUNCTION HWGUIInUse()
IF Len( hWindow():aWindow ) > 0
RETURN .T.
ENDIF
IF Len( hDialog():aDialogs ) > 0
RETURN .T.
ENDIF
IF Len( hDialog():aModalDialogs ) > 0
RETURN .T.
ENDIF
RETURN .F.