Função SETTASKBUTTON wapi semelhante no xharbour
Moderador: Moderadores
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Deu o seguinte erro:
funhar.prg(120): error: Syntax error; found 'end of input' expecting ';'.
funhar.prg(120): error: Syntax error; found 'end of input' expecting ';'.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
E o que contém na linha 120 do funhar.prg ?Deu o seguinte erro:
funhar.prg(120):
Pela mensagem é um erro no seu código em C. Por acaso não faltaria um ";" ?
Adaptei o meu código indicado para a função DeleteMenu que você utiliza:
Código: Selecionar todos
HB_FUNC ( VOLTA_X ) // HABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),TRUE);
DeleteMenu(MenuH,SC_CLOSE,MF_GRAYED);
}Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Agora eu tentei
Mas deu o erro:
funhar.prg(125): error: Insufficient number of arguments to a function.
E o conteudo da 125 é
InsertMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
:%
Código: Selecionar todos
HB_FUNC ( VOLTA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
InsertMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
}funhar.prg(125): error: Insufficient number of arguments to a function.
E o conteudo da 125 é
InsertMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
:%
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
Para mim estou conseguindo só que EnableMenuItem mantive ... anexei o executável par você ver, Mario:
Compilei com HMG.
Código: Selecionar todos
#include <hmg.ch>
Function Main
DEFINE WINDOW Win_1 AT 138 , 235 WIDTH 550 HEIGHT 350 VIRTUAL WIDTH Nil VIRTUAL HEIGHT Nil TITLE "" ICON NIL MAIN CURSOR NIL ON INIT Nil ON RELEASE Nil ON INTERACTIVECLOSE Nil ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil BACKCOLOR Nil NOTIFYICON NIL NOTIFYTOOLTIP NIL ON NOTIFYCLICK Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil ON SCROLLUP Nil ON SCROLLDOWN Nil ON SCROLLLEFT Nil ON SCROLLRIGHT Nil ON HSCROLLBOX Nil ON VSCROLLBOX Nil
DEFINE BUTTON Button_1
ROW 90
COL 170
WIDTH 100
HEIGHT 28
ACTION Tira_X()
CAPTION "Desabilita"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
HELPID Nil
FLAT .F.
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
MULTILINE .F.
PICTURE Nil
PICTALIGNMENT TOP
END BUTTON
DEFINE BUTTON Button_2
ROW 170
COL 170
WIDTH 100
HEIGHT 28
ACTION Volta_X()
CAPTION "Habilita"
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
HELPID Nil
FLAT .F.
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
MULTILINE .F.
PICTURE Nil
PICTALIGNMENT TOP
END BUTTON
END WINDOW
Win_1.Center
Win_1.Activate
Return
#pragma BEGINDUMP
#include "windows.h"
#include "shlobj.h"
#include "hbapi.h"
#include "math.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "hbapigt.h"
HB_FUNC ( TIRA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
}
HB_FUNC ( VOLTA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
EnableMenuItem(MenuH,SC_CLOSE,MF_BYCOMMAND);
}
#pragma ENDDUMP- Anexos
-
demo.rar- (653.02 KiB) Baixado 345 vezes
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
agora deu certo compilar...
porem o X não voltou....
porem o X não voltou....
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
Você não testou com o executável que disponibilizei. Alguma coisa no seu Harbour...
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Finalmente tive tempo de testar
E vi que:
A sua função tira_x
é diferente da minha tira_x
Observe que na minha foi usado o DeleteMenu, ou seja exclui-se até mesmo a opção Fechar lá do menu da barra de tarefas (sabe, quando vc clica no programa minimizado lá embaixo?) então / até aquilo sumiu
E na sua apenas desabilitou o botão fechar.
Mas vou tentar da sua forma e ver no que dá.
Mário
E vi que:
A sua função tira_x
Código: Selecionar todos
HB_FUNC ( TIRA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
}Código: Selecionar todos
HB_FUNC ( TIRA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
DeleteMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
}E na sua apenas desabilitou o botão fechar.
Mas vou tentar da sua forma e ver no que dá.
Mário
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Pablo!
Sucesso!
Utilizei a sua tira_x e deu certinho.
Valeu mesmo......
Isso resolve alguns problemas pois tinha operadores q fechavam a aplicação antes de ela concluir alguns procedimentos.
Agora ficou jóia...
:)Pos
Eu estava olhando a sua telinha. Qual a lib q vc utiliza para produzir os botões e janelas ?
Sucesso!
Utilizei a sua tira_x e deu certinho.
Valeu mesmo......
Isso resolve alguns problemas pois tinha operadores q fechavam a aplicação antes de ela concluir alguns procedimentos.
Agora ficou jóia...
:)Pos
Eu estava olhando a sua telinha. Qual a lib q vc utiliza para produzir os botões e janelas ?
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
Pensei que você já tinha notado. Pois eu mencionei isso nesta minha mensagem bem no começo onde diz Para mim estou conseguindo só que EnableMenuItemA sua função tira_x ...//... é diferente da minha tira_x
Telinha ? Quer dizer a tela do demo.exe que postei ?Eu estava olhando a sua telinha.
Puro e exclusivo HMG (mas também utilizo MIniGUI), sem esforço algum. Aliás essa função de tira e poe o x tem esse recurso como função interna nas propriedades das janelas no HMG.Qual a lib q vc utiliza para produzir os botões e janelas ?
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
Nessa sua tentativa de utilizar o InsertMenu, aqui nesta sua mensagem deu erro porque está faltando parâmetros. Os poucos exemplos que eu já vi, parecem um tanto laborioso. Veja a sintaxe:
Por isso decidí refazer o meu exemplo com EnableMenuItem em lugar de DeleteMenu.InsertMenu( <hMenu>, <nIdItem>, <nFlags>, <nNewItem>, <cPrompt> ) –> lSuccess
Parameters
<hMenu> Handle of the menu where we will insert the menuitem
<nIdItem> Identifier of the menuitem. It will depend on that that let us indicate in nFlags so that it is an identifier that is to say the position of the Menuitem inside the menu.
<nFlags> Constant MF_BYCOMMAND or MF_BYPOSITION that it will indicate as nIdItem should be interpreted. It combines with those following constants to indicate that class of menuitem is inserting in our menu.
MF_BITMAP 4 It contains a bitmap MF_CHECKED 8 Marked Menuitem MF_DISABLED 2 Disabled Menuitem MF_ENABLED 0 Enabled Menuitem MF_POPUP 16 It contains submenu MF_GRAYED 1 Gray Menuitem MF_MENUBARBREAK 32 Break in the menu bar MF_MENUBREAK 64 Break in a vertical menu MF_OWNERDRAW 256 Owner draw MF_SEPARATOR 2048 Separator MF_UNCHECKED 0 Normal state of the menuitem MF_BYCOMMAND 0 nIdItem is identifier MF_BYPOSITION 1024 nIdItem is position based 0
<nNewItem>n New identifier for the menuitem. If nFlags contains MF_POPUP in nNewItem the handle of the submen� will be stored.
<cPrompt>n String to indicate in the menuitem. If nFlags contains MF_BITMAP this parameter will be the Handle of the bitmap. If MF_OWNERDRAW contains the parameter it will be included in those it structures DRAWITEMSTRUCT and MEASUREITEMSTRUCT that Windows sends when it has to draw elements of owner draw. (to see method DrawItem and MeasureItem in the class TWindow).
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Agora estou precisando de uma função harbour que substitua esta:
SetTaskBut(<nCond>,[<nHandle>]) -> nil
Torna invisível (nCond = 0) ou visível (nCond = 1) o botão da aplicação (focalizada) na
TaskBar. Aliás, a própria janela tornar-se-á invisível (ou visível). De forma opcional, é
possível direcionar a função para uma aplicação específica, ao informar o <nHandle> desta.
Esta SetTaskBut é da wapi.lib do Maligno
Ela simplesmente "apaga" o botão do programa que está rodando e ele fica invisível.
Tem algo em harbour ?
X:)
SetTaskBut(<nCond>,[<nHandle>]) -> nil
Torna invisível (nCond = 0) ou visível (nCond = 1) o botão da aplicação (focalizada) na
TaskBar. Aliás, a própria janela tornar-se-á invisível (ou visível). De forma opcional, é
possível direcionar a função para uma aplicação específica, ao informar o <nHandle> desta.
Esta SetTaskBut é da wapi.lib do Maligno
Ela simplesmente "apaga" o botão do programa que está rodando e ele fica invisível.
Tem algo em harbour ?
X:)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
A função do Wapi do Maligno, oculta e mostra a janela N e não é o botão como você diz. Sei que na documentação, até mesmo o arquivo fonte do Wapi fala sobre o botão, mas é na janela que atua. Você confirma, Mário ?Ela simplesmente "apaga" o botão do programa que está rodando e ele fica invisível.
Particularmente, não vejo serventia nisso. Poderia explicar para o quê você iria utilizar isso, esconder janelas. Pois isso pode esquecer que a janela está aberta, porem escondida: na verdade. Isso não poderia causar alguns transtornos se deixar na mão do usuário ?
Outra coisa, você diz que quer substituir essa função do Wapi, mas precisaria o número do handle da janela. E como você pensa obter essa informação ?. Ou será que você poderia informar o título da janela ou até mesmo o nome do programa que está sendo executado. Você não acha ? Ou atuaria apenas no módulo que está sendo executado ?
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Acabei de descobrir através da WAPI eu posso até fazer assim:
Mas na verdade nem precisaria do handle
É só fazer:
E pronto:
A janela atual simplesmente some.
Fica só no gerenciador de tarefas.
É que tenho uma aplicação em WVW ela faz umas verificações em ftp e isso faz "parar" por alguns segundos. Então estou desenvolvendo uma q vai fica na "surdina" efetuando verificações. enviando e-mail e outros para "livrar" a principal para o uso.
Obrigado.
Mário (I)
Código: Selecionar todos
comanda := "WAPI -GETMYHANDLE:MYHAND.TXT"
run (comanda)
comanda := "WAPI -SETTASKBUTTON:HIDE" + memoread('myhand.txt')
run (comanda)
É só fazer:
Código: Selecionar todos
comanda := "WAPI -SETTASKBUTTON:HIDE"
run (comanda)
A janela atual simplesmente some.
Fica só no gerenciador de tarefas.
É que tenho uma aplicação em WVW ela faz umas verificações em ftp e isso faz "parar" por alguns segundos. Então estou desenvolvendo uma q vai fica na "surdina" efetuando verificações. enviando e-mail e outros para "livrar" a principal para o uso.
Obrigado.
Mário (I)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função SETTASKBUTTON wapi semelhante no xharbour
Precisa sim. Senão como você vai retornar visível outra vez ? Ao menos na linha de comando, não dentro do programa.Mas na verdade nem precisaria do handle
Fiz este exemplo em anexo, só que está em modo gráfico. Não consegui fazer em modo console. Veja se isso te ajuda.
- Anexos
-
demo1.rar- (579.16 KiB) Baixado 240 vezes
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Função SETTASKBUTTON wapi semelhante no xharbour
Na verdade não precisarei ficar visivel outra vez . uma vez escondida a janela nao precisará mais voltar... Finalizarei o processo criando um arquivo sai.txt / e ele (o programa escondido) uma vez percebida a presença deste arquivo finalizar-se-á.Precisa sim. Senão como você vai retornar visível outra vez ? Ao menos na linha de comando, não dentro do programa.
Mas foi muito bom o seu demo1.prg pois nele estava a função que eu precisava para não depender do WAPI.EXE para escondê-la.
Obrigado
:d