Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
12 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 12 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Espessura do cursor intermitente

7/3/2017, 09:08 por Jefferson Matakas

Bom dia a todos !!

Existe uma opcao no windows que pode ser acessada atraves da 'central da …

Comentários: 0

DESENVOLVIMENTO EM REDES

4/3/2017, 18:45 por AJC

Pessoal tem ou conhece livros ou material para programação em
redes usando banco de dados nativo …

Comentários: 0

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 4

Como preencher campos vazios

9/2/2017, 11:55 por Linghston

Pessoal boa tarde,

É o seguinte, eu preciso preencher os campos de uma coluna da tabela DBF que …

Comentários: 2

Enviar msg para WhatsAPP via VFP

7/2/2017, 10:31 por Eliana

Olá Pessoal!

Alguém sabe se é possível enviar mensagem para o WhatsAPP via VFP?


Grata


Comentários: 0

Estatísticas
Temos 7037 usuários registrados
O último usuário registrado atende pelo nome de GETULIO

Os nossos membros postaram um total de 31 mensagens em 17 assuntos

Como saber se um form ja está aberto?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Como saber se um form ja está aberto?

Mensagem por thiag0ms em 19/7/2012, 12:56

oi...como faz pra saber se um form ja esta aberto ?
pra tirar aquele erro quando você tenta abrir 2 vezes o executavel e também o "access is denied" quando tem uma tabela sendo usada no form...
enfim...
basicamente quero que o programa perceba que ja está em execução e não tente fazer mais nada...se possivel quando ocorrer isso gostaria que o programa se tornasse evidente...ou seja...aparecer de volta na tela se estiver minimizado ou não...

thiag0ms
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por Marcos Guedes em 19/7/2012, 13:32

Tente uma das opções:

Código:
IF WEXIST('NOME_FORM') THEN
    messagebox('Form aberto!')
ENDIF

ou

Código:
IF WVISIBLE('NOME_FORM') THEN
    messagebox('Form aberto!')
ENDIF

Resolve?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por thiag0ms em 19/7/2012, 13:38

não eu ja tentei isso...aspokasopks...
desculpa esqueci de comentar... ^^

thiag0ms
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por Marcos Guedes em 19/7/2012, 13:39

como você está fazendo?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por lardecristo em 19/7/2012, 14:32

Pelo que entendi você só quer executar uma vez o seu aplicativo e não o fom, certo?
Existem alguns métodos, o que vou postar aqui foi o que eu achei mais eficiente.

Coloque este código no prg de inicialização do sistema
Código:

&& Coloquei o .NOT. porque a rotina volta TRUE caso o mesmo já esteja rodando.
&& Too many instance already running? (Para rodar só uma vez)
IF .NOT. TooManyInstances(1, "171B7747-3210-428D-A994-859B0C673508", "0A1DA789-F9BE-458B-B85C-FD1467EE052E")

aqui o código para dispara do resto do sistema
no meu caso uso várias checagem e depois disparo
o READ EVENTS

ENDIF


   IF PEMSTATUS(_screen,"SemaphoreHandle",5)
      DECLARE INTEGER ReleaseSemaphore IN kernel32 ;
         INTEGER hSemaphore, INTEGER lReleaseCount, INTEGER @lpPreviousCount
      DECLARE INTEGER CloseHandle IN Kernel32 INTEGER hObject
      ReleaseSemaphore(_screen.SemaphoreHandle,1,0)
      CloseHandle(_screen.SemaphoreHandle)
      REMOVEPROPERTY(_screen, "SemaphoreHandle")
   ENDIF

O código abaixo eu o tenho em um PRG chamado funcao.prg

Código:

***************************
FUNCTION TooManyInstances(lnInstancesAllowed, lcUniqueSemaphore, lcUniqueProperty, lnNaoMaximizar as Integer)
***************************
*      #DEFINE GW_CHILD                5 && 0x00000005
*      #DEFINE GW_HWNDNEXT                2 && 0x00000002
*      #DEFINE SW_MAXIMIZE                3 && 0x00000003
*      #DEFINE SW_NORMAL                1 && 0x00000002
   #DEFINE WAIT_OBJECT_0            0 && 0x00000000

   LOCAL lcUniqueProperty, lcUniqueSemaphore, lnhSemaphore, lnHwnd, llReturn
   IF PCOUNT() = 0
      lnInstancesAllowed = 1 && default
   ELSE
      lnInstancesAllowed = MAX(lnInstancesAllowed,1) &&At least one
   ENDIF
   DO DeclareAPIs

   *!* The GUIDs below were created using
   *!* the following two lines in the command window
   *!* then it was just a matter of pasting them in
   *!* oTypeLib = CreateObject("scriptlet.typelib")
   *!*    _cliptext = substr(oTypeLib.GUID, 2, 36)
   *!* Thanks Mike Gagnon

*      REMOVI AS DUAS LINHA ABAIXO, PORQUE DEVO GERAR UM PAR DE GUID PARA CADA SISTEMA QUE EU FIZER, ...
*      ...E ESTE VALOR SERÁ COLOCADO NA CHAMADA DA FUNÇÃO
*      lcUniqueSemaphore = "968360BF-C7AD-4B62-A045-0A06D597EF18"
*      lcUniqueProperty = "E2429959-D873-4733-8182-7A3F14780A27" && GUID to insure uniqueness

   lnhSemaphore = CreateSemaphore(0,lnInstancesAllowed,lnInstancesAllowed,lcUniqueSemaphore)
   IF lnhSemaphore != 0 AND WaitForSingleObject(lnhSemaphore, 0) != WAIT_OBJECT_0
      DO DeclareMoreAPIs
      llReturn = .T.
      lnHwnd = GetWindow(GetDesktopWindow(), GW_CHILD)
      DO WHILE lnHwnd != 0 && loop through all windows
         IF GetProp(lnHwnd, lcUniqueProperty) = 1  && does window have our unique property?
            BringWindowToTop(lnHwnd)
            IF !lnNaoMaximizar THEN
               ShowWindow(lnHwnd,SW_MAXIMIZE) && or send SW_NORMAL
            ENDIF
            llReturn = .T.
            EXIT
         ENDIF
         lnHwnd = GetWindow(lnHwnd, GW_HWNDNEXT)
      ENDDO
      CloseHandle(lnHwnd)
      CloseHandle(lnhSemaphore)
      CLEAR DLLS "BringWindowToTop", "GetDesktopWindow", ;
      "GetProp", "GetWindow", "ShowWindow", ;
      "CloseHandle"
   ELSE
      =SetProp(_VFP.HWND, lcUniqueProperty, 1)
      _screen.AddProperty("SemaphoreHandle",lnhSemaphore)
      llReturn = .F.
   ENDIF
   CLEAR DLLS "CreateSemaphore", "GetLastError", ;
   "SetProp"
   RETURN (llReturn)
ENDFUNC

***************************
PROCEDURE DeclareAPIs()
***************************
   DECLARE INTEGER CloseHandle IN Kernel32 INTEGER hObject
   DECLARE INTEGER CreateSemaphore IN Kernel32 ;
      INTEGER lpSemaphoreAttributes, INTEGER lInitialCount, ;
      INTEGER lMaximumCount, STRING lpName
   DECLARE INTEGER SetProp IN User32 INTEGER HWND, STRING lpString, INTEGER hData
   DECLARE INTEGER WaitForSingleObject IN kernel32 INTEGER hHandle, INTEGER dwMilliseconds
ENDPROC

***************************
PROCEDURE DeclareMoreAPIs()
***************************
   DECLARE INTEGER BringWindowToTop IN Win32API INTEGER HWND
   DECLARE INTEGER GetDesktopWindow IN User32
   DECLARE INTEGER GetProp IN User32 INTEGER HWND, STRING  lpString
   DECLARE INTEGER GetWindow IN User32 INTEGER HWND, INTEGER uCmd
   DECLARE INTEGER ShowWindow IN Win32API INTEGER HWND, INTEGER nCmdShow
ENDPROC


Procure na internet por "TooManyInstances VFP", que lá terá mais explicações O valor que está na frente do Too...lá mostra como gerá-lo, o mesmo deve ser diferente para cada aplicativo.
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por Julio em 19/7/2012, 14:43

Nao sei se funciona no VFP 90, utiliza no VFP 60, e verifica se o executavel esta sendo utilizado, se me recordo bem o codigo era esse.
Código:
* Não permite q o programa seja executado mais de uma vez
Local lnWinHandle
Declare Integer FindWindow In Win32API Integer, String
lnWinHandle = FindWindow( 0, TÍTULO DA JANELA PRINCIPAL DO SEU SISTEMA )
If lnWinHandle # 0
=Messagebox( "O aplicativo já está sendo executado!", 16 )
Cancel
Endif

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por thiag0ms em 19/7/2012, 15:46

só uma dúvida...eu preciso por o código no inicio do prog ou antes do "DO FORM" ??

no meu caso eu uso "DO FORM" e na linha de baixo "READ EVENTS" e ponho entre esses 2 ?

thiag0ms
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por thiag0ms em 20/7/2012, 19:18

então pessoal...nenhum desses exemplos funcionários...
mas eu consegui...o método que eu usei foi tirado desse tópico...

[Você precisa estar registrado e conectado para ver este link.]

--

RESOLVIDO

thiag0ms
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Como saber se um form ja está aberto?

Mensagem por lardecristo em 21/7/2012, 16:10

Depois vou postar um exemplo com as duas formas, a que você postou e a que eu postei, e lá colocarei um arquivo explicando a diferença entre os dois métodos.

Abraços.
avatar
lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum