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
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á

Re: WAPI.LIB

Mensagem por Pablo César »

Maligno escreveu:O que tem de errado com a impressão de Windows 98?
Conforme mencionei na minha mensagem anterior:
Só tem um inconveniente no WIN98. Mesmo passando todos os parâmetros, o banner (rôtulo) não é sempre que aparece na fila de impressão quando é acessado no menu (iniciar,impressora,double click).

Fiz uma outra experiência mando imprimir sem os quatros parametros (tipo, fazendo um "reset") e tento mais outra vez, mas desta vez com os quatro parametros, daí imprime beleza e desta vez aparece o banner na fila de impressão. Acho que deve ser, que alguma coisa fica residente ou que ignorasse o banner na fila de impressão. Melhor dito, banner e toda descrição da fila de impressão. Mas imprime toda vez que é passado os quatro parametros, mas nem sempre mostra o banner na fila de impressão da impressora.

Ja no WINXP, não tem problema desse tipo.
Maligno escreveu:Continua muito lento?
Sim.
em WIN98 fica lento a sua execução (de 3 a 4 segundos)
Maligno escreveu:Não confunda fontes (Arial, Letter Ghotic, etc)
Maligno, foi você mesmo que mencionou a palavra "fontes".
Maligno escreveu:com códigos de impressão (configuração, formatação, etc). São coisas totalmente diferentes.
E eu não estou confundido, pois a mudança de tipo de fontes, também é feito por comandos de impressão (pelo menos isso ja venho fazendo alguns anos com as impressoras HP). Até padrão de caracteres ASCII, também é feito pelos comando de impressão.
Maligno escreveu:Em tempo: com relação à visualização da versão corrente do WAPI, não vejo realmente muita necessidade. Se você utilizar as funções de abstração, ao invés do WAPI diretamente, não terá problema. Além do que, é só acompanhar a versão pela documentação, ou mesmo pela data dos arquivos.
OK, foi apenas uma sugestão.

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

Re: WAPI.LIB

Mensagem por Maligno »

Fiz uma outra experiência mando imprimir sem os quatros parametros (tipo, fazendo um "reset") e tento mais outra vez, mas desta vez com os quatro parametros, daí imprime beleza e desta vez aparece o banner na fila de impressão. Acho que deve ser, que alguma coisa fica residente ou que ignorasse o banner na fila de impressão. Melhor dito, banner e toda descrição da fila de impressão. Mas imprime toda vez que é passado os quatro parametros, mas nem sempre mostra o banner na fila de impressão da impressora.
Por banner eu entendo que você quer dizer título. Bom, isso já me aconteceu com o Windows XP. Foi uma vez só. Uma "engasgada". Como não voltou a repetir, acho que é uma esquisitice do Windows. Com você isso acontece sempre? Quando manda imprimir, usa o nome da impressora ou a porta?
Maligno escreveu:Não confunda fontes (Arial, Letter Ghotic, etc)
Maligno, foi você mesmo que mencionou a palavra "fontes".
Ok. Me desculpe pela insistência. :)

[]'s
Maligno
http://www.buzinello.com/prg
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á

Re: WAPI.LIB

Mensagem por Pablo César »

Maligno escreveu:Por banner eu entendo que você quer dizer título.
Isto mesmo. A descrição da fila de impressão que aparece quando entramos na impressora (iniciar,impressora,duplo-click)
Maligno escreveu:Com você isso acontece sempre?
Isto acontece 60% das vezes no WIN98, no WINXP o titulo da fila de impressão faz (digamos sempre).
Maligno escreveu:Quando manda imprimir, usa o nome da impressora ou a porta?
Coloco entre aspas o nome certinho da impressora padrão, isto é o nome tal qual com minusculas e maiusculas. Ex.: "Epson LX-300"
Maligno escreveu:Não confunda fontes ...Ok. Me desculpe pela insistência. :)
Tudo bem Maligno. Eu também sou insistente, pois gostaria de saber como é feito nas linguagens "for Windows", é dizer como é feito a instrução no proprio código fonte, que aquela determinada linha deveria ser impresso em NEGRITO, digamos. Porque imagino que essa instrução serve para qualquer tipo de impressora. Se conseguissemos um jeito para que tais [instruções] sejam re-interpretadas conforme instrução do proprio drive do WINDOWS... daí seria genial !.

Na questão da função -GETWINDOWSINFO (no meu WINXP), nas "Propriedades do Sistema" do ícone "Sistema" do Painel de Controle, me aparece:

Microsoft Windows XP
Professional
Versão 2002
Service Pack 2

Pois é, gostaria tirar essa dúvida. Porque o meu WINDOWS XP, está beleza, sem problemas nenhum a única diferença é a descrição doControle e o resultado do -GETWINDOWSINFO que diz: 9X,Windows 95,,4.0.950 . Mas acredito que se forem feito outros testes na mesma condição iremos descobrir.

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

Re: WAPI.LIB

Mensagem por Maligno »

Maligno escreveu:Com você isso acontece sempre?
Isto acontece 60% das vezes no WIN98, no WINXP o titulo da fila de impressão faz (digamos sempre).
Isso é Windows. Quem vai entender? Nem a própria MS explica. :))))
Coloco entre aspas o nome certinho da impressora padrão, isto é o nome tal qual com minusculas e maiusculas. Ex.: "Epson LX-300"
Pode ser bobagem, mas tenta trocar o nome da impressora para "#", pra própria função pegar a impressora default. Provavelmente vai dar no mesmo. Mas de repente,...
gostaria de saber como é feito nas linguagens "for Windows", é dizer como é feito a instrução no proprio código fonte, que aquela determinada linha deveria ser impresso em NEGRITO, digamos. Porque imagino que essa instrução serve para qualquer tipo de impressora.
Negativo. Cada impressora é, pela sua própria natureza, um computador como outro qualquer. Tem processador, BIOS, memória, I/O, etc. A diferença é que a impressora é um computador dedicado a uma única tarefa. Para que ela funcione a contento, cada fabricante especifica um conjunto de comandos de impressão, ou "instruções", que são interpretadas pelo processador, assim que a "stream" de dados começa a chegar. Cada fabricante tem seu próprio conjunto de "instruções". Antigamente até havia impressora (Citizen matricial) que aceitava os códigos da Epson, que era a marca mais popular (e ainda é, para matriciais de impacto). Mas isso, se hoje ainda existir, é muito raro. Portanto, não dá pra generalizar.

Mas, como eu já disse antes, é fácil resolver esse problema, desde que você se disponha a implementar uma LIB com funções de abstração que forneçam os códigos de impressão da impressora previamente selecionada. Um exemplo do que eu já fiz:

Código: Selecionar todos

set date british
set century on

set margin to 5
set printer to "TST.PRN"
set device to print

SetPrinter(_kPRT_MODEL_PCL5e)

@prow(),0 say _kPRT_CMD_RESET             +;
              _kPRT_ORIENTATION_PORTRAIT  +;
              _kPRT_LINE_SPACING_8LPI     +;
              _kPRT_PAPER_SIZE_A4         +;
              _kPRT_CHARACTER_SET_PC850   +;
              _kPRT_COL_SPACING_FIXED     +;
              _kPRT_PITCH_17CPI           +;
              _kPRT_STYLE_SOLID           +;
              _kPRT_STROKE_BOLD           +;
              _kPRT_TYPEFACE_LETTER_GOTHIC

c := 0
for l := 1 to 84
    c := if(c=132,1,c+1)
    @prow()+1,0 say StrZero(l,3) + " " +;
                    if(l%2=0, _kPRT_STROKE_THIN, _kPRT_STROKE_BOLD) +;
                    Replicate("X",c)
next
@prow(),pcol() say _kPRT_CMD_EJECT

set device to screen
set printer to

if PrintFile("#","TST.PRN")
   ? "Impressao ok!"
else
   ? "Erro na impressão"
end
?
Isso é apenas um teste. Ainda não acabei. Esse código é só pra ter uma idéia. Neste exemplo eu configurei pra usar PCL, mas se usasse Epson matricial de impacto, não teria que mudar nada nesta configuração, já que o próprio sistema faz os ajustes, conforme ele vai recebendo os comandos. Exemplo: a LX300 não tem fonte "Letter Gothic". Neste caso ele usará "Sans Seriff" ao receber o comando para "Letter Gothic". Simples e limpo.
Na questão da função -GETWINDOWSINFO (no meu WINXP), nas "Propriedades do Sistema" do ícone "Sistema" do Painel de Controle, me aparece:

Microsoft Windows XP
Professional
Versão 2002
Service Pack 2
Difícil de entender esse tipo de coisa. Imaginei que o Windows utilizasse a mesma função de busca de versão que eu utilizei no WAPI. Pelo jeito eles utilizaram outro sistema. Nem imagino qual, já que na documentação que eu tenho, que é completa, não há outra forma de fazer isso.
Pois é, gostaria tirar essa dúvida. Porque o meu WINDOWS XP, está beleza, sem problemas nenhum a única diferença é a descrição doControle e o resultado do -GETWINDOWSINFO que diz: 9X,Windows 95,,4.0.950 . Mas acredito que se forem feito outros testes na mesma condição iremos descobrir.
Não tenho tanta certeza disso.
Esta semana não foi possível, mas ferei aquele teste nas máquinas de um cliente na segunda-feira. Depois comentarei o resultado.

[]'s
Maligno
http://www.buzinello.com/prg
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á

WAPI - APLICATIVO para MS-DOS

Mensagem por Pablo César »

Maligno escreveu:Difícil de entender esse tipo de coisa. Imaginei que o Windows utilizasse a mesma função de busca de versão que eu utilizei no WAPI. Pelo jeito eles utilizaram outro sistema. Nem imagino qual, já que na documentação que eu tenho, que é completa, não há outra forma de fazer isso.
Estive buscando uma das tantas alternativas para identificar a versão do Windows e achei isto da propria Microsoft:

Extrai deste link: http://support.microsoft.com/kb/220143/pt-br
Em um computador execução Windows 9 X,
HKEY_LOCAL_MACHINE / software / Microsoft / Windows / CurrentVersion / ProductID
Ou
Em um computador execução Windows NT,
HKEY_LOCAL_MACHINE / software / Microsoft / WindowsNT / CurrentVersion / ProductID
Mas em vez de pegar o objeto ProductID pegariamos o ProductName. Só não sei se funcionaria em todas as versões do Windows.
Maligno escreveu:Pode ser bobagem, mas tenta trocar o nome da impressora para "#", pra própria função pegar a impressora default. Provavelmente vai dar no mesmo. Mas de repente,...
Lamentavelmente não funcionou assim como colocando o nome da impressora.

Bem eu não sei mais, como posso te ajudar para detectar este problema no WAPI. Mas se for esta a questão, irei incluir na BATCH que chama meu aplicativo o comando do proprio WINDOWS. O comando VER > C:WINVER.TXT. Desta forma terei sempre esse arquivo em cada estação conforme sua versão.

Hoje me aconteceu outra coisa engraçada. Que não sei se foi coincidência ou teria algo a ver: Executei a função -SETAPPTITLE do WAPI em modo "TELA CHEIA" e não funcionou, mas quando passei para modo JANELADO funcionou. Daí se me ocorre uma idéia, que ser for positiva, teremos talvez uma solução para saber se estamos executando em TELA CHEIA ou JANELADO. Haveria como obter se o título ou qualquer item da JANELA-WINDOWS estiver presente ?.

Seria muito bom, se houvesse como. espero que haja diferença entre os dois modos de exibição de tela para com estes itens.

Um clip-abraço :)Pos :|<
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por Maligno »

Maligno escreveu:Difícil de entender esse tipo de coisa. Imaginei que o Windows utilizasse a mesma função de busca de versão que eu utilizei no WAPI. Pelo jeito eles utilizaram outro sistema. Nem imagino qual, já que na documentação que eu tenho, que é completa, não há outra forma de fazer isso.
Estive buscando uma das tantas alternativas para identificar a versão do Windows e achei isto da propria Microsoft:
Pois é daí que aquela função deve pegar os dados. A idéia é justamente usar a função para que não seja necessário ir até o Registry, neste ou naquele endereço, conforme a versão do Windows. É a vantagem da abstração.
Aliás, testei hoje em cinco computadores com XP e Windows98. Em todas as informações de versão apareceram corretamente. Testei também as impressões e tudo foi impresso como esperado. Sem erro.
Maligno escreveu:Pode ser bobagem, mas tenta trocar o nome da impressora para "#", pra própria função pegar a impressora default. Provavelmente vai dar no mesmo. Mas de repente,...
Lamentavelmente não funcionou assim como colocando o nome da impressora.
Não sei mais o que dizer. Não tive erro algum que me preocupasse. Só aquela "engasgada" que comentei. Mas foi só uma vez.

Aliás, relembrando algo que você tinha dito....
Fiz uma outra experiência mando imprimir sem os quatros parametros (tipo, fazendo um "reset") e tento mais outra vez, mas desta vez com os quatro parametros, daí imprime beleza e desta vez aparece o banner na fila de impressão. Acho que deve ser, que alguma coisa fica residente ou que ignorasse o banner na fila de impressão.
Quando você manda pro WAPI menos parâmetros do que ele espera, ele simplesmente não faz nada. Só retorna, silenciosamente, sem reportar erro. Isso não "reseta" nada. Nem poderia, já que uma próxima execução do WAPI vai invocar uma nova instância do executável, que nada tem a ver com a instância previamente criada.
Bem eu não sei mais, como posso te ajudar para detectar este problema no WAPI. Mas se for esta a questão, irei incluir na BATCH que chama meu aplicativo o comando do proprio WINDOWS. O comando VER > C:WINVER.TXT. Desta forma terei sempre esse arquivo em cada estação conforme sua versão.
É uma alternativa. Mas há outra: usar o WAPI para recuperar aqueles dados do Registry e interpretá-los você mesmo. Claro que, neste caso, você terá que modificar a função SetAppTitle().
Hoje me aconteceu outra coisa engraçada. Que não sei se foi coincidência ou teria algo a ver: Executei a função -SETAPPTITLE do WAPI em modo "TELA CHEIA" e não funcionou, mas quando passei para modo JANELADO funcionou. Daí se me ocorre uma idéia, que ser for positiva, teremos talvez uma solução para saber se estamos executando em TELA CHEIA ou JANELADO. Haveria como obter se o título ou qualquer item da JANELA-WINDOWS estiver presente ?.
Comigo funciona normalmente no modo tela cheia, tanto no XP (usando o WAPI) como no Windows 98 (usando a OSLib).

[]'s
Maligno
http://www.buzinello.com/prg
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á

WAPI

Mensagem por Pablo César »

MALIGNO. Could you be answered my question, please ?

Haveria como obter se o título ou qualquer item da JANELA-WINDOWS (o X, propriedades, tamnho, etc) estiver presente na sessão vigente ?.

Seria apenas uma idéia para a questão de JANELA CHEIA ou JANELADO

Apreciaria, que fizesse alguns testes a respeito.

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

Re: WAPI

Mensagem por Maligno »

Haveria como obter se o título ou qualquer item da JANELA-WINDOWS (o X, propriedades, tamnho, etc) estiver presente na sessão vigente ?.
Não entendi muito bem sua pergunta. Obter o título? Se for, GetAppInfo() faz isso. Se não for, reformule a pergunta pra que eu entenda melhor.
Seria apenas uma idéia para a questão de JANELA CHEIA ou JANELADO
Acho que não será por aí.
Apreciaria, que fizesse alguns testes a respeito.
Fiz o teste da alteração do título em tela cheia e janela. Ambas as formas funcionaram corretamente. Logo, não há diferença. E se não há diferença, não há forma de utilizar esse método para descobrir qual o modo vigente: tela cheia ou janela.

[]'s
Maligno
http://www.buzinello.com/prg
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á

WAPI - SETTASKBUTTON

Mensagem por Pablo César »

Testei o funcionamento do SETTASKBUTTON no WIN98 e WINXP. Funciona muito bem e identicamente em ambas plataformas, mas tenho que informar algumas caracteristicas.

1. Quando testo esta função em modo JANELADO, funciona de acordo o esperado. Isto é, a janela desaparece visualmente. E quando é executada a mesma função com opção SHOW;<Nº HANDLE>, retorna visivel. Até aqui tudo normal.

2. Quando executo esta mesma função em "TELA CHEIA", não desaparece. Até devo entender que porque não tem JANELA-WINDOWS. Certo ?.

3. Após execução do SETTASKBUTTON em TELA CHEIA e não ter desaparecido, pressiono a tecla ALT-ENTER para mudar seu modo de exibição para modo JANELADO. Observo que ainda continua a sessão sem ter se escondido.

4. Faço outro teste, similar ao item 3. Executo a função SETTASKBUTTON em TELA CHEIA e observo ainda que a sessão não desapareceu. Só que desta vez pressiono a tecla do WINDOWS estando na TELA CHEIA. Daí que a sessão desaparece.

Este comportamento, apesar que diferenciado pelo acionamento da tecla WINDOWS, me faz pensar que ainda existe alguma luz no túnel. Que com teu conhecimento sobre este assunto, creio eu, que possamos chegar algum resultado para a criação de uma nova função em que determine se a sessão está sendo executada em modo JANELADO ou TELA CHEIA.

E é agora que poderei esclarecer melhor a seguinte dúvida sobre o meu questionamento anterior:
Maligno escreveu:Se não for, reformule a pergunta pra que eu entenda melhor.
Se a função SETTASKBUTTON funciona diferentemente na TELA CHEIA e no JANELADO, e pudesse dar o retorno de que ora foi executado com sucesso ou não. Então, você teria o mesmo caminho para criar uma outra função que pudesse determinar se está sendo executado em modo JANELADO ou TELA CHEIA.

É com esta função que deu para demostrarte que há diferença de resultado entre modo JANELADO e TELA CHEIA. Mas agora espero que você tenha captado a idéia e espero que você a torne possível com teu conhecimento em BCC.

Aguardo resultados do teus testes e seus comentários e desejo a você muita luz nesta questão.

Um clip abraço :)Pos :xau :-´
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - SETTASKBUTTON

Mensagem por Maligno »

É com esta função que deu para demostrarte que há diferença de resultado entre modo JANELADO e TELA CHEIA. Mas agora espero que você tenha captado a idéia e espero que você a torne possível com teu conhecimento em BCC.
Eu já sabia dessa particularidade. Mas realmente, por aí não vai dar para descobrir qual o modo da janela DOS. Ou melhor, até deve ser possível, mas por algum artifício tão ou mais complicado do que usar a API do Windows. Por enquanto ainda não sobrou tempo suficiente pra ir atrás disso. O máximo que posso dizer é que sua idéia, até tem sentido, mas poderia dar mais trabalho. E, na minha opinião, esse não é o método mais indicado para detectar o modo. Eu não acho boa idéia confiar numa peculiaridade do Windows para executar uma tarefa que deveria ser executada pela API(se é que é).

[]'s
Maligno
http://www.buzinello.com/prg
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á

WAPI - FULLSCREEN

Mensagem por Pablo César »

Maligno escreveu:por aí não vai dar para descobrir qual o modo da janela DOS
Maligno, eu acho que a intenção não é saber se é janela DOS ou não e sim se está em modo JANELA ou TELA INTEIRA.

Sei que mesmo em modo gráfico também dá para abrir uma sessão em modo TELA INTEIRA. Isto é muito usado na apresentação das telas de video-games.

Então a questão é saber se é modo janela ou não. Quem sabe o programadores para video-games, tenham mais intimidade com isto. Pois eu estive vendo isto no seguinte: http://www.codeproject.com/useritems/Wi ... screen.asp

Não sei, como ajudar. Mas confesso que você as vezes me deixa desanimado. Só me resta ter esperanças para que você não abandone a idéia e continue se informando. Desculpe a minha insistência, você ja fez muito por nós.

Um clip-abraço ! :)Pos :D :{
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - FULLSCREEN

Mensagem por Maligno »

Maligno escreveu:por aí não vai dar para descobrir qual o modo da janela DOS
Maligno, eu acho que a intenção não é saber se é janela DOS ou não e sim se está em modo JANELA ou TELA INTEIRA.
Você se confundiu. Eu não disse nada sobre ser DOS ou não, até porque, é óbvio que é. Com modo da janela DOS eu quis dizer: se janela ou tela cheia.
Sei que mesmo em modo gráfico também dá para abrir uma sessão em modo TELA INTEIRA. Isto é muito usado na apresentação das telas de video-games.
Isso porque a comutação para o modo gráfico em DOS automaticamente força a janela para tela cheia. Inclusive, uma função que uso faz exatamente isso para comutar para tela cheia. Ela aciona o modo gráfico (isso expande a janela) e depois comuta para o modo texto 80x25.
Então a questão é saber se é modo janela ou não. Quem sabe o programadores para video-games, tenham mais intimidade com isto. Pois eu estive vendo isto no seguinte: http://www.codeproject.com/useritems/Wi ... screen.asp
Não tenha muita esperança. Saber o "estado" da janela DOS é uma necessidade de pouquíssima gente, pelo que percebi nas pesquisas que fiz na Net. E a coisa piora com o passar do tempo, já que quem trabalhava com DOS está migrando para Windows (ou Linux) GUI. (quase) Ninguém mais quer saber de modo texto. Só os reacionários. :)
Não sei, como ajudar. Mas confesso que você as vezes me deixa desanimado. Só me resta ter esperanças para que você não abandone a idéia e continue se informando. Desculpe a minha insistência, você ja fez muito por nós.
Eu continuei procurando. Até achei um esquema, através de uma interrupção do DOS, que informa justamente qual é o modo da janela DOS, do jeito que seria necessário. Mas para funcionar, isso dependeria da construção de um VxD, e apenas nos Windows 9x. Assim não dá. Mas acredite: é raríssimo encontrar alguém que tenha essa mesma necessidade. As mensagens que encontrei a respeito eram de 1993 até 1997, mais ou menos. E normalmente ninguém respondia. Quando respondia dava pista errada.

Sinto muito se eu te dou um "banho de água fria" de vez em quando, mas tenho de ser honesto com você: acho que vai ser difícil resolver esse problema. O próprio Dave Pearson "pulou", conforme você comentou.

Mas pelo menos o WAPI tem muitos outros bons recursos. Aliás, estou acrescentando outro que um colega me pediu. Não faria se não fosse algo simples: inserir informações (textos) no ClipBoard. Acho que vou fazer amanhã, se a preguiça permitir. :)))

[]'s
Maligno
http://www.buzinello.com/prg
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á

API do Windows

Mensagem por Pablo César »

Sabe MALIGNO, a esperança é a última que morre. Sei que sou reacionário. Mas é porque o meu sistema em DOS que já é bom, poderia ficar ainda melhor com uma ajudinha extra. E a emigração, é uma coisa que exige muito tempo, que passa por várias etapas. Talvez esta, seja a primeira: de reconhecer as limitações em DOS. Mas insistindo mais um pouco, veja o que encontrei na internet: http://www.frontiernet.net/~fys/chkwin.htm

Gostaria de saber se você entendeu o conteúdo disto, que trata de 2 exemplos e que acho que poderia esclarecer melhor dois itens (o da versão Windows e se está em modo janelado). Poderias me confirmar o que eu entendí, por favor ?.

Dentro deste mesmo link, aponta para um outro, no qual aborda e justifica a necessidade de saber a versão do Windows. Talvez este outro tópico, venha acescentar alguma coisa no seu conhecimento. Dê uma olhada: http://www.frontiernet.net/~fys/docs/apj_2004_144.pdf

A outra função sobre o CLIP-BOARD (áera de transferência) que você estaria desenvolvendo, também seria de grande ajuda e todos nós agradecemos.

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

Re: API do Windows

Mensagem por Maligno »

Sei que sou reacionário.
Reacionário é aquele que recusa, por opção, a modernidade. Se você almeja a modernidade, mas no momento não pode ir a seu encontro, você não é reacionário. É apenas vítima das circunstâncias. :)
Gostaria de saber se você entendeu o conteúdo disto
Não só entendi como já tinha visto algo parecido, conforme comentei na minha mensagem imediatamente anterior. E testei essas novas abordagens, de novo. Mas não dá certo. O primeiro link trata de um esquema que retorna a versão do Windows e, ao final, se está em Windows ou DOS puro. O primeiro código não ajudou. O segundo sequer funcionou. Acusa DOS puro no Windows (98 ou XP) e em DOS puro também.
No que diz respeito ao nosso problema principal: detectar se modo janela ou tela cheia, esses links não ajudaram em nada, infelizmente. Até porque, se o código testado ajudasse, não traria informações acerca do modo de visualização da janela DOS.
A outra função sobre o CLIP-BOARD (áera de transferência) que você estaria desenvolvendo, também seria de grande ajuda e todos nós agradecemos.
Já está pronto e testado. Só não documentei ainda. Eu aviso quando tiver subido o arquivo pronto.

[]'s
Maligno
http://www.buzinello.com/prg
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 »

Eis a relação atualizada de switches do utilitário WAPI, sendo marcados com asteriscos os novos, para manipulação do Clipboard do Windows.

Código: Selecionar todos

  -DELETEREGISTRY:<fullKeyPath>;<entryName>;<resultFile>
  -FLASH:<times>[;<handle>]
  -GETAPPSINFO:<resultFile>
* -GETCLIPBOARD:<resultFile>
  -GETDEFPRINTER:<resultFile>
  -GETHDINFO:<resultFile>
  -GETMYHANDLE:<resultFile>
  -GETPRINTERS:<resultFile>
  -GETWINDOWSINFO:<resultFile>
  -HIBERNATE
  -PLAYWAVE:<source>
  -POWEROFF
  -PRINT:<printerName>;<inputFile>;<reportTitle>;<resultFile>
  -READREGISTRY:<fullKeyPath>;<entryName>;<resultFile>
  -REBOOT
  -SETAPPTITLE:<title>
  -SETBUTTONX:<on|off|del>
* -SETCLIPBOARD:<valueType>;<value>;<resultFile>
  -SETSTARTBUTTON:<hide|show|disable|enable>
  -SETTASKBUTTON:<hide|show>[;<handle>]
  -SUSPEND
  -WRITEREGISTRY:<fullKeyPath>;<entryName>;<valueType>;<value>;<resultFile>
E as funções de abstração, incluídas na biblioteca WAPI.

GetWinClip() -> string
SetWinClip(<cData>) -> logic

Ambas as funções foram testadas nos Windows 98 e XP. Mas um detalhe: elas foram feitas para suportar apenas texto simples que, logicamente, estará limitado ao tamanho das variáveis Clipper: 64KB.
Como sempre, é recomendável ler o pequeno manual contido no README.TXT que acompanha o pacote, para conhecer mais detalhes de uso da biblioteca. Inclusive o fonte WAPI.C, para conhecer os detalhes dos switches.

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

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