Página 1 de 2

Wapi.exe -window2top

Enviado: 12 Nov 2011 02:24
por cjp
Meu caro,
Será que vc me ajudaria a resolver outro problema semelhante, também usando a Wapi?
Queria usar a opção -windows2top da Wapi, para que a janela do programa obtenha o foco do Windows.
Fiz assim no programa:

Código: Selecionar todos

!\tarefas\wapi.exe -getmyhandle:\myhand.txt
Cnrhand=alltrim(memoread("\myhand.txt"))
roda="tarefas\wapi.exe -window2top;"+Cnrhand
run(roda)
Será que estou fazendo algo errado? Por que não está funcionando?
Nota de Moderação:
por Pablo César: Evite postar mensagens exclusiva para um determinado participante do fórum, tipo: Esta é para Caetano... Gilberto me ajude... Roberto Socorro... etc. O Fórum é feito por todos, e não por apenas um participante. Atendendo o item 12 da Regra Geral do Fórum

Wapi.exe -window2top

Enviado: 12 Nov 2011 10:15
por Pablo César
Você cometeu dois erros na composição da variável cRoda, pois o falta a barra invertida diante do nome da pasta tarefas e o outro erro está no ";" (ponto e vírgula) após -window2top.Segundo a sintaxe correta do WAPI era para ser ":" (dois pontos). Corrija e vai funcionar.

Obs. de moderador: Eu devidí o seu tópico, pois esta ultima mensagem sua apesar de tratar-se da utilização do WAPI você entitulou como "programa em xHarbour chamado via Agendador de Tarefas" o que caracteriza desvio de assunto. Também peço gentilmente que sempre os seu código exemplo coloque entre tag [ code ] Veja como utilizar esta tag: https://pctoledo.org/forum/faq.ph ... bcode#f2r1

Wapi.exe -window2top

Enviado: 15 Nov 2011 23:16
por cjp
Peço desculpas por ter colocado no tópico errado; eu quis aproveitar que o assunto era o mesmo que já estava rolando naquele tópico.

Também peço desculpas por não ter colocado a TAG. Não sabia como fazer isto. Li o link, vamos ver se agora vou acertar.

Realmente estava errado, bobeira minha. Corrigi, mas ainda assim não funcionou. Minha função está assim. Será que estou ainda fazendo algo errado?

Código: Selecionar todos

echo "!\tarefas\wapi.exe -getmyhandle:\myhand.txt";

Código: Selecionar todos

echo "Cnrhand=alltrim(memoread("\myhand.txt"))";

Código: Selecionar todos

echo "Croda="\tarefas\wapi.exe -window2top:"+Cnrhand";

Código: Selecionar todos

echo "run(Croda)";
Será que ainda tem alguma coisa errado?

Wapi.exe -window2top

Enviado: 16 Nov 2011 13:05
por Pablo César
Não entendí o que você postou como código... Você deve selecionar com o mouse englobando o código todo, para fazer apenas uma vez o tag [ CODE ]. Não linha a linha, como você fez. De todas formas copie e cole, é assim que devia ficar:

Código: Selecionar todos

run ("\tarefas\wapi.exe -getmyhandle:\myhand.txt"
Cnrhand=alltrim(memoread("\myhand.txt"))
run ("\tarefas\wapi.exe -window2top:"+Cnrhand)

Wapi.exe -window2top

Enviado: 17 Nov 2011 00:40
por cjp
Sim, depois que eu enviei a resposta, vi que tinha feito errado.

Mas realmente o código fica exatamente do jeito que vc colocou.

Wapi.exe -window2top

Enviado: 17 Nov 2011 01:44
por Pablo César
depois que eu enviei a resposta, vi que tinha feito errado
Só para esclarecer, você pode re-editar a sua própria mensagem até o momento que alguém responda. Isto é, se a sua mensagem for a ultima do tópico, você ainda poderá re-editá-la.
Mas realmente o código fica exatamente do jeito que vc colocou
Isso quer dizer que funcionou ?

Wapi.exe -window2top

Enviado: 17 Nov 2011 04:01
por cjp
Desculpe, não sabia que era possível editar a resposta depois.

Não, não funcionou. O código está exatamente como vc colocou, mas não está funcionando.

Será que ainda tem algo errado?

Wapi.exe -window2top

Enviado: 17 Nov 2011 09:17
por Pablo César
Desculpe colega, você tem razão. O código que passei, não funciona mesmo, como eu não testei pensei que funcionaria. O problema foi quando mandei você fazer: run ("\tarefas\wapi.exe -getmyhandle:\myhand.txt" isto não funciona assim. Ao invés disso, deve ser criado uma variável já contendo toda a sequência a ser executada, aqui é o cRoda, veja como ficou:

Código: Selecionar todos

cRoda:="\tarefas\wapi.exe -getmyhandle:\myhand.txt"
run (cRoda)
Cnrhand=alltrim(memoread("\myhand.txt"))
cRoda:="\tarefas\wapi.exe -window2top:"+Cnrhand
run (cRoda)
Isto sim funciona. De todas formas você tem que disponibilizar o WAPI.EXE na pasta tarefas como você indicou no código ou então disponibilize na pasta corrente onde estará o seu programa.

Em anexo tem dois exemplos, uma utilizando o WAPI.EXE com apenas o RUN e chamando um aplicativo Windows e o outro exemplo é utilizando a WAPI.LIB, isto é compilando a lib junto com seu código. Mas atenção, você vai precisar da WAPI.LIB que está no pacote zipado e terá que compilar com a CT.LIB. No entanto o autor (o colega Maligno instrui) que o WAPI.EXE tem que estar no diretório corrente também, senão não funciona. Pois a WAPI.LIB precisa do WAPI.EXE pois é uma engenioca do autor e não uma LIB propriamente pura.

Wapi.exe -window2top

Enviado: 18 Nov 2011 23:35
por cjp
Meu caro,

Desculpe, mas infelizmente ainda não funcionou.

Não sei se estou pretendendo algo que a Wapi não faz, mas a minha ideia desta função é que ela traria a janela do meu programa pra frente na tela, só que não é isso que está acontecendo, nem mesmo com a tua função.

Nesta tua função, vc manda abrir o notepad e depois chamar a tua função pra frente de novo, mas ela não está chamando.

Será que eu me enganei? Aqui não está dando certo. Será que eu fiz algo errado?

Wapi.exe -window2top

Enviado: 18 Nov 2011 23:48
por cjp
Aliás, uma ressalva: testando melhor a tua função, notei que, se eu minimizo o teu aplicativo, ele o restaura, funcionando exatamente como eu queria.

Mas se não minimizar, ele não traz de volta a tela do programa, apenas pisca.

E a questão é que o meu programa não estará minimizado. Eu precisaria que ele viesse à frente mesmo não estando minimizado.

Outra questão: tentei compilar a tua função TESTE14 dentro do meu programa, usando o xbuild do xHarbour, mas não consegui. Ele não reconhece as funções getmyhandle() e windows2top(). Será que não dá pra compilar ela no xHarbour? Ou falta algum arquivo? Ou eu fiz algo errado?

Wapi.exe -window2top

Enviado: 19 Nov 2011 01:20
por Pablo César
Aliás, uma ressalva: testando melhor a tua função, notei que, se eu minimizo o teu aplicativo, ele o restaura, funcionando exatamente como eu queria.
Mas claro, no meu exemplo peço pra você minimizar.
Outra questão: tentei compilar a tua função TESTE14 dentro do meu programa, usando o xbuild do xHarbour, mas não consegui. Ele não reconhece as funções getmyhandle() e windows2top(). Será que não dá pra compilar ela no xHarbour? Ou falta algum arquivo? Ou eu fiz algo errado?
Vamos esclarecer um ponto muito importante: o aplicativo WAPI.LIB são exclusivas para CLIPPER não para Harbour nem xHarbour.
Mas se não minimizar, ele não traz de volta a tela do programa, apenas pisca.
Pois é... por isso mandava minimizar. Mas tenho um truque (por não dizer mais um quebra galho... rsrs). Compilei um aplicativo em Harbour que simula o pressionamento das teclas Win_Key + D o que faz que as seções todas sejam minimizadas. Então a sugestão é chamar esse aplicativo chamado MINIMIZE.EXE uma linha antes de utilizar o WINDOW2TOP. Daí vai funcionar.
Será que não dá pra compilar ela no xHarbour?
Eu não trabalho com xHarbour. Mas você deveria tentar uma solução com [x]Harbour mesmo,assim não precisaria ficar utilizando aplicativos externos. Só que você não explicou direito qual é a situação. Isto é, como a sua janela fica escondida ? Com qual janela fica escondida ? Você de dentro da sua aplicação chamou outro programa ? Tem como alternar através de uma arquivo batch. Pode explicar melhor a sua situação ? Explicando quais são os programas que você chama e cómo ?

Wapi.exe -window2top

Enviado: 19 Nov 2011 11:25
por cjp
Desculpe se não fui claro. Vou tentar ser mais claro: minha função não inicia nenhuma outra janela, nem chama outro aplicativo. Mas imagine que o usuário está usando meu programa, mas ao mesmo tempo usando o computador para outras coisas. Ele pode, por exemplo, estar editando um arquivo do Word. A janela do meu programa estará escondida atrás da janela do Word, mas ela não foi minimizada. O que eu quero é que, em determimado momento, a janela do meu programa se sobreponha à janela do programa que o usuário estiver usando no momento (no exemplo dado, a janela do Word), passando a ser a principal. Me entende?

Testei sua função Minimize e funcionou perfeitamente. O problema é que eu realmente precisaria fazê-la funcionar dentro do meu programa que está compilado em Xharbour. Vc (ou alguém) saberia me informar se tem algum jeito de fazer isso diretamente no xharbour, sem usar a Wapi?

Wapi.exe -window2top

Enviado: 19 Nov 2011 19:35
por Pablo César
imagine que o usuário está usando meu programa, mas ao mesmo tempo usando o computador para outras coisas
Bom o Windows é um sistema operacional multitarefas, portanto tentar evitar o acesso de outro programas enquanto o seu sistema estiver sendo executado, vai ser uma coisa extremamente dificil e muito mais ainda em modo console. Mas como nem tudo está perdido, tenho algo pra te mostrar, só que em modo GUI e foi feito em Harbour/MiniGui, não que não possa ser adaptado para hwGUI ou outra ferramenta GUI.

Wapi.exe -window2top

Enviado: 20 Nov 2011 03:45
por cjp
Interessante tua função, meu caro, mas não é esta a hipótese que eu preciso.

Não tenho como evitar que o usuário use outros programas enquanto o meu está sendo rodado, e nem é o caso de evitar, pois será necessário usar.

Será que não tem jeito de fazer a janela do programa ser trazida pra frente? Outros programas do Windows fazem isso.

Wapi.exe -window2top

Enviado: 20 Nov 2011 11:16
por Pablo César
... de fazer a janela do programa ser trazida pra frente? Outros programas do Windows fazem isso.
Quais ? (Dê exemplos, nomes... que eu irei testar.)