Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Marcondes

Aplicação "fullscreen" permite que barra iniciar apareça

Recommended Posts

Olá a todos.

 

Criei uma aplicação que roda em tela cheia e faz a barra iniciar sumir através do uso da propriedade topmost. O problema é que quanto existem surge alguma notificação no tray, a barra iniciar é mostrada e eu não quero que isso aconteça. Alguém sabe como resolver isso?



correção: * o problema é que quando surge uma notificação no tray, a barra iniciar é mostrada ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, acredito que a barra do iniciar tem prioridade sobre qualquer outro programa em execução. Você pode tentar utilizar o comando BringToFront() a um período razoável de tempo através de um timer e ver se resolve o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, para fazer aplicações fullscreen você precisa analisar as duas situações:

 

A. O usuário NUNCA pode ter acesso a barra de menu iniciar enquanto mantem a aplicação aberta.

B. O usuário precisa ter acesso a barra quando utilizar CTRL+TAB, CTRL+ESC, WinKey.

 

Pro caso A:
Você vai precisar invocar dois metodos da User32:


Em C#:

[DllImport("user32.dll")]
static extern int CreateDesktop(string lpszDesktop, string lpszDevice, int pDevmode, int dwFlags, int dwDesiredAccess, int lpsa);

[DllImport("user32.dll")]
static extern int  SwitchDesktop(int hDesktop);

 

Dá uma pesquisada sobre eles. Eles servem para criar uma desktop alternativa no Windows, com isso você vai conseguir isolar seu usuário de todo ambiente externo, e ao final da aplicação, ou ao sair do modo fullscreen, você só precisa fazer ele voltar a desktop natural do Windows.

 

Pro caso B:

 

Neste caso você está no caminho certo! O formulário precisa ser topMost, e no seu evento Leave, você precisa definir uma chamada para "SetForegroundWindow", um metodo da User32 que permite que dê foco a uma janela existente no windows.

 

 

Em C#:

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr handlerWindow);

Para saber o ponteiro de seu formulário use a propriedade MainWindowHandle do form.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.