Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Preciso de Ajuda em textBox VB6


Leafar1mc

Pergunta

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:

Editado por Leafar1mc
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

nossa, mas você fez o codigo mais dificil de td q seria pra finalizar os processos e ta com dificuldade no mais facil??

é só tratar a string, você pode fazer isso facinho com a funcao Split() por exemplo. ou ainda usar outras funcoes de string, como Mid(), Right(), InStr(), StrReverse(), etc, faca uma busca por ai.

Link para o comentário
Compartilhar em outros sites

  • 0

cara, vlw, eu dei uma olhada na net e axei um mode de fazer com split.

Mas agora tem um problema

quando eu utilizo split, tem como eu fazer algo pra ele checar quantos de um caracter tem em uma text box?

tipo assim: eu crio uma textbox onde a pessoa vai digitar um caminho de um arquivo, então quando ela clicar num botao, vai aparecer o nome do arquivo

a pessoa digita lá na textbox C:\Windows\System32\notepad.exe

ai que entra o teste, se caso não ouverem mais >>\<< então uma mensagem surgiria com o que tem na frente da ultima >>\<< que seria "notepad.exe"

mlz se for pedir muito.

e dinovu eu agradeço pela resposta, foi muito util.

Link para o comentário
Compartilhar em outros sites

  • 0

Ah..depois de incançaveis pesquisas...hah..zuera..

encontrei o que eu queria :D :D :D :D :D :D

vlw pela ajuda kuroi B) B) B)

Se caso alguém precisar: tah ai o codigo que eu encontrei ^_^

é so adaptar

'esse codigo voce pode botar em um botao, pra quando você aperta, ele te de o nome do arquivo que tah no caminho digitado em uma textbox
Dim lngIndex
Dim lngStrLen
Dim strFullPath
Dim strFileName
'Esse código vai extrair o nome do arquivo do caminho que foi digitado na textbox
strFullPath = Text1.Text 'textbox que recebe o caminho do arquivo
lngStrLen = Len(strFullPath)
For lngIndex = lngStrLen To 1 Step -1
If Mid(strFullPath, lngIndex, 1) = "\" Then
strFileName = Right(strFullPath, lngStrLen - lngIndex)
Exit For
End If
Next
MsgBox "O nome do arquivo é: " & strFileName

falou ae

Link para o comentário
Compartilhar em outros sites

  • 0
quando eu utilizo split, tem como eu fazer algo pra ele checar quantos de um caracter tem em uma text box?

só pra complementar, se você quisesse fazer com o Split(), era só usar o Ubound() pra pegar o ultimo indice. exemplo:

Tex1.Text = "C:\Windows\System32\notepad.exe"

x = Split(Text1.Text, "\")
processo = x(Ubound(x)) 'recebe "notepad.exe"[/code]

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...