WAPI v1.05 - Funções da API do Windows

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

De qual questionamento você está falando?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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%. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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.
Editado pela última vez por sygecom em 08 Nov 2007 16:10, em um total de 2 vezes.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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).
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Mesmo não tendo disponíveis os códigos fontes, ainda é uma fonte de inspiração. Já ajuda. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem por ANDRIL »

Maligno, consegui algo a respeito da funcao Window2Top() retornar no keyboard o ENTER? Acha que é possivel?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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 ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

O tal Z.COM não tem fontes. Vou ter que desmontar.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Lembre que este só funciona bem em WIN98 não em WINXP.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem 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+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Detecta modo da sessão só no WIN98

Mensagem 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
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder