VERIFICAR SE UM EXECUTAVEL ESTA ABERTO
Olá rapazeada,
Gostaria de saber, se existe alguma forma de eu saber se um executável, tipo NOTEPAD está aberto?
E caso ele já esteja aberto, colocar ele em foco, Ã frente dos outros aplicativos abertos na tela
Valeu!
Gostaria de saber, se existe alguma forma de eu saber se um executável, tipo NOTEPAD está aberto?
E caso ele já esteja aberto, colocar ele em foco, Ã frente dos outros aplicativos abertos na tela
Valeu!
Tem várias formas, através do nome das janelas abertas ou pelo próprio nome de processo em execução, mas aà já é outros quinhentos pois exige mais perÃcia de programação e agora to sem tempo. Vou te mostrar um mais simples:
Tem duas formas simples pelo uso da API FindWindow porém tem que ter o nome exato da Janela aberta.
Neste caso caso então o mais ideal é enumerar as janelas do Windows verificando se cada uma contém a palavra chave [Ô]Bloco de Notas[Ô] no tÃtulo e joga o foco trazendo a janela para frente com a API SetForegroundWindow porém antes checando se a janela está minimizada através da API IsIconic pois terá que Maximiza-la através da API ShowWindow com o argumento SW_RESTORE antes de chamar a API SetForegroundWindow:
Crie um novo Projeto Standard EXE , adicione 1 commandbutton no Form e adicione os seguintes codigos:
--------------------------------------------------------------------------------------------------------------------------------------------------
Option Explicit
Private Sub Command1_Click()
Call JanelaOnForeground([Ô]Bloco de notas[Ô])
End Sub
Agora crie um Módulo e adicione os seguintes códigos:
----------------------------------------------------------------------------
Option Explicit
Private Declare Function GetDesktopWindow Lib [Ô]user32[Ô] () As Long
Private Declare Function EnumChildWindows Lib [Ô]user32[Ô] (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib [Ô]user32[Ô] Alias [Ô]GetWindowTextA[Ô] (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib [Ô]user32[Ô] Alias [Ô]GetWindowTextLengthA[Ô] (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long
Private Declare Function IsIconic Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_MAXIMIZE = 3
Private Const SW_RESTORE = 9
Public sParteTitulo As String
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim sJanela As String
sJanela = Space$(255)
GetWindowText hwnd, sJanela, Len(sJanela)
sJanela = Left$(sJanela, InStr(sJanela, Chr(0)) - 1)
If InStr(sJanela, sParteTitulo) <> 0 Then
If IsIconic(hwnd) Then ShowWindow hwnd, SW_RESTORE
SetForegroundWindow hwnd
End If
EnumChildProc = 1
End Function
Public Sub JanelaOnForeground(ParteDoTitulo As String)
sParteTitulo = ParteDoTitulo
EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
End Sub
Tem duas formas simples pelo uso da API FindWindow porém tem que ter o nome exato da Janela aberta.
Neste caso caso então o mais ideal é enumerar as janelas do Windows verificando se cada uma contém a palavra chave [Ô]Bloco de Notas[Ô] no tÃtulo e joga o foco trazendo a janela para frente com a API SetForegroundWindow porém antes checando se a janela está minimizada através da API IsIconic pois terá que Maximiza-la através da API ShowWindow com o argumento SW_RESTORE antes de chamar a API SetForegroundWindow:
Crie um novo Projeto Standard EXE , adicione 1 commandbutton no Form e adicione os seguintes codigos:
--------------------------------------------------------------------------------------------------------------------------------------------------
Option Explicit
Private Sub Command1_Click()
Call JanelaOnForeground([Ô]Bloco de notas[Ô])
End Sub
Agora crie um Módulo e adicione os seguintes códigos:
----------------------------------------------------------------------------
Option Explicit
Private Declare Function GetDesktopWindow Lib [Ô]user32[Ô] () As Long
Private Declare Function EnumChildWindows Lib [Ô]user32[Ô] (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib [Ô]user32[Ô] Alias [Ô]GetWindowTextA[Ô] (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib [Ô]user32[Ô] Alias [Ô]GetWindowTextLengthA[Ô] (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long
Private Declare Function IsIconic Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_MAXIMIZE = 3
Private Const SW_RESTORE = 9
Public sParteTitulo As String
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim sJanela As String
sJanela = Space$(255)
GetWindowText hwnd, sJanela, Len(sJanela)
sJanela = Left$(sJanela, InStr(sJanela, Chr(0)) - 1)
If InStr(sJanela, sParteTitulo) <> 0 Then
If IsIconic(hwnd) Then ShowWindow hwnd, SW_RESTORE
SetForegroundWindow hwnd
End If
EnumChildProc = 1
End Function
Public Sub JanelaOnForeground(ParteDoTitulo As String)
sParteTitulo = ParteDoTitulo
EnumChildWindows GetDesktopWindow, AddressOf EnumChildProc, ByVal 0&
End Sub
Tópico encerrado , respostas não são mais permitidas