MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

5 participantes

    [Resolvido]Instância Única (Single instance)

    avatar
    LuísAugustoS
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 07/11/2017

    [Resolvido]Instância Única (Single instance) Empty [Resolvido]Instância Única (Single instance)

    Mensagem  LuísAugustoS 29/11/2021, 18:14

    Após pesquisar aqui no fórum e no Google, não encontrei uma maneira que funcionasse, para forçar Single Instance no Runtime Access.
    Meu arquivo está com a extensão ACCDE.

    Minha ultima tentativa foi utilizando esse módulo, mas não obtive resultados. Módulo

    Vocês poderiam me auxiliar com este problema?

    Muito obrigado.

    Augusto
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3743
    Registrado : 22/11/2016

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  DamascenoJr. 29/11/2021, 23:30

    Mesmo abrindo o arquivo de forma exclusiva?


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4757
    Registrado : 06/11/2009

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  Assis 30/11/2021, 10:38

    Bom dia Amigos

    Eu uso assim ao abrir o primeiro formulário da base de dados, e funcioma.

    Call fMuntiplaInstancia

    Public Function fMuntiplaInstancia()
     Dim NomeDaAplicação As String
    NomeDaAplicação = "*************"  'Coloque o nome de sua aplicação aqui, igual ao do menu inicializar
     If fMultipleInstance(NomeDaAplicação) Then
           Dim intX As Integer
         intX = AcrescentarPropApl("AppTitle", dbText, NomeDaAplicação)
         RefreshTitleBar
         Application.Quit
       
    End If
    End Function

    '**********************************

    Como colocar uma MGBOX informando ?

    '**********************************


    - Mas se a base de dados estiver com a extensão ACCDR, não reconhece pois sempre que clicar no atalho do ambiente de trabalho abre + 1 etc

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    LuísAugustoS
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 07/11/2017

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  LuísAugustoS 30/11/2021, 13:03

    Bom dia a todos!

    @DamascenoJr., não posso abrir em modo exclusivo pois o backend é compartilhado com outros usuários e está na rede.

    @Assis, acredito que o método não funcionou para mim pois, o frontend é um arquivo .accde e aparentemente o runtime do access sempre abre uma nova janela de aplicação.

    Irei tentar olhar para os processos, mas não sei se existe api para isso disponível em VBA.

    Obrigado a todos por enquanto.

    avatar
    bacano
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 117
    Registrado : 08/12/2010

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  bacano 30/11/2021, 13:14

    Bom dia Amigos

    Eu uso ao abrir o primeiro formulário, e funciona.
     
    Código:


     Call EstaCarregado

    '********************************************************************
    Function EstaCarregado()
        Dim DB As Database
        Set DB = CurrentDb
        If TestDDELink(DB.Name) Then
            DoCmd.Beep
            MsgBox "Aviso:" & "@@O Aplicativo já está em execução em" _
                 & vbCrLf & "outra janela do Windows!", vbCritical, ".:: @RSV ::."
            Application.Quit (acQuitSaveNone)
        End If
        Set DB = Nothing
    End Function

    '********************************************************************
    Function TestDDELink(ByVal strAppName$) As Integer
        Dim varDDEChannel
        On Error Resume Next
        Application.SetOption ("Ignore DDE Requests"), True
        varDDEChannel = DDEInitiate("MSAccess", strAppName)
        'Quando o aplicativo já está carregado um erro é gerado
        If Err Then
            TestDDELink = False
        Else
            TestDDELink = True
            DDETerminate varDDEChannel
            DDETerminateAll
        End If
        Application.SetOption ("Ignore DDE Requests"), False
    End Function

    avatar
    LuísAugustoS
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 07/11/2017

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  LuísAugustoS 30/11/2021, 13:39

    @bacano, testei seu código que também não funcionou para o meu caso.
    Muito obrigado.
    avatar
    LuísAugustoS
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 07/11/2017

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  LuísAugustoS 30/11/2021, 14:00

    Bom dia a todos.

    Resolvi o problema da seguinte maneira.


    Código:

    Declare Function GetCurrentProcessId Lib "kernel32" () As Long

    Public Sub killProcess()

    Dim oServ As Object
    Dim cProc As Variant
    Dim oProc As Object
    Dim handle As Long

        Set oServ = GetObject("winmgmts:")
        Set cProc = oServ.ExecQuery("Select * from Win32_Process Where Name = 'MSACCESS.EXE'")
        handle = GetCurrentProcessId() 'obtem o processo atual

        For Each oProc In cProc    
            If handle <> oProc.Properties_("ProcessID").Value Then oProc.Terminate
        Next

    End Sub


    Agradeço a todos que tentaram me auxiliar com a questão.


    Última edição por LuísAugustoS em 30/11/2021, 21:31, editado 1 vez(es) (Motivo da edição : Simplificar o código)
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4757
    Registrado : 06/11/2009

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  Assis 30/11/2021, 14:12

    Bacano

    Qual a versão do seu Office ?

    No meu 2013 - 32

    Não funciona



    .................................................................................
    *** Só sei que nada sei ***
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7715
    Registrado : 15/03/2013

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  Alvaro Teixeira 30/11/2021, 14:50

    Olá a todos,

    Eu já utilizo da forma que o colega Ventura (bacano) partilhou.
    Apesar de estar resolvido já tinha feito um pequeno exemplo:
    https://www.maximoaccess.com/t40318-instancia-unica-sair-se-for-mais-que-uma-aberta

    Abraço a todos
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7715
    Registrado : 15/03/2013

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  Alvaro Teixeira 30/11/2021, 15:24

    Olá a todos,

    Luís Augusto, obrigado por partilhar a sua solução.
    Não testei, mas se tiver mais que um aplicativo em Access, não vai permitir abrir o segundo aplicativo (que pode ser outro diferente).

    Abraço a todos
    avatar
    LuísAugustoS
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 07/11/2017

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  LuísAugustoS 30/11/2021, 19:31

    Muito obrigado, @ahteixeira!

    Essa solução é realmente eficaz e muito elegante.
    Agradeço por disponibilizar o exemplo.

    Com relação à questão de fechar outras aplicações, você tem razão e espero que isso seja observado por outras pessoas ao reutilizar o código.
    No meu caso, as vezes utilizo o Access para prototipar algumas coisas, uma vez que ele não me exige a parte de infraestrutura, em seguida, desenvolvo a aplicação final com outras tecnologias e excluo o protótipo.

    Um grande abraço a todos.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7715
    Registrado : 15/03/2013

    [Resolvido]Instância Única (Single instance) Empty Re: [Resolvido]Instância Única (Single instance)

    Mensagem  Alvaro Teixeira 5/12/2021, 18:54

    cheers

      Data/hora atual: 1/2/2023, 06:28