Página 1 de 1

killappwin x programas DOS

Enviado: 27 Dez 2007 21:06
por Mário Isa
Bom, como o próprio nome já diz, de uma das funções da WAPI.LIB.

Esta função só fecha janelas de programas windows?
Não fecha janelas DOS ?

Porque estou tentando fechar DOS e não fecha.
Tem alguma outra que destrói (fecha) janelas DOS ?

Mário

Enviado: 28 Dez 2007 07:36
por Pablo César
Oi Mário, veja que o nome da função que você está mencionando não é da biblioteca WAPI.LIB, se por acaso houve um erro de digitação não seria KILLAPPWIN() e sim KILLWINAPP(). Vejamos como é a sintaxe e descrição dessa função:

KillWinApp(<xID>) -> nil
Fecha incondicional e imediatamente (com possível perda de dados) a aplicação identificada por <xID>. Esta identificação poderá tanto ser feita pelo "handle" (numeric) da aplicação, quanto pelo nome de seu arquivo executável (string). Neste últmo caso, o nome poderá ser informado no todo (com/sem extensão) ou mesmo em parte. Na eventualidade de existir mais de uma instância da mesma aplicação, todas serão fechadas. Como já dito, qualquer dado não gravado será perdido.
Não sei como você está procendo na execução desta função, mas acredito que não haveria problema algum (ora porque eu ja testei e sei que funciona, seja modo janelado ou em modo TELA-INTEIRA), se é isso ao que você se refere. Com certeza você estaria precisando fecha uma SEGUNDA sessão que está aberta e não a sessão CORRENTE (entende-se como corrente: aquela em que você está ativa). Teria outra forma de usar essa mesma função na linha de comando, mas antes de executar qualquer dessas duas formas, você DEVE pegar ANTES o HANDLE da sessão que você precisa fechar. Como dizia, você pode usar na linha de comando, veja o que diz a descrição:

-KILLAPPLICATION:<handle>[;<fileName>]
Provocar o encerramento da aplicação vinculada ao <handle> informado ou, se informado o <fileName>, serão fechadas todas as aplicações originadas deste executável.
OBS1: Se informado, <fileName> poderá ser um nome completo ou parcial, sempre sem path.
OBS2: Os argumentos são exclusivos. Ou seja, se existir o argumento <fileName> ele será o único a ser utilizado, mesmo que também seja informado o <handle>. E neste caso o valor de <handle>, se existir, será desconsiderado.
OBS3: A(s) aplicação(ões) será(ão) fechada(s) imediatamente, sem qualquer tipo de aviso ou espera. Ou seja, quaisquer dados, ainda pendentes de gravação, serão perdidos.
Aconselho você fazer um teste na linha de comando apenas para experimentar, mas claro, antes você precisa saber o HANDLE da sessão em que vai matar. Você pode usar GETMYHANDLE ou GETAPPSINFO para gravar o HANDLE em arquivo e mais tarde abrir esse arquivo texto que contém o HANDLE e mandar fechar.

Essas funções você pode usar tanto em modo interativa através da WAPI.LIB (direto no Clipper) como na linha de comando com WAPI.EXE. Lembre sempre que o arquivo WAPI.EXE DEVE estar disponível (isto é na diretório) onde está seu sistema.

Tiver mais alguma dúvida, Mário: poste como é que você está utilizando o/a WAPI e o erro que está ocorrendo. Hoje estou indo para a serra da Graciosa, comer um churrasquinho com a familia (estamos em clima de fim de ano), mas quando eu puder respondo, qualquer coisa está o Leonardo que vejo que ele está na ativa.

Re: killappwin x programas DOS

Enviado: 03 Jan 2008 00:26
por Maligno
Mário Isa escreveu:Bom, como o próprio nome já diz, de uma das funções da WAPI.LIB.

Esta função só fecha janelas de programas windows?
Não fecha janelas DOS ?

Porque estou tentando fechar DOS e não fecha.
Tem alguma outra que destrói (fecha) janelas DOS ?
Essa função KillWinApp(xID) (acho que você errou ao digitar o nome, não?) fecha qualquer programa que esteja em execução. Você precisa apenas informar o handle desta aplicação ou o nome do seu executável. Se informar o nome e o programa tiver várias instâncias executadas, todas elas serão fechadas. E funciona direitinho. :)