Página 38 de 51

Enviado: 08 Nov 2007 09:21
por Maligno
De qual questionamento você está falando?

Enviado: 08 Nov 2007 09:40
por Pablo César
Bem, não posso dizer que não tive nenhuma resposta, embora não tenha atendido a essa questão sobre o conteúdo DIB o querido colega Rochinha fez uma menção muito importante que era a razão principal daquele tópico de acionar/detectar a tecla PRTSCRN, que por instrução da Microsoft não é possível.

O meu questionamento foi lançado neste tópico: https://pctoledo.org/forum/viewto ... 6559#36559 e consequentemente deste: https://pctoledo.org/forum/viewto ... 6729#36729

Mas é claro que não culpo a ninguém, pois isto é liguagem C e a minha intenção era confirmar tal teoria.

Enviado: 08 Nov 2007 09:43
por Maligno
Ah, sim. Agora que entendi. Tinha vista. Meio por cima, mas tinha visto. E a resposta, com 99% de certeza, é sim: dá pra diferenciar DIB de texto. Por isso comentei sobre o "efeito colateral". Mas só não sei dizer se o comportamente será padrão para todas as versões do Windows. É a razão de faltar 1%. :)

Enviado: 08 Nov 2007 09:55
por Pablo César
Maligno escreveu:E a resposta, com 99% de certeza, é sim
Ahhh fico muito aliviado e contente em saber. Então podemos dizer que básicamente todas as probabilidades levam a dizer que você irá conseguir compor essa lógica para criar uma nova função no WAPI que retorne se a aplicação é modo JANELA ou TELA-CHEIA e ao mesmo tempo isto servirá para poder capturar a tela e pôr na área de transferência pelo WAPI.

Pelo que ví assim por cima... ví que o enquadramento do conteúdo do Clipboard serve tanto para WIN95 e NT versions (é mencionado como comentário nos fontes, está no PNDLG.CPP). Tomara seja assim embora esse aplicativo tenho utilizado em WIN98 e funcionou perfeitamente.

Obrigado colega, por responder. Essa questão tem um valor muito estimável.

Enviado: 08 Nov 2007 11:40
por sygecom
asimoes escreveu:Sygecom,
Eu queria passar um sistema pequeno meu para xharbour, é complicado?
Existe ALGUM tutorial FÁCIL para migrar?
O que é preciso?
É facil, comece abrindo um topico novo na sessão do xharbour para nos poder lhe auxiliar melhor.

Enviado: 08 Nov 2007 16:34
por Maligno
Pablo César escreveu:aquele aplicativo PRINTNOW
Falando nesse programa, o que é aquele outro tal de HARDCOPY sobre o qual você comentou noutra mensagem?

Enviado: 08 Nov 2007 17:01
por Pablo César
Foi apresentado outro aplicativo pelo "asimoes" que faz o mesmo e mais alguns outros recursos como: grava em disco, envia por email, insirir imagem direto no Word/Excel, editar conteúdo, etc... veja no link abaixo para download:

http://www.hardcopy.de/hardcopy/english/

Mas este aplicativo não traz consigo os códigos-fontes (é claro). A diferença deste aplicativo com o PRINTNOW, é que o PRINTNOW não precisa ficar residente é só executar (e para mim isso é uma vantagem).

Enviado: 08 Nov 2007 17:36
por Maligno
Mesmo não tendo disponíveis os códigos fontes, ainda é uma fonte de inspiração. Já ajuda. :)

Enviado: 08 Nov 2007 17:43
por ANDRIL
Maligno, consegui algo a respeito da funcao Window2Top() retornar no keyboard o ENTER? Acha que é possivel?

Enviado: 08 Nov 2007 17:53
por Pablo César
Desculpa mais uma vez Andril eu me intrometer no assunto. Mas por favor me confirme a seguinte postura: se Maligno conseguir resolver a velha questão de saber se a sessão em que o aplicativo-Clipper estiver em modo JANELADA ou TELA-CHEIA. E com isso nós possamos dar uma mensagem ou atém mesmo quem sabe reproduzir as teclas combinas ALT-ENTER (para alternar de modo) ja não seria o suficiente sem ter que arriscar a reprodução de um ENTER que até isto poderia significar a confirmação de alguma situação no sistema-Clipper ?.

Creio que o Maligno anda muito perto de conseguir e será um grande triunfo, porque com essa outra função você em modo janelado SEMPRE conseguirá retornar ao focus da sua sessão principal. Não acha Andril ?

Enviado: 08 Nov 2007 17:57
por Pablo César
Você estava com dificuldades para o retorno da aplicação após executar a função WINDOW2TOP da WAPI quando a sessão em modo TELA-CHEIA (ou FULLSCREEN, como queira chamar), isto em WIN98 somente e então eu sugerí a utilização do aplicativo Z.COM, você a usou como recomendei ?. Pois estou seguro que você resolveria por enquanto a sua questão.

Enviado: 08 Nov 2007 18:08
por Maligno
O tal Z.COM não tem fontes. Vou ter que desmontar.

Enviado: 08 Nov 2007 18:13
por Pablo César
Lembre que este só funciona bem em WIN98 não em WINXP.

Enviado: 08 Nov 2007 18:14
por ANDRIL
Pablo, entendo a sua linha de raciocinio. O meu problema nao esta só no fato de ser JANELADO ou TELA-CHEIA, mais sim o FOCO da janela. Quando o sistema esta em janela a funcao WINDOWN2TOP() retorna a janela corretamente, só que a questão tambem se aplica nos clientes que nao querem utilizar o sistema em modo janelado por motivos deles (eles sempre inventam algo).

Entao se uso a TELA CHEIA e chamo um aplicativo externo, exemplo WORDPAD ele abre e fica com o FOCO e meu sistema MINIMIZADO. Se eu mando ele imprimir diretamente (sem exibir o documento) ele devolve o focO ao sistema ( só que nao volta a ficar em TELA-CHEIA ) necessitando teclar ENTER.

Bom para encurtar, espero que o Maligno tenha exito em uma das duas hipoteses (ou quem sabe nas duas).

Ate+

Detecta modo da sessão só no WIN98

Enviado: 08 Nov 2007 18:41
por Pablo César
ANDRIL escreveu:Pablo, entendo a sua linha de raciocinio. O meu problema nao esta só no fato de ser JANELADO ou TELA-CHEIA, mais sim o FOCO da janela.
Acho que não entendeu ainda. Se você ler o link onde menciono cómo fazer a detecção de que modo está a janela ( A este tópico me refiro, clique aqui ), você verá que o objetivo é saber:

1. Se seu sistema está sendo executado em WIN98. Se for, OK sigamos enfrente, caso contrário não há necessidade de verificar o próximo passo (que é ver se está em modo JANELADO ou TELA-CHEIA), porque no WINXP o WINDO2TOP funciona SEMPRE.
2. Antes de chamar a aplicação GUI (seja qual for: NOTEPAD, WINWORD, etc.), você deve verificar se a sessão está em modo JANELADO, a fim de que possa retornar a sessão principal após execução do aplicativo GUI. E para isso você deve fazer aquela função que utiliza o Z.COM. Daí se a sessão estiver em modo TELA-CHEIA (entendo que muitos gostam de usar assim), então você faz um DO WHILE onde dará uma mensagem na tela dizendo que deve pressionar a teclas ALT-ENTER para mudar para o modo janelado, após essa mensagem verifique em looping o modo da sessão novamente através do Z.COM, no site do nosso colega Wagner. Em sintese: não permita ir pra frente se o usuário não mudar a tela para o modo JANELADO, isto é se não utilizar as teclas ALT ENTER.
4. Verifique o HANDLE da sessão chamadora para depois restaurar-la
5. Execute normalmente sua aplicação GUI como sempre o fez. Meu conselho é utiliza o START /W
6. Após execução do aplicativo GUI, retornará à sessão chamadora (naturtalmente, mas pode forçar com a função WINDOW2TOP para garantir).
7. Depois disso, se quiser pode dar a mensagem pro usuário dizendo que pode retornar a TELA-CHEIA como estava antes.

Entao se uso a TELA CHEIA e chamo um aplicativo externo, exemplo WORDPAD ele abre e fica com o FOCO e meu sistema MINIMIZADO. Se eu mando ele imprimir diretamente (sem exibir o documento)
ANDRIL escreveu:ele devolve o focO ao sistema ( só que nao volta a ficar em TELA-CHEIA ) necessitando teclar ENTER.
Você diz que devolve foco, mas na verdade nessa condição o focus não se estabeleceu, senão estaria retornando a aplicação e não teria esse problema. Mas isso só é necessário tão somente e apenas nessa condição (WIN98+MODO TELA-CHEIA) no resto ele funciona e se o Maligno fizer um ENTER a mais nas outras condições poderá interferir no seu aplicativo porque o focus se estabeleceu.

Essa questão do modo JANELADO em WIN98 e creio que em 95 também, após executar um aplicativo GUI a sessão principal fica minimizado mesmo. E o Maligno ja disse que não tinha solução para isso.

Espero que agora você tenha entendido. Qualquer coisa é só perguntar, Andril.

Veja o exemplo em looping que verifica o modo e não sai até atender ao modo da tela em que se deseja:

Fiz um aplcativo que verifica o modo (VERMODO.PRG)

Código: Selecionar todos

PARAMETERS VMODO
IF VMODO=NIL
   VMODO="0" // Recebo como parâmetro e é quando quero que fique em modo JANELADO
ELSE
   VMODO=STR(VAL(VMODO),1,0)
ENDIF
DO CASE
   CASE "95" $ VER_WIN
        VRODA:="Z -F > C:MODO.TXT"
   CASE "98" $ VER_WIN
        VRODA:="Z -F > C:MODO.TXT"
    OTHERWISE
        VRODA:=""
ENDCASE
DO WHILE .T.
   IF !EMPTY(VRODA)
      SWPRUNCMD(VRODA)
      RESTSCREEN( 00,00,24,80,TELA_PRI )
      SETPOS(00,00)
   ENDIF
   IF FILE("C:MODO.TXT")
      VTXT:=MEMOREAD("C:MODO.TXT")
      IF "it's windowed mode." $ VTXT
         IF VMODO="0"
            EXIT
         ELSE
            IF ALERTAR(" necess rio alternar o modo de exibi‡„o da tela.;;Pressione as teclas <Alt><Enter> simultaneamente.;;Isto ir  deixar o modo de exibi‡„o em TELA INTEIRA.",{"Ok","Desconsiderar"},2)=2
               EXIT
            ENDIF
         ENDIF
      ELSE
         IF VMODO="0"
            IF ALERTAR("É necessário alternar o modo de exibição da tela.;;Pressione as teclas <Alt><Enter> simultaneamente.;;Isto ir  deixar a exibição da tela em modo JANELADO.",{"Ok","Desconsiderar"},2)=2
               EXIT
            ENDIF
         ELSE
            EXIT
         ENDIF
      ENDIF
      DELETE FILE("C:MODO.TXT")
   ELSE
      EXIT
   ENDIF
ENDDO
RETURN NIL