Página 1 de 1

Maximizar ou focar tela

Enviado: 26 Jun 2015 11:00
por FFreire
Bom dia...

Estou com um problema, que é o seguinte...

Desenvolvi uma rotina que usando o TIMER, ela checa se de X em X segundos, se alguém esta pedindo autorização para fazer determinada função no sistema, então funciona assim... o usuário que tenta entrar em determinada função do sistema e não tem autorização para tal, o sistema detecta isso e pergunta para quem ele quer pedir autorização daquela função, o sistema por sua vez, verifica se existe algum usuário que pode autorizar e no terminal do usuário que vai autorizar aparece uma janela pedindo tal autorização... até ai, sem problemas, funciona perfeito e tudo mais... mas estou encontrando um problema, que é quando o usuário que vai autorizar, não esta focado no sistema, ou seja, ele esta no excel, por exemplo, fazendo outra coisa, o sistema esta carregado no terminal dele, mas não esta em primeira instância, digamos assim, então gostaria que quando o sistema detecta que alguém esta pedindo essa autorização, executa um determinado comando/função, que maximiza o sistema, sobrepõe o que o usuário esta fazendo e exiba a tela de pedido de autorização... será que existe algum comando para tal ??

F.Freire

Maximizar ou focar tela

Enviado: 26 Jun 2015 11:29
por Itamar M. Lins Jr.
Como vc usa a Minigui, é mais fácil postar isso no forum da Minigui ou aqui no Pctoledo na sessão da Minigui.
Porque ?
Bem isso é uma característica da tela a ser apresentada do dialog em questão.
Na Hwgui algo como:
STYLE WS_POPUP + WS_VISIBLE + WS_CAPTION ...
Ou vc poderá usar e/ou criar um programa na barra de tarefas, para ficar monitorando o arquivo e quando tiver algo ele aparecer.
Mas essas coisas são recursos das libs gráficas.

Saudações,
Itamar M. Lins Jr.

Maximizar ou focar tela

Enviado: 26 Jun 2015 11:43
por FFreire
Como sempre, atencioso as questões, obrigado Itamar...

Pensei até em gerar um tray, mas dai tem aquela questão, de tratar 2 aplicativos, o usuário acaba, desligando e fala que não ta funcionando, tem também alguns aplicativos de limpeza que detectam como malware ou limpeza e o usuário pede para tirar e por ai vai... então preferi tratar tudo dentro da mesma aplicação... O que preciso mesmo é quando ver que tem pedido de autorização executar algum comando/função para maximizar ou focar o sistema que estaria aberto em segundo plano, será que não tem nada para tal ?

F.Freire

Maximizar ou focar tela

Enviado: 26 Jun 2015 12:05
por Itamar M. Lins Jr.
Tem, eu e que não sei. rsrsrsr
Tem uma pasta na Minigui do Filatov...

Código: Selecionar todos

	IF lOnTop

		DEFINE WINDOW &cForm ;
		AT aNotes[nForm][IDX_FORM_ROW] + GetTitleHeight() + 44, aNotes[nForm][IDX_FORM_COL] + 4 ;
		WIDTH 200 HEIGHT 200 ;
		CHILD ;
		TOPMOST ;
		NOCAPTION NOSIZE ;
		ON INIT lExit := .F. ;
		ON RELEASE ( nRow := GetProperty( cForm, 'Row' ) - GetTitleHeight() - 44, ;
			nCol := GetProperty( cForm, 'Col' ) - 4, CloseNote( cForm ) ) ;
		ON PAINT SetProperty( cForm, 'Label_1', 'Value', cText ) ;
		ON MOUSECLICK MoveActiveWindow()

	ELSE

		DEFINE WINDOW &cForm ;
		AT aNotes[nForm][IDX_FORM_ROW] + GetTitleHeight() + 44, aNotes[nForm][IDX_FORM_COL] + 4 ;
		WIDTH 200 HEIGHT 200 ;
		CHILD ;
		NOCAPTION NOSIZE ;
		ON INIT lExit := .F. ;
		ON RELEASE ( nRow := GetProperty( cForm, 'Row' ) - GetTitleHeight() - 44, ;
			nCol := GetProperty( cForm, 'Col' ) - 4, CloseNote( cForm ) ) ;
		ON PAINT SetProperty( cForm, 'Label_1', 'Value', cText ) ;
		ON MOUSECLICK MoveActiveWindow()

	ENDIF
Esse TOPMOST ai...
No caso está na pasta samples\advanced\desknote

Saudações,
Itamar M. Lins Jr.

Maximizar ou focar tela

Enviado: 26 Jun 2015 12:23
por FFreire
Eita cabra bom... dica certeira... :)Pos

Simplesmente alterei o tipo da janela de MODAL para CHILD e acrescentei TOPMOST... independente de onde o cara estiver, pipoca na tela o chamado... resolvido...!!!!

F.Freire

Maximizar ou focar tela

Enviado: 26 Jun 2015 12:47
por FFreire
Realmente a dica ajudou bastante, resolveu, mas gerou outro problema, WINDOW do tipo CHILD, permite que eu acesse outras coisas, ja a MODAL, trava nela, dai ferrou, porque naquele momento o usuário não pode acessar outras funções... não tem a propriedade TOPMOST para MODAL... alguma outra opção ?? Podia até ser ficar piscando na barra de tarefa...sem abrir mesmo...

F.Freire

Maximizar ou focar tela

Enviado: 29 Jun 2015 17:13
por Itamar M. Lins Jr.
Ola!
Teste ai... Criar outra janela e setar!

Código: Selecionar todos

SetProperty ( <WindowName>, TopMost, lTopMost )
Ou essas aqui...
http://www.hmgextended.com/files/manual/4325.htm
http://www.hmgextended.com/files/manual ... operty.htm

Saudações,
Itamar M. Lins Jr.

Maximizar ou focar tela

Enviado: 29 Jun 2015 18:21
por sygecom
Fabiano,
Veja o tópico abaixo:
viewtopic.php?f=4&t=9594&p=54453&hilit=pisca+exe#p54453

Nele tem uma FUNCTION PISCA_EXE() que pode testar, ela pisca na barra de tarefas do Windows.

Maximizar ou focar tela

Enviado: 01 Jul 2015 10:49
por FFreire
Bom dia...

Agradeço a pronta colaboração, o que fiz foi o seguinte, usei a dica do Itamar e passei a usar o notifyicon, que cria um icone na área de notificações (perto do relógio), quando inicio o sistema, coloco na janela MAIN um icone padrão do sistema, (e tem que definir lá, pois não dá para mexer, depois que o sistema for iniciado), dai quando o timer verifica que tem solicitação para aquele determinado usuário, ele fica trocando o notifyicon, com um led verde e outro vermelho, causando assim o alerta ao usuário, aí assim que o usuário atender ou não a solicitação, volta o icone inicial, ficou bem bacana, (segue o código para demonstração), quanto a função pisca_exe em C, não consegui fazer funcionar, executei ela em determinado momento, mas não surtiu efeito algum, talvez não tenha usado da forma adequada, mas agradeço pela indicação... segue o código...

Código: Selecionar todos

//--------------------------
STATIC FUNCTION NotificaPerm
//--------------------------

LOCAL nSet

nSet := GetProperty('Principal', 'NotifyIcon')

SetProperty( 'Principal', 'NotifyIcon', IIF(nSet=='IC__ON','IC__OFF','IC__ON') )

RETURN(NIL)

Portanto, agradeço ao Itamar e ao sygecom, pela atenção !!

Só uma opinião, como sempre (minha e sincera), vejo que muitos vem ao fórum, para simplesmente esperar que alguém diga como é que tem que fazer, tipo alguma coisa que caia do céu e ficam esperando cair do céu literalmente, acho que fórum, é realmente um tira dúvidas, uma troca de informações, agora tem que prevalecer o que vem de dentro de qualquer programador ou analista, que é o buscar, engenhar, criar, pegue a dica e melhore a dica, dai exponha para que outros possam melhorar ainda mais aquele seu antigo problema, e por ai vai, só assim, conseguiremos passar para novas etapas, vou dar um exemplo meu, eu tinha um sistema totalmente console com a antiga visual lib, comecei gerando um EXE 32 bits, depois usando DBFCDX/LetoDB, agora estou, parte do sistema postgreSql, parte do sistema console, parte gui...Enfim, com as leituras e buscas aqui e em outros lugares, fui juntando, pedacinho com pedacinho e estou nesse patamar, isso leva tempo, dedicação e o mais importante paixão pelo que faz, pois NÃO VAI CAIR DO CÉU, então mãos a obra !

F.Freire