Maligno escreveu:Acabei de testar as duas funções numa máquina virtual Win98. A velocidade está normal, apesar de ainda haver o problema da troca de título no Win98.
Deve ser isso, Paulo. A sua na verdade estaria emulando o Win98, sendo que todo seu gerenciamento de memória (o que proporciona maior agilidade nos processos) se dá pelo WINXP. Mas puramente em WIN98 tarda de 3 a 4 segundos, isto não é de morrer, mas não acontece o mesmo no WINXP que fica em menos de um segundo +/- (isto num PENTIUM 4, 2.6GB).
Maligno escreveu:Agora, quanto a não funcionar ao mover seus programas de teste, há uma explicação possível: o utilitário WAPI precisa ser extraído para algum diretório, caso ainda não exista uma cópia dele. Mas o diretório precisa existir num drive válido. Não seria isso?
Não. Nãe seria isso. Vou te explicar detalhadamente o ocorrrido.
Digamos que num diretório eu tenha uma outra versão do WAPI.EXE. Aquela ultima que você apresentou a três meses atrás(por exemplo), da qual você tinha apresentado a função SETAPPTITLE sem criar vetores. E depois copie o APPTITLE.EXE (programa originado pelo teu exemplo APPTITLE.PRG) e rodar ele nessa pasta. Não irá ter o resultado que deveria. Pois mesmo que na criação do executável tenha sido linkado o WAPI.LIB o programa irá interpretar primeiro o WAPI.EXE do diretório corrente. Então a solução é simplesmente deletar esse WAPI.EXE (que seria uma versão anterior) daí sim o programa funciona legal (mostrando o conteúdo dos vetores, digamos).
Maligno escreveu:Essa nunca foi a idéia. A intenção é apenas e tão somente modificar o título da barra da janela. Nada será alterado no arquivo-de-atalho.
Entendo que isso de mudar o arquivo-de-atalho, seria uma solução que pareceria "KAMIKASE", porém eu acho que este seria a segunda medida a ser tomada após mudar o nome do processo. Porque enquanto você muda o processo que está rodando e o usuário fecha e abre novamente, bye bye a mudança do título. Eu acho importante esta função, para que o usuário não modifique a descrição do atalho, pois com ela de forma FIXA (com nome imutável, vamos dizer), eu poderei identificar se aquela determinada sessão de nome TAL está ativa ou não. Mas se o usuário fica troca de nome, ou até deletado o atalho (que isso´acontece) e cria um novo com decrição de nome "parecido", não conseguirei identificar se a janela está ativa ou não. Isto seria uma medida radical, para forçar o nome da janela e depois verificar se a janela está aberta outra vez, isto é para evitar abertura do sistema em multi-sessão.
Maligno escreveu:Agora, se esse outro processo não morre com a morte da janela DOS, aí pode ser um problema, pois se o programa for executado continuamente, poderia ser aberto um novo processo para cada execução, acumulando processos "lixo". Verifique se é isso o que ocorre.
Bem não sei como aconteceu, tentei reproduzir essa questão mas não acontece. O nome da janela acontece quando um aplicativo-DOS está em execução. Mas apena no Prompt-MSDOS, não acontece. O processo fica até alguem sair. Na experiência anterior que me aconteceu da abrir um novo processo (digamos "garbage"), eu quis finalizá-lo mas deixava, na hora que queria matar o processo ativava a janela de desligar o computador.
Maligno escreveu:Isso vai ser complicado de fazer. Pesquisei (um pouco, admito), mas ainda não encontrei uma luz.
Pois é, meu nobre colega, eu não domino a sua tão preciada linguagem C. Mas acredito que se você ler o código fonte do autor "Dave Pearson" que é de dominio público, no qual no WIN95 consegue alternar a exibição em FULL SCREEN, talvez você consiga encontrar o "caminho das pedras". Acho que valerá a pena você dar uma olhada no código fonte do DAVE:
Código: Selecionar todos
* File......: AUTYIELD.C
* Author....: Dave Pearson
*/
#include <extend.api>
#pragma optimize("lge", off)
/* $DOC$
* $FUNCNAME$
* OL_WinFullScreen()
* $CATEGORY$
* Functions
* $ONELINER$
* Force a DOS window into full screen mode.
* $SYNTAX$
* OL_WinFullScreeen() --> NIL
* $ARGUMENTS$
* None.
* $RETURNS$
* Nothing.
* $DESCRIPTION$
* This function can be used to force your application into full
* screen mode when running under MS Windows. It should work
* correctly for Windows 3.x and Windows 95.
* $EXAMPLES$
* OL_WinFullScreen()
* alert( "Boo!" )
* $SEEALSO$
*
* $END$
*/
CLIPPER OL_WinFull/*Screen*/( void )
{
_asm {
Mov AX, 0x168B;
Mov BX, 0;
Int 0x2F;
}
_ret();
}
Maligno escreveu:No meu XP, o comando VER solta: "Microsoft Windows XP [versão 5.1.2600]".
Pois é, mas isso na linha de comando do DOS. Mas experimenta fazer um PRG que chame através do RUN o comando VER, e verás que o resultado não é o mesmo rodando no WINXP.
Maligno escreveu:Toda crítica construtiva é sempre bem-vinda. Fique à vontade.
Obrigado, Paulo. Minhas observações espero que sejam de ajuda no somente pra nós dois como também pro resto. E é um prazer debater questões em público, pois geralmente enriquecem com novas idéias dos outros participantes.
Mas pelo visto, ninguém se pronuncia neste tópico (a salvo os colegas:
Stanis Luksyse,
rrfsistemas e
MARINI). Deve ser que somente nós estamos interessados neste projeto, hehehe...
Um grande Clip-abraço, colega !
