Como verificar se o programa está em execução em IDE ou um ficheiro EXE


Resumo


Este artigo demonstra como determinar se o programa estiver em execução no ambiente de desenvolvimento integrado do Visual Basic (IDE) ou como um ficheiro executável compilado. Pode querer verificar em que o programa está a ser executado se necessitar de adicionar informações de depuração que não seja visíveis na versão compilada do programa.

Mais Informações


Existem dois métodos que pode utilizar para determinar se o programa está em execução de IDE ou a EXE.

Método 1: Nome do ficheiro EXE difere do nome do projecto

O objecto de aplicação contém informações gerais sobre o programa, como o nome do ficheiro executável. Se o nome do projecto e a versão compilada do projecto têm nomes de ficheiro diferentes, pode utilizar a propriedade App.EXEName para determinar se o EXE estiver em execução ou se o projecto está em execução no IDE. Se estiver a executar o programa do IDE do Visual Basic, a propriedade de nomedoexe devolve o nome do projecto. Quando um programa é executado a partir de um ficheiro executável, a propriedade de nomedoexe contém o nome do ficheiro EXE.

Método 2: Nome do ficheiro EXE e o nome do projecto são iguais

Se o nome do projecto e a versão compilada partilham o mesmo nome, em seguida, utilize a função de API de GetModuleFileName para determinar se o programa está em execução do IDE ou de uma versão compilada. GetModuleFileName obtém o caminho completo e o nome do ficheiro executável que contém o módulo especificado. Se a função devolve um caminho para o ficheiro do Visual Basic, VB5. EXE, em seguida, o programa está em execução no IDE. Caso contrário, o programa é executado a partir de um ficheiro executável. GetModuleFileName requer os seguintes argumentos:
  • hModule: o identificador do módulo cujo nome de ficheiro que pretende. Utilize a propriedade hInstance do objecto de aplicação para este parâmetro.
  • lpFilename: um ponteiro para a memória intermédia para receber o caminho de módulo. Criar uma cadeia variável 255 caracteres e passar essa variável para este parâmetro.
  • nSize: o tamanho da memória intermédia de caracteres. Utilize 255 para este parâmetro.
A secção seguinte ilustra como criar um projecto de exemplo que implemente ambos os métodos.

Projecto de exemplo

  1. Inicie um novo projecto EXE padrão no Visual Basic. Por predefinição, é criado o Form1.
  2. Adicione dois CommandButtons ao Form1.
  3. Copie o seguinte código para a janela Code do Form1:
          Option Explicit      Private Declare Function GetModuleFileName Lib "kernel32" _         Alias "GetModuleFileNameA" _         (ByVal hModule As Long, _         ByVal lpFileName As String, _         ByVal nSize As Long) As Long      Private Sub Form_Load()         'Set the command button names         Command1.Caption = "Different Project and Executable Names"         Command2.Caption = "Similar File Names"      End Sub      Private Sub Command1_Click()          'Click this button if the project name and the compiled file          'name are different.          MsgBox VB.App.EXEName      End Sub      Private Sub Command2_Click()         'Click this button if the project name and the compiled file         'name are the same.         Dim strFileName As String         Dim lngCount As Long         strFileName = String(255, 0)         lngCount = GetModuleFileName(App.hInstance, strFileName, 255)         strFileName = Left(strFileName, lngCount)         If UCase(Right(strFileName, 7)) <> "VB5.EXE" Then             MsgBox "Compiled Version"         Else             MsgBox "IDE Version"         End If      End Sub
  4. Guarde o projecto com o nome IDEApp.
  5. Compile dois diferentes ficheiros executáveis deste projecto. Utilize o nome de ficheiro predefinido, IDEApp.exe, para o primeiro ficheiro executável. Para o segundo ficheiro executável, utilize o nome do ficheiro EXEApp. Para compilar o projecto, conclua os seguintes passos:
    • No menu ficheiro, clique em fazer IDEApp.exe. Aparece a caixa de diálogo de tornar o projecto.
    • Utilize o nome de ficheiro predefinido ou escreva o nome de ficheiro na caixa de texto nome do ficheiro.
    • Clique em OK para criar o ficheiro executável e para fechar a caixa de diálogo Criar projecto.
  6. No Run menu, clique em Iniciar ou prima a tecla F5 para iniciar o programa. Clique no botão de projecto diferente e nomes de ficheiro executável. Apresenta uma caixa de mensagem com a mensagem "IDEApp", para indicar que o programa está em execução do IDE. Clique no botão de nomes de ficheiro semelhantes. Apresenta uma caixa de mensagem com a mensagem "Versão IDE," para indicar que a execução do programa do IDE. Feche o projecto.
  7. Executar um ficheiro executável e faça clique sobre o CommandButtons. Aparece uma caixa de mensagem indicando que o programa está a ser executado a partir de um ficheiro executável.

Referências


Para obter informações sobre como determinar se uma aplicação de Visual Basic de 16 bits está em execução no ambiente de estruturação, consulte o seguinte artigo na Microsoft Knowledge Base:
118819 : como saber se uma aplicação é executada no ambiente de estruturação VB