Página 12 de 51

Enviado: 28 Mar 2007 09:11
por Maligno
Engraçado que no WIN98 o tempo de espera na execução da rotina através do RUNWAPICMD é muito mais rápido do que no WINXP.
Eu notei que no Windows 98 o retorno do WAPI é mais lento, e não mais rápido.
Será que nessa tentativa de abrir a janela, a função poderia dar algum retorno (se VERDADEIRO ou FALSO) de acordo com o resultado ?.
Sabia que você ia me perguntar isso. Mas não tem jeito. O retorno é um valor lógico invariavelmente positivo. Não tem como saber se deu certo ou não, a não ser visualmente. Inclusive você talvez tenha percebido que a janela atual até perde o foco, mas a janela alvo não é restaurada e focalizada.
Pelo menos resta o console da gente saber que quanto mais o tempo passa, mais enterram o Windows 98. :))

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 28 Mar 2007 09:31
por Maligno
Acabei de descobrir que compilei errado o WAPI.EXE. Corrigi e subi o arquivo novamente. Para efeito de comparação: a versão do ZIP novo tem exatos 113.501 bytes, contra 113.505 do antigo.

Link: http://buzinello.com/download/wapi.zip

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 28 Mar 2007 10:17
por Pablo César
(msg repetida)

Enviado: 28 Mar 2007 10:20
por Pablo César
Puxa vida ! Com a pressa de ver a ultima versão acabei perdendo o ZIP anterior. Possuo todos os arquivos, mas o ZIP, não guardo. Só guardo o último. E confere o tamanho do ultimo ZIP (113.501 bytes). Fiz testes novamente está beleza, salvo quando a tela está em modo TELA-CHEIA.

:(

Com respeito a perder o foco da janela, aqui pra mim deu tudo certo, a janela atual e mando fechar no meu proprio arquivo .BAT, pois seria a segunda sessão (repetida que iria abrir do mesmo aplicativo).

Lamentavelmente, não tenho como forçar a que meus usuários usem em modo JANELADOem WIN98, pois todos eles gostam da TELA-CHEIA. E é engraçado, que alguns por falta de maiores conhecimentos em informática, ficam apavorados quando vêm a sessão em modo JANELADO.

Fazer o quê... quem programa em DOS, sofre... :|

ahhh, lembrei...
Maligno escreveu:Sabia que você ia me perguntar isso.
heee... eu também sabia que você ia dizer isso... kakaka :)Pos :D

Enviado: 30 Mar 2007 10:15
por Maligno
Me esqueci completamente de avisar: na penúltima alteração que fiz, mudei um código de erro de lugar. Portanto, se alguém usa esta LIB e seus códigos de erro, aconselho recompilar o projeto todo. Mas é só isso.

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 03 Abr 2007 13:06
por Pablo César
Caro MALIGNO,

Estou intrigado com as re-aberturas de janelas atraves da função WINDOW2TOP. No seu código fonte, menciona uma variável SW_RESTORE. Não sei se o que eu vou perguntar teria sentido, mas gostaria saber se essa variavel SW_RESTORE seria onde guarda as propriedades da JANELA. Estive pensando, que as janelas em modo TELA-CHEIA (das quais ainda não são possíveis re-exibir) talvez não possuem as propriedades da janela e de que as propriedades seriam vitais para a sua reabertura. Pensei que nesses casos, você poderia FORÇAR com atributos (default) caso essas propriedades não existam (por serem provenientes de TELA-CHEIA), ao forçar e re-abrir a sessão DOS, poderiamos então FORÇAR seu modo de exibição, com aquela outra técnica de utilização do SETMODE e com isto fazer com que fique em FULLSCREEN. Aguardo seus comentários.

Um clip-abraço :)Pos

Enviado: 03 Abr 2007 14:23
por Maligno
Pablo César escreveu:gostaria saber se essa variavel SW_RESTORE seria onde guarda as propriedades da JANELA.
SW_RESTORE é apenas e tão somente uma constante que passa à função ShowWindow() o valor que ela necessita para saber como exibir a janela (ou esconde-la, no caso de uma aplicação Windows/GUI). Inseri essa chamada apenas para a eventualidade da janela alvo estar minimizada. Esta função serve apenas para restaurar a janela (usando ESSA constante). Por meio dela não é possível mudar o modo de visualização da janela DOS, embora seja possível maximizar uma janela Windows/GUI. Usando outra constante, claro.
Quem faz a troca de foco é a função SetForegroundWindow(). Portanto, não será possível levar adiante sua idéia. Até porque, a idéia de maximizar, em se tratanto de uma sessão DOS, tem um sentido diferente da troca de modo de visualização (fullScreen/windowed). Note que há um botão de maximização na janela DOS. Mas o efeito que ele proporciona é bem diferente.

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 03 Abr 2007 17:37
por Pablo César
Maligno escreveu:Inseri essa chamada apenas para a eventualidade da janela alvo estar minimizada.
No meu caso, na maioria dos casos, a janela está MINIMIZADA.
Maligno escreveu:embora seja possível maximizar uma janela Windows/GUI. Usando outra constante, claro.
E o quê faltaria para também maximizar a SESSÃO-DOS (que não possue JANELA alguma, isto é, não é WINDOWED é TELA-CHEIA) ?. Tem como explicar essa situação ?. É dizer, você consegue ver a diferença de propriedades de uma janela e outra ?.

Mesmo que não fosse possível restaurar em modo TELA-CHEIA, eu me conformaria que a SESSÃO-DOS (que estava em modo TELA-CHEIA) e que pudesse estar minimizada pudesse ser RESTAURADA ou MAXIMIZADA mesmo em modo WINDOWED.

Dificil, né ? :-o

Enviado: 04 Abr 2007 08:29
por Maligno
E o quê faltaria para também maximizar a SESSÃO-DOS (que não possue JANELA alguma, isto é, não é WINDOWED é TELA-CHEIA) ?. Tem como explicar essa situação ?. É dizer, você consegue ver a diferença de propriedades de uma janela e outra ?.
Imagino que você está fazendo confusão nos termos. Maximizar uma sessão DOS não a faz entrar em modo tela cheia (full screen). Se é isso o que quer saber, eu não encontrei qualquer informação acerca da troca de modos.
Mesmo que não fosse possível restaurar em modo TELA-CHEIA, eu me conformaria que a SESSÃO-DOS (que estava em modo TELA-CHEIA) e que pudesse estar minimizada pudesse ser RESTAURADA ou MAXIMIZADA mesmo em modo WINDOWED.
Isso só não acontece com o Windows 98, pelos testes que fiz.

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 04 Abr 2007 09:40
por Pablo César
Maligno escreveu:Imagino que você está fazendo confusão nos termos.
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. Eu sei que MAXIMIZAR não é o mesmo que fazer retornar a aplicação em TELA-CHEIA. Mas no fim, eu creio que você entendeu o que eu quis dizer. Em síntese (desculpa insistir) o que eu queria dizer, a questão toda deve estar nas propriedades da janela. Quando digo, propriedades são: tamanho, título, botões habilitados, etc...
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 ?.

Veja no link: Código_Exemplo onde menciona:
The first step is to find the handles of the three main windows that handle the TaskBar, Standard Input Panel (SIP) and SIP Button Bar.
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 ?.

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:

Código: Selecionar todos

void ToggleFullScreen ()
{
    RECT rtDesktop;

    if (mode)
if (mode) não estaria já definido o modo de TELA-CHEIA (FULLSCREEN) da JANELADA (WINDOWED) ?
Maligno escreveu:Isso só não acontece com o Windows 98, pelos testes que fiz.
Você está certíssimo !. Eu tinha feito testes, mas não percebí que no WINXP faz a recuperação da sessão TELA-CHEIA para JANELADO. Ao menos, isso é uma BOA !. Pena que no WIN98, ja no acontece isso. Parece que o WIN98 é sempre o nosso CARMA !.

Desculpa colega, pela minha insistência, sei que você está se esforçando muito para encontrar um solução para isto. Eu por outro lado, não consigo ajudar melhor, pois não conheço da linguagem C. Mas eu acredito firmemente que diferenças nos "TaskBar, Standard Input Panel (SIP) e SIP Button Bar". 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).

Você está tão perto... (de me mandar para aquele lugar.... quem sabe ? hehe) e eu agradeço a sua atenção. Pois desta forma ou outra você consegue cativar cada vez mais a liguagem C que eu tanto gostaria de aprender.

Um clip-abraço, colega. E desculpa a minha chatisse. :{ :)Pos

Enviado: 04 Abr 2007 10:28
por Maligno
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:

Código: Selecionar todos

void ToggleFullScreen ()
{
    RECT rtDesktop;

    if (mode)
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

Enviado: 04 Abr 2007 11:49
por Pablo César
Maligno escreveu:Façamos um trato: vamos usar apenas os termos JANELA e TELA CHEIA... e também: Use o termo troca de modo.
OK
Maligno escreveu: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.
Então acredito que o que faltaria é um RECURSO que possibilite a interpretação da CONDIÇÃO de tais INSTANCIAMENTOS ?.
Maligno escreveu:Repare que a variável pública mode representa um simples valor binário, já que ela é tratada como uma expressão lógica.
Sim, claro. Ela começou como false onde o código define:

Código: Selecionar todos

false // Our current window mode.  
        //  True = Fullscreen
        //  False - Windowed (Startup Default)
Mas pode ver que ela é re-atribuída caso obedeça a condição:

Código: Selecionar todos

if (hWndTaskBar != NULL);if (hWndInputPanel != NULL) ;if (hWndSipButton != NULL)
Teria ela mudado caso ela não fosse MODO TELA-CHEIA ?

Maligno, você teria como compilar este código, ou até mesmo adaptando ao GCC ?. Assim conseguiria entender bem o que este código faz ?.
Maligno escreveu: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.
Se não acontence na sessão DOS, então não é executado "perfeitamente". Alí você quer dizer que é executado sem erro. É isso ?.
Maligno escreveu:Logicamente, o retorno TRUE não se refere à "conferência" da execução do serviço, mas apenas à execução da função.
Isto entendí bem, assim como outros recursos que utiliza API no WAPI.

Grazie, molto per la tua attenzione. Um clip-abraço :)Pos

Enviado: 04 Abr 2007 14:19
por Maligno
Então acredito que o que faltaria é um RECURSO que possibilite a interpretação da CONDIÇÃO de tais INSTANCIAMENTOS ?.
Sim. Algo que me dê o status da sessão.
Maligno, você teria como compilar este código, ou até mesmo adaptando ao GCC ?. Assim conseguiria entender bem o que este código faz ?.
Nem vou perder tempo com isso. Olhando o código já sei que ele não vai ajudar.
Se não acontence na sessão DOS, então não é executado "perfeitamente". Alí você quer dizer que é executado sem erro. É isso ?.
Exatamente. Embora algumas funções da API sejam executadas normalmente em outras plataformas, o efeito final não é atestado pelo retorno da função.

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 04 Abr 2007 17:54
por Pablo César
Caro colega BOM MALIGNO (hehe, que contradição nas palavras... não é quanto a sua pessoa, viu ? Your are a very GOOD GUY)

:{ :)Pos

Achei na INTERNET estes 3 aplicativos FULLSCRN:

http://homepage3.nifty.com/norza/soft/p ... llscrn.com

http://www.columbia.edu/~em36/wpdos/fullscrn.exe

ftp://barnyard.syr.edu/pub/vefatica/fstoggle.exe

Funcionam, mas infortunamente não sempre dá o resultado esperado. As vezes, trava, as vezes aparece aquela famosa TELA AZUL do RUINDOWS. Mas na sua maioria funciona, mas não SEMPRE. Será que esses aplicativos são aplicativos feito a moda KAMIKAZE ?.

E você viu também no tópico que acabei de adicionar: https://pctoledo.org/forum/viewto ... 1&start=17 que trata sobre o WHOAMI. Parece que isto funciona bem, a salvo da mensagem que aparece quando não é logado e quero REDIRECIONAR em arquivo (o arquivo cria) com tamanho ZERO mas dá mesmo assim a mensagem de não LOGADO. Quem sabe, você conseguisse acrescer mais este recurso ao WAPI.

Um clip-abraço :)Pos

Enviado: 04 Abr 2007 18:17
por Maligno
Funcionam, mas infortunamente não sempre dá o resultado esperado. As vezes, trava, as vezes aparece aquela famosa TELA AZUL do RUINDOWS. Mas na sua maioria funciona, mas não SEMPRE. Será que esses aplicativos são aplicativos feito a moda KAMIKAZE ?.
Acontece que esses três programas são do tempo do Windows v3.1. O primeiro, fullscrn.com, usa a multiplex do DOS para mudar o foco da janela virtual. O segundo, fullscrn.exe, faz o mesmo, mas depois também comuta para o modo texto 80x25. O terceiro, fstoggle.exe, mais elaborado, faz o mesmo. A diferença de tamanho é porque ele foi feito em C, ao que me parece.
Para comutar do modo janela para tela cheia, ainda prefiro minha função WinFullScr(), que tem a vantagem de residir no próprio programa.
E você viu também no tópico que acabei de adicionar: que trata sobre o WHOAMI...
Quem sabe, você conseguisse acrescer mais este recurso ao WAPI.
Vi a thread. Sobrando um tempinho dou uma olhada com mais atenção. Mas, a princípio, tudo é possível. :)

[]'s
Maligno
http://www.buzinello.com/prg