Comando Winexec

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Comando Winexec

Mensagem por Mário Isa »

Com o comando Winexec() eu executo algo.pif assim:
Winexec('algo.pif')
Se este algo.pif já estiver em execução e, tipo assim, minimizado e o usuário clicar de novo no botão q o invoca teria como apenas mudar o foco para lá?
O comando que eu dei foi:
DEFINE BUTTON of oBar FILENAME "algo.bmp" action winexec('algo.pif') tooltip 'Algo for DOS' Message "Executa o ALGO for DOS"

Como eu faria para, já estando em execução, e reclicar no botão ele (o programa), ao perceber isso não re-executar e sim redirecionar o foco e a janela, se minizada ou não, vir para primeiro plano?

Abraços
Mário
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

De uma olhadinha neste exemplo http://www.dbwide.com.ar/local-cgi/coun ... apture.zip

Ele captura uma janela pelo seu nome e conforme o tratamento que vc der vc pode verificar se a mesma esta aberta e nao permitir abri-la novamente

@braços :?)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Na verdade o melhor método é este:

Function Calculadora()

LOCAL hWnd
If ( hWnd:= SeekCalculadora() ) == 0
WinExec( 'Calc.Exe', SW_NORMAL )
Else
BringWindowToTop( hWnd )
ShowWindow( hWnd, SW_RESTORE )
EndIf
return Nil


// ------------------------------------------------------------------ //
STATIC Function SeekCalculadora()
LOCAL aCaptions:= {'Calc','Calculator','Calculadora'}
LOCAL nPos, hWnd
For nPos = 1 to Len(aCaptions)
If ( hWnd:= FindWindow( 0, aCaptions[nPos] ) ) > 0
return hWnd
EndIf
Next
return hWnd

Com ele vc verifica se uma janela ja esta aberta e não a deixar abrir novamente.

@braços :?)
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Mensagem por Mário Isa »

:)) Graaaannnnde Rochinha :D
Obrigado.
Certinho. Valeu!!!
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Mensagem por Mário Isa »

:-o
Ei Rochinha, porém se tento executar algo.lnk (atalho para programas Windows) não dá certo pelo Winexec('algo.lnk') só se eu fizer winexec ('start algo.lnk') porém sei q no XP o Start não funciona mto bem.
Tem alguma coisa?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

o problema do <b>start</b> não funcionar é o <b>path</b> do arquivo que vc esta tentando executar que pode não ser conhecido pelo Windows, mas ele funciona perfeitamente em todas as versões do windows.

Pode usar normalmente.

@braços :?)
Responder