Ola, eu preciso de uma ajuda. não consegui encontrar e não sei se é possivel resolver meu problema mas vamos la.
Eu estou (tentando) desenvolvendo um programa que lista os processos que estao rodando no pc em uma listbox, depois a pessoa iria escolher esse programa na lista e aperta um botao que iria finalizar o processo. Aí é que vem o problema: Eu não consigo finalizar o processo.
o comando(achei na net) pra listar o processo: Em um botao
List1.Clear
Select Case getVersion()
Case 1 'Windows 95/98
Dim f As Long, sname As String
Dim hSnap As Long, proc As PROCESSENTRY32
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If hSnap = hNull Then Exit Sub
proc.dwSize = Len(proc)
' Iterate through the processes
f = Process32First(hSnap, proc)
Do While f
sname = StrZToStr(proc.szExeFile)
List1.AddItem sname
f = Process32Next(hSnap, proc)
Loop
Case 2 'Windows NT
Dim cb As Long
Dim cbNeeded As Long
Dim NumElements As Long
Dim ProcessIDs() As Long
Dim cbNeeded2 As Long
Dim NumElements2 As Long
Dim Modules(1 To 200) As Long
Dim lRet As Long
Dim ModuleName As String
Dim nSize As Long
Dim hProcess As Long
Dim i As Long
'Get the array containing the process id's for each process object
cb = 8
cbNeeded = 96
Do While cb <= cbNeeded
cb = cb * 2
ReDim ProcessIDs(cb / 4) As Long
lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
Loop
NumElements = cbNeeded / 4
For i = 1 To NumElements
'Get a handle to the Process
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
Or PROCESS_VM_READ, 0, ProcessIDs(i))
'Got a Process handle
If hProcess <> 0 Then
'Get an array of the module handles for the specified
'process
lRet = EnumProcessModules(hProcess, Modules(1), 200, _
cbNeeded2)
'If the Module Array is retrieved, Get the ModuleFileName
If lRet <> 0 Then
ModuleName = Space(MAX_PATH)
nSize = 500
lRet = GetModuleFileNameExA(hProcess, Modules(1), _
ModuleName, nSize)
List1.AddItem Left(ModuleName, lRet)
End If
End If
'Close the handle to the process
lRet = CloseHandle(hProcess)
Next
End Select
+ um modulo.
Até aí td beim(eu axo). O problema é que ao listar os processos, esse são listados com o caminho, não somente o nome.(ex: C:\Windows\System32\notepad.exe ao invés de notepad.exe)
Quando eu seleciono o processo e aperto um botao no form pra finalizar, não acontece nada.
Codigo do botao:
Dim i As Integer
'Percorre por todos itens do listbox
For i = 0 To List1.ListCount - 1
'Verifica se o item do listbox esta selecionado
If List1.Selected(i) Then
'Se estiver selecionado termina o processo'KillProcess List1.Selected(1)
Shell "taskkill /f /im List1.Selected(i)"
Eu já tentei usar Shell ("cmd taskkill -f -im " & (List1.Selected(1)))
ou algo similar...mas também n da certo porque ainda contem o caminho inteiro!
O que eu gostaria de fazer é:
Pegar td que esta escrito depois do ultimo "\" do caminho (já que o que vem depois é o nome do processo),jogar em uma variavel ou uma label pra que eu possa utilizar-lo pra finalizar.
Ou seja, "formatar" uma textbox ou label pra pegar so o nome do programa.
OBS: Estou disposto a mudar td o projeto pra um codigo novo ou uma nova ideia.
Se tiver algum link com um tuto ensinando a listar processos em um form(listbox, combobox e tal) e finalizar um processo selecionado (sem digitar o nome do processo)
Eu já encontrei como finalizar processos digitando o nome deles em uma textbox, mas eu não queria isso.
Desde já agradeço e mlz pelos erros de portugues >>> :D :blush:
Pergunta
Leafar1mc
Ola, eu preciso de uma ajuda. não consegui encontrar e não sei se é possivel resolver meu problema mas vamos la.
Eu estou (tentando) desenvolvendo um programa que lista os processos que estao rodando no pc em uma listbox, depois a pessoa iria escolher esse programa na lista e aperta um botao que iria finalizar o processo. Aí é que vem o problema: Eu não consigo finalizar o processo.
o comando(achei na net) pra listar o processo: Em um botao
+ um modulo. Até aí td beim(eu axo). O problema é que ao listar os processos, esse são listados com o caminho, não somente o nome.(ex: C:\Windows\System32\notepad.exe ao invés de notepad.exe) Quando eu seleciono o processo e aperto um botao no form pra finalizar, não acontece nada. Codigo do botao:Eu já tentei usar Shell ("cmd taskkill -f -im " & (List1.Selected(1)))
ou algo similar...mas também n da certo porque ainda contem o caminho inteiro!
O que eu gostaria de fazer é:
Pegar td que esta escrito depois do ultimo "\" do caminho (já que o que vem depois é o nome do processo),jogar em uma variavel ou uma label pra que eu possa utilizar-lo pra finalizar.
Ou seja, "formatar" uma textbox ou label pra pegar so o nome do programa.
OBS: Estou disposto a mudar td o projeto pra um codigo novo ou uma nova ideia.
Se tiver algum link com um tuto ensinando a listar processos em um form(listbox, combobox e tal) e finalizar um processo selecionado (sem digitar o nome do processo)
Eu já encontrei como finalizar processos digitando o nome deles em uma textbox, mas eu não queria isso.
Desde já agradeço e mlz pelos erros de portugues >>> :D :blush:
Editado por Leafar1mcAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.