none
(Visual Basic 2010) Como ativar a janela da sua aplicação? RRS feed

  • Pergunta

  • Olá amigos, depois de pesquisar muito, encontrei um código para evitar que a minha aplicação possa ser aberta mais de uma vez. O problema é que além evitar que seja aberto duas vezes, quero que ao concluir o processo  janela da aplicação fique ativada em foco. Veja o código abaixo, do jeito que está a janela termina minimizada, tentei inclusive usar a linha de código Me.WindowState = FormWindowState.Normal, sem sucesso.

    Código que tenho atualmente:

           If Process.GetProcessesByName _
              (Process.GetCurrentProcess.ProcessName).Length > 1 Then

                MsgBox("Esse programa já está aberto.")

                Application.Exit()
            End If


    terça-feira, 6 de setembro de 2016 05:07

Todas as Respostas

  • Olá Alex,

    Tem como fazer, o meu exemplo é em C#, porém você pode adaptar para VB se for o caso, fora do seu método adiciona esse código:

    private const int SW_MAXIMIZE = 3;
    
    [DllImport("User32")]
    private static extern int ShowWindow(int hwnd, int nCmdShow);

    E dentro do seu método (antes do Application.Exit()) faz isso:

    int hWnd;
    Process[] processRunning = Process.GetProcesses();
    foreach (Process pr in processRunning)
    {
        if (pr.ProcessName == Process.GetCurrentProcess.ProcessName)
        {
            hWnd = pr.MainWindowHandle.ToInt32();
            ShowWindow(hWnd, SW_MAXIMIZE);
        }
    }


    DETALHE: Para conseguir usar o DllImport você terá que adicionar uma referência que geramente está em c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco



    terça-feira, 6 de setembro de 2016 11:28
  • Bom dia André, obrigado pela boa vontade! Mas ainda está meio complicado para mim a resposta em C#, até encontrei um site que converte C# PARA VB, então criei um projetinho em C# colocando seu código e ficou cheio de erro, foi quando vi que ainda tinha o lance de ter que instalar DLL. Gostaria de ver um jeito mais simples em VB mesmo mesmo. Valeu!
    terça-feira, 6 de setembro de 2016 13:36