Rodar Programa Em BackGround
Moderador: Moderadores
Rodar Programa Em BackGround
Ola pessoall, preciso de um programa exemplo que rode em background e mostre na lela uma mensagem sem usar o msgbox, so aparece a mensagem por um instante e some logo em seguida, em varios pontos da tela randomicamente, alguem tem alguma sujestão para esse codigo?
grato,
Mauro.
grato,
Mauro.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Olá,
Com a biblioteca MiniGUI pode ser simples de se fazer o que você pretende.
Basta vc chamar sua aplicação escondida, e depois carregar uma mesma janela na tela em posições randômicas.
Agora se o fundo do texto tiver que ser 'transparente', vai dar um trabalhinho a mais... Neste caso, como é um programinha simples, sugiro que faça em VB mesmo.
Falou...
Com a biblioteca MiniGUI pode ser simples de se fazer o que você pretende.
Basta vc chamar sua aplicação escondida, e depois carregar uma mesma janela na tela em posições randômicas.
Agora se o fundo do texto tiver que ser 'transparente', vai dar um trabalhinho a mais... Neste caso, como é um programinha simples, sugiro que faça em VB mesmo.
Falou...
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Tente usar a minha função e adapta-la ao seu mundo. Ela foi feita pra ser usada com Fivewin+Harbour.
Use assim Ballon( "Coloque aqui a sua mensagem", 5 ) onde 5 é o tempo que ficará vizivel. Caso a função LayeredWindow() de problemas isole-a pois a inteção é criar uma janela que sobe da barra de tarefas e apresenta a mensagem para o usuario.
Tente usar a minha função e adapta-la ao seu mundo. Ela foi feita pra ser usada com Fivewin+Harbour.
Código: Selecionar todos
#define GWL_EXSTYLE (-20)
#define WS_EX_LAYERED 0x00080000
#define LWA_ALPHA 0x00000002
#define LWA_COLORKEY 0x00000001
Function Ballon(cBallonMsg,nBallonTime)
local oDlgBallon
default cBallonMsg := "Nova mensagem chegando..."
DEFINE WINDOW oDlgBallon FROM GetSysMetrics(1),GetSysMetrics(0)-300 TO 200,200 PIXEL COLOR nRGB(255,255,255),nRGB(255,255,230) NO CAPTION BORDER NONE
@ 5, 5 GET cBallonMsg MEMO OF oDlgBallon SIZE 195,195 PIXEL COLOR nRGB(000,000,000),nRGB(255,255,230) NOBORDER NO MODIFY
ACTIVATE WINDOW oDlgBallon ON INIT ( LayeredWindow( oDlgBallon, 070 ), MoveDLG(oDlgBallon,nBallonTime) )
return nil
Function MoveDLG(oDlgBallon,oDlgTime)
oDlgAltura := GetSysMetrics(1)
for i = 1 to 20
oDlgAltura := oDlgAltura - i
oDlgBallon:Move( oDlgAltura, 100, 200, 200, .t. )
SysWait(.02)
next
SysWait(oDlgTime)
for i = 1 to 20
oDlgAltura := oDlgAltura + i
oDlgBallon:Move( oDlgAltura, 100, 200, 200, .t. )
SysWait(.02)
next
oDlgBallon:end()
return
Function LayeredWindow( oWnd, nLay )
//SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, GetWindowLong( oWnd:hWnd, GWL_EXSTYLE ) | WS_EX_LAYERED )
SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, WS_BORDER )
SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, WS_EX_LAYERED )
SetLayeredWindowAttributes( oWnd:hWnd, 0, ( 255 * nLay ) / 100, LWA_ALPHA )
Return NIL
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Pode user tambem a HB_BACKGROUNDADD
exemplo:
exemplo:
Código: Selecionar todos
nTask := HB_BACKGROUNDADD( {|| DisplayTime()}, <tempo> ) // tempo em milisegundos
SET BACKGROUND TASKS ON
function DisplayTime
if <alguma condição>
HB_BACKGROUNDACTIVE( nTask, .F. ) // desativar o timer
<montar a janela>
<esperar>
HB_BACKGROUNDACTIVE( nTask, .T. ) // reativar o timer
endif
return .t.- momente
- Usuário Nível 3

- Mensagens: 496
- Registrado em: 03 Mar 2005 11:53
- Localização: São Carlos-SP
- Contato:
Pessoal,
Uma dúvida, aonde eu consigo encontrar os comandos e funções do xharbour , Qual pasta que acompanha o xharbour possui estas informações?
Valeu!
:)Pos
Uma dúvida, aonde eu consigo encontrar os comandos e funções do xharbour , Qual pasta que acompanha o xharbour possui estas informações?
Valeu!
:)Pos
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Eu crio serviços para Linux com as rotinas HB_STARTSERVICE e HB_PUSHSIGNALHANDLER, acredito que estas rotinas funcionem com o Windows, com a segunda rotina citada, eu coloco uma rotina minha para poder responder as mensagens do SO e parar o serviço de forma devida. No windows, eu tambem indico o uso da Minigui, eu uso ela para o PRWIN e funciona muito bem para isto e ainda tem exemplos.
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Na verdade a unica coisa que vc precisa é que seu programa identifique as mensagens do SO para poder finalizar quando o windows for encerrado, acredito que seja o mesmo processo do linux, no linux uso o exemplo abaixo e funciona muito bem.
Código: Selecionar todos
#include "hbserv.ch"
global continua
continua=.t.
hb_startservice(.t.)
hb_pushsignalhandler(HB_SIGNAL_ALL,"ler_evento")
do while continua
// SEU CODIGO
enddo
// SERVICO ENCERRADO
procedure ler_evento(sinal,para)
if sinal=HB_SIGNAL_QUIT .or. sinal=HB_SIGNAL_INTERRUPT
continua=.f.
end if
return HB_SERVICE_HANDLED
-
benyfilho
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 19 Jun 2007 12:02
- Localização: São Paulo/SP - Brasil
Quando eu coloco para iniciar o serviço no Windows dá um erro:
O Serviço não respondeu a requisição de inicio ou controle em tempo hábil
O Serviço não respondeu a requisição de inicio ou controle em tempo hábil
Código: Selecionar todos
#include "FiveWin.ch"
#include "hbserv.ch"
#define GWL_EXSTYLE (-20)
#define WS_EX_LAYERED 0x00080000
#define LWA_ALPHA 0x00000002
#define LWA_COLORKEY 0x00000001
GLOBAL continua:=.T.
STATIC oWnd, oTimer
FUNCTION Main()
hb_startservice(.t.)
hb_pushsignalhandler(HB_SIGNAL_ALL,"ler_evento")
LOCALINTERVALO=60
Do While continua
Ballon( "Teste por 10 segundos com ballon tip, modificado pelo bene", 10 )
ENDDO
RETURN
procedure ler_evento(sinal,para)
if sinal=HB_SIGNAL_QUIT .or. sinal=HB_SIGNAL_INTERRUPT
continua=.f.
end if
return HB_SERVICE_HANDLED
Function Ballon(cBallonMsg,nBallonTime)
local oDlgBallon, oFontsayB
DEFINE FONT oFontsayB NAME "Verdana" SIZE 0,-11
default cBallonMsg := "Nova mensagem chegando..."
DEFINE WINDOW oDlgBallon FROM GetSysMetrics(1),GetSysMetrics(0) TO 200,200 PIXEL COLOR nRGB(000,000,000),nRGB(000,000,000) STYLE WS_POPUP
@ 1, 1 SAY cBallonMsg OF oDlgBallon SIZE 198,198 PIXEL FONT oFontSayB COLOR CLR_BLACK,CLR_GRAY
ACTIVATE WINDOW oDlgBallon ON INIT ( LayeredWindow( oDlgBallon, 090 ), MoveDLG(oDlgBallon,nBallonTime))
return nil
Function MoveDLG(oDlgBallon,oDlgTime)
oDlgAltura := GetSysMetrics(1)
for i = 1 to 15
oDlgAltura := oDlgAltura - i
oDlgBallon:Move( oDlgAltura, GetSysMetrics(1)+55, 200, 100, .t. )
SysWait(.02)
next
SysWait(oDlgTime)
for i = 1 to 15
oDlgAltura := oDlgAltura + i
oDlgBallon:Move( oDlgAltura, GetSysMetrics(1)+55, 200, 100, .t. )
SysWait(.02)
next
oDlgBallon:end()
return
Function LayeredWindow( oWnd, nLay )
//SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, GetWindowLong( oWnd:hWnd, GWL_EXSTYLE ) | WS_EX_LAYERED )
SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, WS_BORDER )
SetWindowLong( oWnd:hWnd, GWL_EXSTYLE, WS_EX_LAYERED )
SetLayeredWindowAttributes( oWnd:hWnd, 0, ( 255 * nLay ) / 100, LWA_ALPHA )
Return NIL
Editado pela última vez por Pablo César em 05 Mai 2011 22:30, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Bene
E-mail :benyhapper@hotmail.com
FWH705 / Xhar9971 / @Say / xDev
MSN: benyhapper@hotmail.com
São Paulo/SP
E-mail :benyhapper@hotmail.com
FWH705 / Xhar9971 / @Say / xDev
MSN: benyhapper@hotmail.com
São Paulo/SP
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Olá,
Com a MiniGUI também dá pra vc criar um message box "temporizado", fica faltando apenas a questão do posicionamento na tela. O melhor messmo é fazer a caixa de diálogo na mão.
Tem um exemplo na pasta samples do mgsbox temporizado, da uma olhadinha lá.
Falou!
Com a MiniGUI também dá pra vc criar um message box "temporizado", fica faltando apenas a questão do posicionamento na tela. O melhor messmo é fazer a caixa de diálogo na mão.
Tem um exemplo na pasta samples do mgsbox temporizado, da uma olhadinha lá.
Falou!
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.

