Utilizar a tecla "Print Screen"
Moderador: Moderadores
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Nunca usei o conteúdo da SAVESCREEN e acho que o Maligno tem razão em remover antes o atributo, pois isso iria interferir na impressão. Mas a questão de imprimir a tela não seria o problema Rochinha, em primeiro lugar eu queria saber qual seria o código equivalente à tecla PRINT SCREEN que parece não possuir LIB algum para interceptá-la. E segundo originou-se (sem querer) outra questão baseada no uso de uns aplicativo que capturam telas e são impressas. estes aplicativos apresentados (PRINTNOW e HARDCOPY), capturam a tela ora colocada na área de transferência do Windows e é impressa, mas quando a sessão DOS estiver em tela cheia, daí não imprime. Por isso fiz outra apelação aos colegas, para nos ajudarem a entender tal comportamento. A minha dedução é que quando o conteúdo da área de transferência for do tipo DIB (imagem) ele processa a impressão em forma gráfca, mas quanto está em modo TEXTO simplesmente a ignora (porque até daria para imprimir também). Com isto podemos dizer que se existe diferenciação do conteúdo da área de transferência (de DIB para TEXTO), então podemos achar uma forma "gambiarristica" para saber se a sessão está em modo JANELADA ou TELA-CHEIA. Entenderam ?
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.
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.
Aliás, complementando, para quem quiser saber: os atributos de cor, que devem ser removidos, são os caracteres pares da string devolvida por SaveScreen().
[]'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!
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!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Eu utilizo VTELA:=CHARODD(SCREENSTR(00,24,80)) para obter string da tela e é linha por linha. Não sei se funcionaria isto: VTELA:=CHARODD(SAVESCREEN(00,00,24,80)) para remover esses atributos, mas teria que compor a tela linha a linha. Fazendo deste modo:
ou então:
Código: Selecionar todos
SET ALTERNATE TO TELA.TXT
SET ALTERNATE ON
FOR I=0 TO 24
IF I=0
?? CHARODD(SCREENSTR(00,I,80))
ELSE
? CHARODD(SCREENSTR(00,I,80))
ENDIF
NEXT
SET ALTERNATE OFF
SET ALTERNATE TO
COPY FILE("TELA.TXT") TO ("LPT1")Código: Selecionar todos
PRINTSCR() // da CA-TOOLS.LIBEsclarecendo um pouco mais: cria um caracter antes de cada caracter da tela. portanto deve se compor de dois em dois a concatenação de cada linha e ainda acrescentar o CHR(10)+CHR(13) para finalizar cada linha e depois poder imprimí-la.os atributos de cor, que devem ser removidos, são os caracteres pares da string devolvida por SaveScreen()
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.
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.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Tecla PRTSCRN
Amiguinho
Segundo o site da Micro$oft( http://msdn2.microsoft.com/en-us/library/8c6yea83.aspx ) os aplicativos não poderão fazer uso direto da tecla PRINT SCREEN.
A mesma não tem código ASCII usável, ficando então, embassado o seu uso.
Segundo o site da Micro$oft( http://msdn2.microsoft.com/en-us/library/8c6yea83.aspx ) os aplicativos não poderão fazer uso direto da tecla PRINT SCREEN.
A mesma não tem código ASCII usável, ficando então, embassado o seu uso.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Parece ter algum nexo porque não ví aplicativo algum acionando diretamente a tecla PRTSCRN.rochinha escreveu:Segundo o site da Micro$oft( http://msdn2.microsoft.com/en-us/library/8c6yea83.aspx ) os aplicativos não poderão fazer uso direto da tecla PRINT SCREEN.
Neste seguinte Download do PRINTNOW tem nesse arquivo zipado, os fonte desse aplicativo e que é da autoria da PCMagazine. Então se a tecla PRTSCRN não tem acionamento direto, tal aplicativo deve ser acionado pelo método interno do Windows na hora que coloca a tela na áera de transferência. Acho que isso está no arquivo PNDLG.CPP onde diz "Custom window message identifiers" e seu define WM_MY_PRINT_CLIPBOARD.
Agora só resta entender se há possibilidades de saber se há cómo diferenciar o conteúdo da tela capturada se for DIB ou TEXT.
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.
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.
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Eu fiz dessa forma quando tive tal problema...
Substitui o printscreen por f12
Substitui o printscreen por f12
Código: Selecionar todos
SETKEY(K_F12,{||duduprn()})
Código: Selecionar todos
*********************************************************
* Fun‡ao criado por dudu_xbase para printscreen em xp
********************************************************
Function duduprn()
Local telasuja, telalimpa, x
* Salvo a Tela
telasuja := savescreen()
* remove os caracteres coloridos
telalimpa := ""
for x := 1 to len(telasuja) step 2
telalimpa += substr(telasuja,x,1)
next
* Pego a impressora que esta instalada na lpt1
//cPrinter := printerporttoname("lpt1",.t.) // xharbour
cPrinter := "LPT1" // clipper
if empty(cPrinter)
tone(2000,2)
tone(1000,2)
return
endif
* Ativo a Impressao
set printer to &cPrinter.
set (_SET_DEVICE, "PRINTER")
set printer on
set console off
* Imprimo a tela limpa
for x := 1 to len(telalimpa) step 80
@ prow()+1,00 say substr( telalimpa, x, 80)
next
eject
* Libero o Buffer da impressÆo que o XP segura
set printer to
set console on
set printer off
set device to screen
set printer to
return
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
E se quiser imprimir numa segunda impressora que não está capturada, o quê me recomenda fazer DUDU ? Utilizar o NETREDIR ? (eu nunca usei. Utilizei o USB ou WAPI e prendem as máquinas. Engraçado, ne ?
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.
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.