flpcrz Posted January 17, 2007 Report Share Posted January 17, 2007 pessoal, descobri que o programa pode abrir mais de uma cópia no mesmo micro como travar para que abra somente uma vez... Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Quote Link to comment Share on other sites More sharing options...
flpcrz Posted January 17, 2007 Author Report Share Posted January 17, 2007 pessoal, descobri que o programa pode abrir mais de uma cópia no mesmo micro como travar para que abra somente uma vez... Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Quote Link to comment Share on other sites More sharing options...
betovsp Posted January 17, 2007 Report Share Posted January 17, 2007 citação:pessoal, descobri que o programa pode abrir mais de uma cópia no mesmo micro como travar para que abra somente uma vez... Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev id=quote>id=quote>Felipe: IF IsExeRunning( "Pbtmk32.Exe" ) MsgStop( "Este programa já está aberto neste computador!", "ImpossÃvel Continuar!" ) RETURN(.F.) ENDIF Abraços. Beto Msn: betovsp@hotmail.com Skype: betovsp Alternativo: betovsp@terra.com.br CL53B + FW2.0d + @ SAY/GET + BLINKER 7 Ribeirão Preto/SP Quote Link to comment Share on other sites More sharing options...
flpcrz Posted January 17, 2007 Author Report Share Posted January 17, 2007 flw beto, foi o que eu fiz IF(IsExeRunning("meuprogram.exe") ) MsgStop("O programa já se encontra aberto","Atenção!!!") Return(.f.) EndIf agora não estou conseguindo fazer com que mostre a tela novamenete e nem que o botão na barra de tarefas fique piscando, tem como? Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Editado por - flpcrz on 17/01/2007 12:16:10 Quote Link to comment Share on other sites More sharing options...
ricardom1361303566 Posted January 17, 2007 Report Share Posted January 17, 2007 Faço assim: ...... ....... cTitulo:= "Programa Tal" ( titulo exato usado no progama) oWnd:=FindWindow( 0, cTitulo ) if oWnd!=0 MsgAlert("O programa já se encontra aberto.","Atenção!!!") BringWindowToTop( oWnd ) Return(.f.) endif .......... ........ DEFINE WINDOW oWnd ; TITLE cTitulo ICON oIcon ; MENU BuildMenu() ........ ........ Ricardo FW2.4 - WS Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted January 17, 2007 Report Share Posted January 17, 2007 Colega, Apenas coloque essa linha no seu sistema: SET MULTIPLE OFF Ricardo. Ricardo Marques Quote Link to comment Share on other sites More sharing options...
flpcrz Posted January 17, 2007 Author Report Share Posted January 17, 2007 opa, vlw pessoal, mas não deu certo Ricardo Marques, não funcionou o set mutiple Ricardo funcionou mas da mesma forma que IsExeRunning() ainda continuo sem enteder???? não tem como subir a tela novamente? Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted January 17, 2007 Report Share Posted January 17, 2007 Felipe, Sempre uso SET MULTILE ON ou OFF, conforme o caso e, funciona direitinho... Deve haver alguma coisa que está gerando eese problema. - Vc está rodando o sistema sobre qual plataforma? - Dá pra enviar um pedaço do código pra gente analizar? Ricardo. Ricardo Marques Quote Link to comment Share on other sites More sharing options...
ricardom1361303566 Posted January 17, 2007 Report Share Posted January 17, 2007 Felipe, No meu exemplo, acrescente: if oWnd!=0 MsgAlert("O programa já se encontra aberto.","Atenção!!!") BringWindotoTop( oWnd ) ShowWindow( oWnd, 3 ) // <===== Return(.f.) endif Deve funcionar Ricardo Quote Link to comment Share on other sites More sharing options...
flpcrz Posted January 17, 2007 Author Report Share Posted January 17, 2007 - Vc está rodando o sistema sobre qual plataforma? WINXPSP2 - Dá pra enviar um pedaço do código pra gente analizar? SET(4,"dd/mm/yyyy") SET DELETED ON SET EPOCH TO 1930 SET EXCLUSIVE OFF SET 3DLOOK ON IF(IsExeRunning("SIG.EXE") ) MsgStop("O programa já se encontra aberto","Atenção!!!") Return(.f.) EndIf DEFINE ICON oIcoSig RESOURCE "ASIG" DEFINE CURSOR oCurSig RESOURCE "CUR" DEFINE FONT oFntSig1 NAME "Tahoma" SIZE 0,-14 ITALIC DEFINE FONT oFntMn1 NAME "Verdana" SIZE 0,IF(oInfo:lTamMenu,-16,-14) BOLD ITALIC DEFINE WINDOW oWSig FROM 0,10 TO 500,650 PIXEL TITLE cTitulo ICON oIcoSig MENU CriaMenu() ... ... .. .. ACTIVATE WINDOW oWSig MAXIMIZED ON PAINT (Textura(oWSig,{nRgb(212,208,200),nRgb(255,255,255)}),SayBitmaps(oWSig)) (GlobalFree(),ResAllFree(),FreeResources(),SysRefresh()) RETURN(NIL) Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted January 17, 2007 Report Share Posted January 17, 2007 É realmente um mistério... Então vamos à s espertÃases... uma idéia: faça um outro programa para chamar o seu.exe.. mais ou menos assim: //--------------------------------------------------------- Function main() IF !IsExeRunning("meuprogram.exe") WinExec( "meuprogram.exe" ) EndIf Return NIL //-------------------------------------------------------- toda vez que vc executar esse programa, ele verificará seu o seu.exe está ou são aberto...se não estiver ele abre, caso contrário ele não faz nada e simplesmente acaba.. Faça sempre as chamada através desse programa. Mire link nele e pronto. Ricardo Marques Quote Link to comment Share on other sites More sharing options...
viol Posted January 17, 2007 Report Share Posted January 17, 2007 É... o que funcionou aqui foi o que o Beto postou. viol Quote Link to comment Share on other sites More sharing options...
flpcrz Posted January 18, 2007 Author Report Share Posted January 18, 2007 e ai pessoal fiz as recomendações e nada... Viol o seu é em 32 bits com xharbour?, pois conversando com um amigo ele disse que o dele que é clipper/fw não precisa disso, será que é algo na compilação que deixa abrir outro? Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Quote Link to comment Share on other sites More sharing options...
vagner Posted January 18, 2007 Report Share Posted January 18, 2007 Olá, Aproveitando a dica do Beto e a minha para pegar o diretório, acabei montando uma função genérica para isso, ou seja, basta vc colocar em uma lib ou prg padrão, sem precisar ficar mudando o nome do programa toda hora Func Ativo() cNomeProg := GetModuleFileName( GetInstance() ) nPos := Rat("\",cNomeProg) cNomeProg := SubStr(cNomeProg,nPos+1,Len(cNomeProg)-nPos) If IsExeRunning( cNomeProg ) MsgStop( "Este programa já está aberto neste computador!", "ImpossÃvel Continuar !" ) Retu(.T.) Endif Retu(.F.) id=code>id=code>e Testar no Programa Func Main() .... If Ativo() Exit Endif .... id=code>id=code>Vagner Wirts Clipper 5.2 Lib 5.3 - Blinker 5.0 FW 2.0, Harbour 43.0 (Flex), xHarbour 99.1 99.2 99.3 (Simplex) FW 2.5 Quote Link to comment Share on other sites More sharing options...
jc Posted January 18, 2007 Report Share Posted January 18, 2007 Pessoal... meu sistema já utilizava o isExeRunning() com perfeição, mas alterei meu código para utilizar os recursos apresentados aqui nesse tópico e assim ficou: IF isExeRunning( aSIS_DadosSistema["nome_executavel"] ) oWnd := findWindow( 0, aSIS_DadosSistema["titulo_sistema"] ) IF oWnd <> 0 msgStop("O Sistema já está sendo executado nesse computador." + CRLF + CRLF + "Não será possÃvel executar uma nova Cópia!", "Atenção!") bringWindowToTop( oWnd ) showWindow( oWnd, 3 ) ENDIF RETURN( .F. ) ENDIF Funcionou com exatidão perfeita! Ele dá o aviso, finaliza a nova instância e maximiza o que estava minimizado!! Valeu galera!@ Júlio César M. Ferreira Diretor de Tecnologia RS Consultores Ltda. Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 2.5, xHarbour 0.99.51, SQL LIB, Pelles 4.50.113 Quote Link to comment Share on other sites More sharing options...
jc Posted January 18, 2007 Report Share Posted January 18, 2007 Corrigindo o trecho para melhor visualizar.... IF isExeRunning( aSIS_DadosSistema["nome_executavel"] ) oWnd := findWindow( 0, aSIS_DadosSistema["titulo_sistema"] ) IF oWnd <> 0 msgStop("O Sistema já está sendo executado nesse computador." + CRLF + CRLF + "Não será possÃvel executar uma nova Cópia!", "Atenção!") bringWindowToTop( oWnd ) showWindow( oWnd, 3 ) ENDIF RETURN( .F. ) ENDIF id=code>id=code>Júlio César M. Ferreira Diretor de Tecnologia RS Consultores Ltda. Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 2.5, xHarbour 0.99.51, SQL LIB, Pelles 4.50.113 Quote Link to comment Share on other sites More sharing options...
flpcrz Posted January 18, 2007 Author Report Share Posted January 18, 2007 vlw a todos, mas na minha maquina não funciona, eu percebo que o botão da uma "mexida" mas não acontece nada, só não deixa entrar, que já é bom isso, então vou testar em outra maquina para ver o que acontece e reporto para vcs, obrigado a todos. Felipe Cruz. Santo Andre-SP FiveWin 2.7 / XHarbour 0.99.60 (SIMPLEX) / Clipper 5.3b / BCC55 / Pelles C / xDev Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.