Assim que o tempo permitir, a próxima adição será de um programa demo que contemplará todas as funções já prontas. Um "big" demo.
[]'s
Maligno
http://www.buzinello.com/prg
Moderador: Moderadores

A esperança é a última que morre.1. Detectar se a sessão é janelada ou tela-inteira (sei que há ainda esperanças)
É absolutamente impossível recuperar a relação de comandos de uma impressora apenas com seu driver. Só mesmo pela documentação desta.2. Alguma forma de extrair os comandos para impressão conforme o drive da impressora instalada no WINDOWS.
Se você imprime em um programa GUI, em modo RAW, você tem de fornecer os comandos que a impressora alvo aceita. Portanto, você tem de conhecer quais códigos são esses. Se você imprime através de um gerador de relatórios, como os que existem nas melhores IDEs, você apenas monta seu relatório pelo sistema WYSIWYG, a exemplo do que o Word faz. A aplicação, num nível mais elevado, e por meio do gerador, monta uma espécie de pseudo-código que é repassado à etapa de impressão. É esse código que permite, por exemplo, imprimir uma certa página, ao invés de todo o relatório. Nesta etapa o Windows, através do driver, interpreta este código em alto nível, criando um monte de código RAW, em baixo nível. Este será o código enviado para a impressora. Aliás, a impressora só trabalha com código RAW. Não sou especialista no assunto, mas, a grosso modo, é assim que a coisa funciona.Eu nunca pude entender como se faz para imprimir em forma gráfica. E como fazem os programadores para imprimir em seus aplicativos GUI. Se você pudesse dar um exemplo ?.
Quais, por exemplo?Embora eu tenha interesse também sobre outros recursos que o WAPI poderia fazer.

Desculpe insistir nisto, mas quando eu mencionei:Maligno escreveu:A esperança é a última que morre.))
E você respondeu:É 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.
Você não poderia fazer uma função que ao igual da função SETTASKBUTTON que funciona diferentemente na TELA CHEIA e no JANELADO, e pudesse dar o retorno da função quando ora a função tenha conseguido com êxito ou não ??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.
Eu ainda acho que algo deve haver algo mais em torno disto. Porque o DOSPRINTER (aquele do olhinho), ele interpreta os comando EPSON dentro do arquivo TEXTO para o comando de QUALQUER impressora. Se bem que esse comando tem que estar posicionado logo no início de cada linha para poder ser interpretado com sucesso. Nisto mantém o mesmo conceito que você explicou anteriormente de que do caso contrário precisaria do sistema WYSIWYG.Maligno escreveu:É absolutamente impossível recuperar a relação de comandos de uma impressora apenas com seu driver. Só mesmo pela documentação desta.
O que eu gostaria de obter que ao igua desse DOSPRINTER, possamos interpretar esses "pseudo-códigos" que seriam passados como comandos EPSON que ja todo mundo conhece e traduzir aos comando da impressora instalada.Maligno escreveu:a exemplo do que o Word faz. A aplicação, num nível mais elevado, e por meio do gerador, monta uma espécie de pseudo-código que é repassado à etapa de impressão. É esse código que permite, por exemplo, imprimir uma certa página, ao invés de todo o relatório. Nesta etapa o Windows, através do driver, interpreta este código em alto nível, criando um monte de código RAW, em baixo nível.
A função da API não me dá retorno algum. Portanto, não tenho como dizer se ela funcionou ou não.Você não poderia fazer uma função que ao igual da função SETTASKBUTTON que funciona diferentemente na TELA CHEIA e no JANELADO, e pudesse dar o retorno da função quando ora a função tenha conseguido com êxito ou não ??
Nunca testei esse programa ou mesmo outro qualquer do tipo, mas imagino que o que ele deve fazer é traduzir os comandos que encontra. Observe a página do DOSPrinter e repara que ele tem uma lista de "Esc/P Esc/P2 supported commands". Ou seja, se você usar algum comando inexistente na lista, ele simplesmente não traduzirá.Eu ainda acho que algo deve haver algo mais em torno disto. Porque o DOSPRINTER (aquele do olhinho), ele interpreta os comando EPSON dentro do arquivo TEXTO para o comando de QUALQUER impressora.
Você mesmo já falou em tradução de comandos.O que eu gostaria de obter que ao igua desse DOSPRINTER, possamos interpretar esses "pseudo-códigos" que seriam passados como comandos EPSON que ja todo mundo conhece e traduzir aos comando da impressora instalada.
Esse erro não é informado pelo WAPI. Onde você o viu?Também intentei imprimir numa impressora HP D1300 USB utilizando a função -PRINT do WAPI, mas em nenhuma situação imprimiu. Mencionava "erro" no status da fila de impressão.
É possível.1. Possibilidade de utilizar o WAPI para adicionar programas no menu iniciar
O AUTOEXEC ainda continua a existir. Nos Windows de kernel NT ele apenas mudou de extensão e sua importância mudou um pouco mas, fora isso, continua do mesmo jeito.extinção do arquivo de inicialização do AUTOEXEC.BAT.
Pra isso o WAPI tem o manipulador do Registry. É só acrescentar a chave no local apropriado e ele executará sempre (RUN) ou apenas uma vez (RUNONCE). Só depende do local.Ou até mesmo para colocar uma rotina que quero executar somente na inicialização da máquina.
Isso é o mesmo que o ítem 1.2. Criar atalho, disponibilizando na área de trabalho.
Disponibilizei uma função há alguns dias que é perfeita pra isso. Basta você apontar o arquivo. Talvez seja necessário apenas incluir uma busca de chave, mas isso é simples. Se não viu a mensagem a esse respeito, eis o link do arquivo.3. Inserir variáveis e items do MSCONFIG como: KEYBRD2.SYS e PerVMFiles-150 na aba do SYSTEM.INI e seção [386Enh]
Não entendi o que você quer dizer com isso.4. Tratar LONG NAMES para SHORT NAMES
Nunca usei isso, mas pelo pouco que vi, isso daria um trabalho razoável.5. Possibilitar criação de JOBs no MS-TASK, para que possamos utilizar o mesmo Agendador de Tarefas do WINDOWS.

Na minha mensagem na qual indico o link http://www.codeproject.com/useritems/Wi ... screen.asp sobre FULLSCREEN, nessa função feito em C (creio eu), onde indica que após criar as variaveis:Maligno escreveu:A função da API não me dá retorno algum. Portanto, não tenho como dizer se ela funcionou ou não.
Código: Selecionar todos
HWND hWnd; // The main window handle
HWND hWndInputPanel = NULL; // The SIP
HWND hWndTaskBar = NULL; // The TaskBar
HWND hWndSipButton = NULL; // The SIP Button
BOOL mode = false; // Our current window mode.
// True = Fullscreen
// False - Windowed (Startup Default)
Código: Selecionar todos
void InitFullScreen (void)
{
hWndInputPanel = FindWindow(TEXT("SipWndClass"), NULL);
hWndSipButton = FindWindow(TEXT("MS_SIPBUTTON"), NULL);
hWndTaskBar = FindWindow(TEXT("HHTaskBar"), NULL);
}
Para ser exato foi um HP Deskjet D1360. E o erro que digo é mostrado na fila de impressão. Neste momento lamentavelmente, não posso precisar o erro, mas logo assim tenha o meu PC a normalidade mandarei por email a tela capturada. Mas é proveniente do Menu Iniciar,Configurações;Impressoras;Double click-na-impressora;e verá o erro.intentei imprimir numa impressora HP D1300 USB utilizando a função -PRINT do WAPI, mas em nenhuma situação imprimiu. Mencionava "erro" no status da fila de impressão.
O erro é procedente da FILA-DE-IMPRESSÃO. Não é um erro do WAPI e sim um erro causado pelo WAPI.Maligno escreveu:Esse erro não é informado pelo WAPI. Onde você o viu?
Legal !. Me desculpe a minha falta de conhecimento sobre o REGISTRY, eu vou testar mas é claro que deverá dar certo. Obrigado.Maligno escreveu:Pra isso o WAPI tem o manipulador do Registry. É só acrescentar a chave no local apropriado e ele executará sempre (RUN) ou apenas uma vez (RUNONCE). Só depende do local.
Sinto muito, mas não dá. A matéria deste link diz respeito ao Windows CE (se bem que as funções utilizadas fazem parte da API do Windows) e nada tem a ver com NTVM. A comutação de modos tratada aqui é para maximizar/minimizar janelas de aplicações comuns. Até poderia funcionar com uma janela NTVM, mas ela só seria maximizada/minimizada. Isso é diferente de trocar de modo TELA CHEIA <-> JANELA.Na minha mensagem na qual indico o link [link] sobre FULLSCREEN, nessa função feito em C (creio eu), onde indica que após criar as variaveis:
Pergunto: Você conseguiria reproduzir isto ? E ver se se comporta de forma diferente conforme o modo de exibição (Tela cheia ou janelada) ?.
É uma função simples. O link é http://buzinello.com/download/fullscr.zip.Confesso que ainda não testei essa opção sua e dos outros colegas que aciona o modo gráfico (isso expande a janela) e depois comuta para o modo texto 80x25. Me indique onde encontro essa função e me dê exemplo de como fazer.
Ah, sim. Um erro qualquer, que você não sabe precisar, na coluna "status" da fila de impressão. Tudo bem. Quando tiver refeito o teste me diga qual erro foi. Se bem que, eu próprio já peguei erro ali. Foi uma "engasgada" do Windows. Não sei dizer porque. Só sei que não foi erro do WAPI. Foi com a minha própria impressora LJ1022. Aconteceu umas duas ou três vezes. Depois parou, sem que eu alterasse qualquer coisa no WAPI. Infelizmente não consegui entender o que aconteceu. Assim, não pude reproduzir o erro. Deixei pra lá. Mas se obtiver o erro novamente, é só dizer. Só não posso dizer que eu vá alterar o WAPI por causa disso. Depois que você comentou sobre isso, revisei o código e não pude encontrar nenhum procedimento incorreto. Logo,...Para ser exato foi um HP Deskjet D1360. E o erro que digo é mostrado na fila de impressão. Neste momento lamentavelmente, não posso precisar o erro, mas logo assim tenha o meu PC a normalidade mandarei por email a tela capturada.
Nunca usei essa biblioteca mas, pelo que eu sei, ela dá ao Clipper a capacidade de manipular arquivos com os nomes longos do Windows. Se não me falha a memória, ela acrescenta só essa característica ao Clipper, não traduz nomes longos para curtos. Sei que existe uma função do Windows que informa qual é o nome curto de um arquivo. Só não sei dizer se ela converte para nome curto. Provavelmente não, já que o nome curto depende de uma pesquisa no diretório onde o arquivo se encontra, pois poderá haver algum conflito. Não sei qual é sua real necessidade, mas se for para converter, você mesmo pode fazer uma pequena função Clipper para isso. É só aplicar a regra de renomeação usada pelo Windows e, claro, observar o detalhe da pesquisa no diretório.Estava querendo dizer uma função para tratar os nomes de arquivos quando os seus nomes ultrapassam 12 caracteres (formato DOS 8x3) é dizer nomes-longos e demostrar em forma reduzida. Se bem que existe outra biblioteca que faz o mesmo (LFNSHORT()).
Boa. Não sabia disso. Acho que já deve resolver o problema do nosso colega. Obrigado, Marcelo.Clipper escreveu:O LFN Lib, faz vários tratamentos de nomes longos no Clipper, inclusive o de retornar o nome curto de um arquivo com nome longo. A funçao que faz isso é LF_TOSHORT().

Dei uma olhada na descrição nesse serviço do DOS. Uma descrição de parâmetro ("ASCIIZ long filename or path") me faz pensar que ele não converte levando em conta o conteúdo do diretório alvo. Se ele aceita um simples nome de arquivo, sem path, é porque a conversão é feita sem se certificar de que não haverá conflito com algum outro arquivo.Clipper escreveu:LF_ToShort() calls the LFN specific DOS function 7160h to convert the file name. If long file names are not supported, LF_ToShort()
will fail. The DOS error code can then be retrieved by calling
LF_Ferror().

Eu vi o link. Ele trata de uma propriedade do Windows Installer. Só isso. Inclusive, ele faz referência àquela função que eu citei antes. Mas não esclarece muito.Pablo César escreveu:MALIGNO, Acho que vale a pena dar uma olhada no site da Microsoft a respeito.
Vou pensar nisso amanhã.Espero (anciososo) sua resposta sobre minha postagem anterior.
Acho que era sobre essa questão que você estava ancioso para obter uma resposta, não é?Sabemos que o WAPI possue a função para identificar a sessão abertas e dado pelo número do HANDLE. E se houvesse possibilidade de fazer uma nova função para o WAPI possa abrir (maximizando ou em tela-cheia, se for possível) uma determinada sessão que estivesse minimizada, através do HANDLE. Daí então, não precisaria mudar o modo de exibição porque eu forçaria a retornar ão sistema após rodar aplicação for WINDOWS, digamos. Me diga... que tem forma, sim