Página 1 de 1

executar sistema em windows e voltar ao sistema dos...help

Enviado: 18 Jul 2007 14:50
por scom
ola amigos...


é o seguinte eu tenho o sistema clipper dos e preciso executar um programa em windows e voltar no meu sistema ou seja quando eu executo esse sistema em windows o meu sistema fica na barra de tarefas ai tenho que cliclar nelo ou dar alt+tab para voltar a ele. será que tem jeito de voltar nele sem automatico.

alguem tem alguma solução?

atenciosamente

robson

Enviado: 18 Jul 2007 14:55
por sygecom
Me parece que pela a WAPI.LIB vc consegue isso....de uma revisada...

Abraços
Leonardo Machado

obrigado Leonardo.

Enviado: 18 Jul 2007 15:15
por scom
obrigado Leonardo. mas não consegui achar como fazer isso no Wapi se alguem tiver algum exemplo.

Robson

Enviado: 18 Jul 2007 15:30
por Stanis Luksys
Só por curiosidade,

Qual é o tal aplicativo para Windows?

Pergunto pq se for mais um caso de TEF, já vi aqui no forum essa discução varias vezes...

Falou!

então mas ja procurei em busca e nda achei.

Enviado: 18 Jul 2007 16:00
por scom

Só por curiosidade,

Qual é o tal aplicativo para Windows?

Pergunto pq se for mais um caso de TEF, já vi aqui no forum essa discução varias vezes...

Falou
só que fui na busca e nao achei nada sobre isso. se vc poder me passar onde tem essa discução. ficaria muito grato.

Re: obrigado Leonardo.

Enviado: 18 Jul 2007 16:20
por sygecom
scom escreveu:obrigado Leonardo. mas não consegui achar como fazer isso no Wapi se alguem tiver algum exemplo.

Robson
Tche, não sei lhe dizer...pq não toh mais usando a WAPI.LIB , mas de uma procurada....na documentação da WAPI, que se tiver a tal função vc vai achar...

Abraços
Leonardo Machado

Enviado: 18 Jul 2007 16:54
por Maligno
A bilbioteca WAPI tem uma função para fazer uma aplicação ir para o topo. Exemplo: Window2Top(GetMyHandle()). Talvez funcione.

Enviado: 18 Jul 2007 17:39
por Maligno
Nem vou corrigir minha mensagem. Só quero fazer um adendo. A função Window2Top() precisa do número do handle da sua aplicação DOS. Se fizer do jeito que exemplifiquei acima não dará certo, porque será obtido o handle da aplicação atual, que será outra. Ou seja, a que está no topo. Assim, pra funcionar, no início do seu programa, ou antes que ele saia de foco, você deverá guardar o handle da janela do seu programa numa variável qualquer. E quando for necessário, execute Window2Top(x), sendo x essa variável, que contém o handle da janela do seu programa.

Testei nesse intante, pois faz tempo que fiz isso e não lembrava mais destes pequenos detalhes. Mas funcionou perfeitamente no Windows XP. Acredito que deve resolver seu problema.

Retornar a sessão da aplicação - WINDOW2TOP

Enviado: 19 Jul 2007 05:37
por Pablo César
Colega Scom,

A solução apresentada pelos colegas, funciona perfeitamente em WIN XP, porém ja para WIN98 só funciona bem quando a sua sessão inicial estiver em modo JANELADO, isto é, NÃO em TELA CHEIA. Digo isto, com firmerza pois eu utilizo o WAPI e é de muita utilidade, não tão somente para impedir de executar em multiplas sessões o sistema como também o utilizo para que caso a sessão esteja minimizada possa ser reaberta.

O que disse o Maligno de guardar em variável o handle da sessão principal (a sessão que chama o seu aplicativo Windows), é vital para que seja re-apresentada a sessão após execução do aplicativo GUI. Não sabemos qual é o aplicativo GUI que você precisa executar, mas de todas formas, eu acostumo utilizar o START /W para que a aplicação GUI seja executada em outra sessão e para que o aplicativo DOS aguarde o término de execução do aplicativo GUI. Darei um exemplo com o comando RUN, mas se você utilizar o BLINKER, ja sabe... utilize o SWPRUNCMD() no seu lugar:

//.. Aqui seu aplicativo DOS, compile seu aplicativo junto com WAPI.LIB *

Código: Selecionar todos

VER_WIN:=GETENV("WIN_VER") /* Eu acostumo manter uma variável de ambiente na qual defino a versão do Windows, mas isto é opcional*/
MyHandle:=GETMYHANDLE()

RUN START /W NOTEPAD /* Aqui chama um exemplo de aplicativo GUI (usei o NOTEPAD como exemplo de aplicativo do Windows)*/

VEZES:=14 /* Variavel que contém quantas vezes irá piscar a sessão minimizada, caso não funcione a re-exibição da sessão em WIN98*/
IF "95" $ VER_WIN .OR. "98" $ VER_WIN
    WINDOW2TOP( MyHandle )
    FLASHTBAR( VEZES,MyHandle )
ELSE
    WINDOW2TOP( MyHandle )
ENDIF
//.. Daqui em mais segue o seu aplicativo DOS
Tiverem algum dúvida sobre isto, ou até como adaptar... (como diz o colega Leonardo)... prende o grito...

* Mensagem re-ditada. (Assim com certeza ficou melhor não é, Maligno ?)

Enviado: 19 Jul 2007 05:46
por Maligno
Não entendo porque você utiliza RunWAPICmd() diretamente, se existem as funções da biblioteca que fazem todo o trabalho por você de forma mais fácil e segura. Ou existe algum problema com essas funções?

Enviado: 19 Jul 2007 06:45
por Pablo César
Maligno escreveu:Não entendo por quê * você utiliza RunWAPICmd() diretamente, se existem as funções da biblioteca que fazem todo o trabalho por você de forma mais fácil e segura.
Tem razão mestre !. Não tinha me tocado sobre esta possibilidade, desculpem (re-editarei a minha mensagem anterior, para não causar confusão).
Maligno escreveu:existe algum problema com essas funções?
Disto ainda não tenho certeza alguma, pois sempre usei daquele jeito, mas acredito que não haveria razão de não funcionar pois trata-se do mesmo código e executável.

* Lembre que você está fazendo uma pergunta. Corrigí o que você disse porque sei que você é amigo da gramática. Mas fazemos um desconto considerando a hora que são... hihihi

Enviado: 19 Jul 2007 10:32
por Maligno
Pablo César escreveu:Lembre que você está fazendo uma pergunta. Corrigí o que você disse porque sei que você é amigo da gramática. Mas fazemos um desconto considerando a hora que são... hihihi
Tem razão. Talvez em virtude do adiantado da hora juntei as palavras sem querer. :)))
Mas a sentença não foi uma pergunta, e sim uma exclamação. Portanto, agora sou eu quem digo: hihihi... :)))

Enviado: 19 Jul 2007 10:37
por Pablo César
Ahhh é ? Acho que teus amigos te chamam de Sapata... se você não ganha... a empata ! hihih :))

Enviado: 03 Abr 2008 13:59
por Dércio_Luiz_Zanatta
Preciso fazer a mesma coisa com Xharbour..
a Wapi pode ser usada com xharbour..? Se pode gostaria de saber como compilar, pois eu não consegui..

Enviado: 03 Abr 2008 15:35
por Pablo César
Compilar sua aplicação com a WAPI.LIB com xHarbour, não creio que seja possível, visto que o mecanimso utilizado utiliza-se do SWPRUNCMD do BLINKER. Mas se você mandar executar o WAPI.EXE de dentro da sua aplicação, acredito que não tem por quê não funcionar. Pois daí você estaria utilizando o WAPI de forma interativa como se fosse desde a linha de comando. Nos diga se surtiu efeito esperado.