COMO: VB pode determinar se o programa específico do Windows está em execução

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 72918
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Para determinar se um programa específico está sendo executado, chame a função FindWindow do API do Windows.

FindWindow retorna o identificador da janela cuja classe é fornecido pelo parâmetro lpClassname e cujo nome de janela (legenda), é dado por parâmetro lpCaption. Se o valor retornado for zero, o aplicativo não está sendo executado.

Observação: Oferece somente implementações de 16 bits do VBA para o exemplo código neste artigo.
Mais Informações
Essas informações são incluídas com o arquivo de Ajuda fornecido com o Microsoft Professional Toolkit para Visual Basic versão 1.0, Microsoft Visual Basic versão 2.0 e Microsoft Visual Basic versão 3.0.

Chamando FindWindow com uma combinação de nome da classe de um programa específico e/ou a legenda da barra de título, seu programa pode determinar se o programa específico está sendo executado. Quando um aplicativo é iniciado no Gerenciador de programas, ele registra o nome de classe do formulário. A classe de janela fornece informações sobre o nome, atributos e recursos requeridos pelo seu formulário. Formulários MDI no Visual Basic tem ThunderMDIForm como seu nome de classe, e todos os outros formulários do Visual Basic tem ThunderForm como seu nome de classe.

Você pode determinar o nome de classe de um aplicativo usando SPY.EXE que vem com versão 3.0 ou 3.1 no Microsoft Windows Software Development Kit (SDK).

Se a janela tem um título da barra de legenda, você também pode usar o título para localizar a instância do aplicativo em execução. Este texto de legenda é válido mesmo quando o aplicativo for minimizado para um ícone.

Porque outra instância do seu programa do Visual Basic terá o mesmo nome de classe e pode ter a mesma legenda barra de título, você deve usar intercâmbio dinâmico de dados (DDE) para determinar se outra instância do seu programa do Visual Basic está em execução. (Essa técnica DDE não é mostrada neste artigo).

Exemplo passo a passo

O exemplo a seguir mostra três maneiras para determinar se a Calculadora do Windows está sendo executado. Para criar o programa, faça o seguinte:

  1. Inicie o Visual Basic ou no menu File, escolha New Project (ALT, F, N) se o Visual Basic já estiver sendo executado. O Form1 é criado por padrão.
  2. Declare a função de API do Windows FindWindow na seção declarações globais de Form1. As variáveis são declaradas como "Qualquer" porque você pode passar o ponteiro para uma seqüência de caracteres, ou um NULL (ou 0 &) valor. Você é responsável por passar o tipo de variável correto.
          ' Enter the following Declare statement on one, single line:      Declare Function FindWindow% Lib "user" (ByVal lpClassName As Any,         ByVal lpCaption As Any)						
  3. Adicione o seguinte código ao clique do formulário evento. Este exemplo demonstra como você pode localizar a instância do aplicativo com uma combinação de legenda da janela e/ou o nome da classe. Neste exemplo, o aplicativo irá encontrar uma instância do Windows Calculadora (CALC.EXE).
          Sub Form_Click ()         lpClassName$ = "SciCalc"         lpCaption$ = "Calculator"         Print "Handle = ";FindWindow(lpClassName$, 0&)         Print "Handle = ";FindWindow(0&, lpCaption$)         Print "Handle = ";FindWindow(lpClassName$,lpCaption$)      End Sub						
  4. Execute este programa com execução CALC.EXE e sem CALC.EXE em execução. Se estiver executando o CALC.EXE, seu aplicativo imprimirá um identificador arbitrário. Se não estiver sendo executado CALC.EXE, seu aplicativo imprimirá zero como a alça.
Abaixo estão alguns nomes de classe de aplicativos que vêm com o Windows:
Class Name         ApplicationSciCalc            CALC.EXECalWndMain         CALENDAR.EXECardfile           CARDFILE.EXEClipboard          CLIPBOARD.EXEClock              CLOCK.EXECtlPanelClass      CONTROL.EXEXLMain             EXCEL.EXESession            MS-DOS.EXENotepad            NOTEPAD.EXEpbParent           PBRUSH.EXEPif                PIFEDIT.EXEPrintManager       PRINTMAN.EXEProgman            PROGMAN.EXE   (Windows Program manager)Recorder           RECORDER.EXEReversi            REVERSI.EXE#32770             SETUP.EXESolitaire          SOL.EXETerminal           TERMINAL.EXEWFS_Frame          WINFILE.EXEMW_WINHELP         WINHELP.EXE#32770             WINVER.EXEOpusApp            WINWORD.EXEMSWRITE_MENU       WRITE.EXE

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 72918 - Última Revisão: 12/04/2015 09:08:29 - Revisão: 2.0

Microsoft Visual Basic 2.0 Standard Edition, Microsoft Visual Basic 3.0 Professional Edition, Microsoft Visual Basic 2.0 Professional Edition, Microsoft Visual Basic 3.0 Professional Edition, Microsoft Visual Basic 1.0 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto kbprogramming KB72918 KbMtpt
Comentários