Vamos dizer que você tem duas opções de "REATIVAR" e/ou "DEIXAR VIGENTE" a sessão NHandle da função WINDOW2TOP, seria MAXIMIZAR ou RESTAURAR a JANELA da sessão. É por isso que eu utilizo o termo MAXIMIZAR.
Não use mais, pois isso só causa confusão. O termo maximizar, que existe em sessão DOS, nada tem a ver com mudança de modo (janela/tela cheia). Maximizar em DOS significa magnificar a janela DOS até o limite do tamanho da janela, da mesma forma que se faz em um programa GUI. A diferença é que programas GUI podem, na maior parte das vezes, ocupar todo o desktop.
Façamos um trato: vamos usar apenas os termos JANELA e TELA CHEIA, que é o certo, aliás. Senão, você diz uma coisa e eu entendo outra. Esqueça o termo maximizar, que não se aplica ao nosso problema. Use o termo
troca de modo.
Isto porque acredito que deva existir alguma diferença entre o modo TELA-CHEIA e o JANELADO em algumas das propriedades. Por isso que te pergunto, se você consegue LER as propriedades da janela. Você consegue?.
Não. Se tivesse conseguido isso o problema já estaria resolvido. E nem há um local único onde se consegue obter todas essas informações de um só vez.
Eu sei que você vai pensar... mas isto é para WINDOWS CE, mas o que eu quero FRISAR, é que talvez seriam essas propriedades (ou apropriadamente seriam HANLDES) que façam a diferença entre um modo e outro (modo TELA_CHEIA e JANELADO). Avete capito, collega?.
Capisco. Mas, sendo Windows CE ou não, este link não diz nada que eu já não saiba.
Note: os handles nada mais são que números de controle de instanciamento. Eles não me dão acesso a nada. Apenas me servem para informar o Windows sobre qual instância estou me referindo quando executo determinada função.
Porque abaixo nesse mesmo link, no item:
"Toggling Between The Two Modes" mostra a diferença dos dois modos, tal é assim que no fonte do Barney L. Parker diz:
if (mode) não estaria já definido o modo de TELA-CHEIA (FULLSCREEN) da JANELADA (WINDOWED) ?
Repare que a variável pública mode representa um simples valor binário, já que ela é tratada como uma expressão lógica.
Mas eu acredito firmemente que diferenças nos "TaskBar, Standard Input Panel (SIP) e SIP Button Bar".
Pois então desacredite. Partindo do princípio: seu desktop é criado por um programa comum (explorer.exe) como um simples componente visual do tipo ListView. Os botões da taskbar e a própria taskBar são simples componentes visuais, como os utilizados em muitos programas. Portanto, eles não contém (e não se pode obter através deles) quaisquer informações úteis que possam ajudar a resolver o problema da troca de modo de uma sessão DOS.
Agora suponhamos também que mesmo que você consiga ver a diferença deles na sua função e não consiga manipulá-los, eu acharia que você poderia dar um retorno na função com um novo número de erro (digamos). Daí saberei que é pra dar uma mensagem pro usuário. Tipo: "Clique na sessão minimizada piscando..." (po exemplo).
Seria uma boa solução. Paleativa, mas melhor que nada. Mas eu já havia comentado com você que isso também não será possível. Primeiro que não tenho o que executar para tentar trocar de modo. Segundo que o Windows, quando executa funções do tipo, ele apenas executa, não verificando se o que foi pedido foi de fato efetuado corretamente. Veja o caso da função
SetForegroundWindow() do switch -WINDOW2TOP. A função executa perfeitamente no Windows 98. Eu tenho um retorno TRUE. Mas a sessão DOS não é realmente colocada à frente, como acontece no XP. Logicamente, o retorno TRUE não se refere à "conferência" da execução do serviço, mas apenas à execução da função.
De qualquer forma, valeu o seu esforço pelas novas tentativas. E continuamos tentanto. Conforme o tempo permitir.
[]'s
Maligno
http://www.buzinello.com/prg