|
Postada em 27/12/2005 17:47 hs
Olá, Na seção dicas verifiquei que existe uma dica legal para checar se existe algum processo ativo e na dica foi utilizado a calculadora, ocorre que quero utilizar a mesma dica para usar com winword, mais quando este processo estiver ativo(é porque deu erro na aplicação e este processo fica ativo na memória e se eu executar a aplicação novamente dar erro) quero cancelar o mesmo como posso fazer isto? Segue abaixo a dica do site. 'Neste exemplo o Programa escolhido foi o Calc.exe, 'mas poderia ser qualquer outro, ou se pode criar um 'loop para verificar os programas que vc quiser bloquear 'o acesso a mais de uma vez.
Const TH32CS_SNAPHEAPLIST = &H1 Const TH32CS_SNAPPROCESS = &H2 Const TH32CS_SNAPTHREAD = &H4 Const TH32CS_SNAPMODULE = &H8 Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or _ TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Const TH32CS_INHERIT = &H80000000 Const MAX_PATH As Integer = 260 Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32Min Lib "Kernel32" _ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" _ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long) Dim msgaviso As Integer
Private Sub cdmCalc_Click() Dim hSnapShot As Long, uProcess As PROCESSENTRY32 Dim r, strCalc As String Dim varCalc As Variant hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) r = Process32Min(hSnapShot, uProcess) Do While r strCalc = (Left$(uProcess.szExeFile, _ IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, _ InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))) If strCalc = "Calc.exe" Then msgaviso = MsgBox("Calculadora já está ativa!", _ vbExclamation + vbOKOnly, "Resumo de Qualidade") GoTo 10: End If r = Process32Next(hSnapShot, uProcess) Loop varCalc = Shell("Calc.exe", vbNormalFocus) 10: CloseHandle hSnapShot Alguém pode me ajudar?. T+
|
|
|
|
|
Postada em 28/12/2005 17:19 hs
Será que neste site especializado ninguém sabe ou nunca usou como cancelar um processo que está em execução no windows? Cadê os balas do VB?
|
|
|
Felipe595
|
RIO DE JANEIRO RJ - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 11/07/2006 09:28 hs
Modifique a palavra 'Process32Min' por 'Process32Min' uqe irá funcionar. Abraço!
|
|
|
|
Postada em 11/07/2006 09:39 hs
Eita... o site está com problemas.. quando coloco a palavra primeiro em inglês ele coloca Min. O correto é Process32 e junto coloque a palavra primeiro em inglês. é isso aê!
|
|
|
Ferreira
|
JABOTICABAL SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 25/08/2006 20:44 hs
Ade, estou precisando da mesma coisa que vc, só que preciso cancelar todos os processos do MSACCESS que estiverem ativos ! Você pode me ajudar ?
Rodrigo Ferreira MSN - rjpferreira@hotmail.com
|
|
|
|
Postada em 26/08/2006 00:26 hs
Felipe, primeiro uma explicação... não é problema do site... é segurança. Ele troca palavras F i r s t e L a s t por Min e Max para evitar problemas com xScritp e SQL Injection... são muitas outras palavras e simbolos que o site troca por motivo de segurança...
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________ "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
|