powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / порядок строк в ListView'e
15 сообщений из 15, страница 1 из 1
порядок строк в ListView'e
    #34089354
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Имеется небольшая проблемка, чтобы ее решить нужно в немного поработать с операторами.
вот код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
Option Explicit

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 *  260 
End Type

Private Const ParseMe   As String = ""    'I'll use this variable (chr(1)) to split up a string.

Private Declare Function CreateToolhelp32Snapshot Lib "KERNEL32.DLL" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "KERNEL32.DLL" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "KERNEL32.DLL" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "KERNEL32.DLL" (ByVal hHandle As Long) As Long
Private Declare Function OpenProcess Lib "KERNEL32.DLL" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Function CleanItUp(ByVal strOrig As String) As String

    CleanItUp = Left$(strOrig, InStr(strOrig, vbNullChar) -  1 )
     'shortens the original by stopping at the first vbNullChar it comes to

End Function


Private Sub Command1_Click()

Dim pProcesses As String   'declare variables
Dim lList()    As String
Dim I          As Long
    List1.Clear 'Clear List1 of any existing information
    pProcesses = GetTheProcesses 'see the function GetTheProcesses
    lList = Split(pProcesses, ParseMe) 'adds data to the string array as needed
    For I =  0  To (UBound(lList) -  1 ) 'starts a loop so we can add to List1
AddinList (txtData)
        I = I +  1 
         'We've already used I + 1 in the above line.
             'There's a better way of doing this with a ListView control, but that's not what
             'this Demo is for.  I wanted to keep it as simple as possible.
    Next I 'next loop

End Sub

Private Function GetTheProcesses() As String

Dim pProcess  As PROCESSENTRY32  'declare variables
Dim sSnapShot As Long
Dim rReturn   As Integer

    sSnapShot = CreateToolhelp32Snapshot( 15 ,  0 ) 'setting variables
    pProcess.dwSize = Len(pProcess)
    Process32First sSnapShot, pProcess 'gets the first process ([System Process])
    Do 'starts another loop
        GetTheProcesses = GetTheProcesses & CleanItUp(pProcess.szExeFile) & ParseMe & pProcess.th32ProcessID & ParseMe 'adds to the string variable the next process and ID
        rReturn = Process32Next(sSnapShot, pProcess)
         'gets the next process so we know to loop again
        DoEvents 'free's up the computer
    Loop While rReturn <>  0  'as long as there's a next process, we'll loop again
    CloseHandle sSnapShot 'frees up the handle

End Function

Sub AddinList(txtData As String)
Dim Str1 As String, Str2 As String
Dim Position As Long, LItem As ListItem
    
    TaskmanagerFrm.TaskListView.ListItems.Clear
    While Len(txtData) >  0 

Str2 = Val(txtData)

    
        Position = InStr( 1 , txtData, "")
        Str1 = Left(txtData, Position -  1 )
        txtData = Mid(txtData, Position +  1 )
        Set LItem = TaskmanagerFrm.TaskListView.ListItems.Add(, , Str1, ,  1 )
      LItem.SubItems( 1 ) = Str2
    Wend
End Sub
Как сделать чтобы в ListWiev1 напротив процесса стоял его PID ??
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34089408
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно весь проект целиком
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34089662
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот проект, мне надо сделать чтобы на против процсса был написан его PID, а снизу убрать PID,но самое главное чтобы процесс сохранялся в текстовай переменной, а его PID в Long, то есть при выделении item отделно выбирался процесс и PID.
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34089969
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно заодно и файлик Form1.frm закинуть...
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34090416
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин извени, забыл ))
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34091520
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я правильно понял
нужно разрезать текст по твоему символу и получить только отдельные тексты
для каждой строки

а почему сразу не заносить в ListView без текстовой переменной
или использовать функцию Split чтобы резать текст

если я правильно понял
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34091623
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на держи
это код на Form1

модуль не нужен

Status поменял на PID

думаю что ты хотел так

--------------------------------------------------------------------------


'You can get CODE FIXER at: 53297&lngWId=1

Option Explicit

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 * 260
End Type

Dim LItem As ListItem

Private Declare Function CreateToolhelp32Snapshot Lib "KERNEL32.DLL" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "KERNEL32.DLL" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "KERNEL32.DLL" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "KERNEL32.DLL" (ByVal hHandle As Long) As Long
Private Declare Function OpenProcess Lib "KERNEL32.DLL" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Function CleanItUp(ByVal strOrig As String) As String

CleanItUp = Left$(strOrig, InStr(strOrig, vbNullChar) - 1)
'shortens the original by stopping at the first vbNullChar it comes to

End Function

Private Sub Command1_Click()
Dim txtdata As Integer
Call GetTheProcesses
End Sub


Private Sub GetTheProcesses()

Dim pProcess As PROCESSENTRY32 'declare variables
Dim sSnapShot As Long
Dim rReturn As Integer
Dim Str1 As String, Str2 As String
Dim Position As Long, LItem As ListItem

sSnapShot = CreateToolhelp32Snapshot(15, 0) 'setting variables
pProcess.dwSize = Len(pProcess)
Process32First sSnapShot, pProcess 'gets the first process ([System Process])

TaskListView.ListItems.Clear

Do 'starts another loop
Str1 = CleanItUp(pProcess.szExeFile)
Str2 = pProcess.th32ProcessID

rReturn = Process32Next(sSnapShot, pProcess)
'gets the next process so we know to loop again
DoEvents 'free's up the computer

Set LItem = Form1.TaskListView.ListItems.Add(, , Str1, , 1)
LItem.SubItems(1) = Str2

Loop While rReturn <> 0 'as long as there's a next process, we'll loop again

CloseHandle sSnapShot 'frees up the handle

End Sub


Private Sub Form_Load()
With TaskListView
.ColumnHeaders.Add , , "Task", .Width / 2 * 1
.ColumnHeaders.Add , , "PID", .Width / 3
.View = lvwReport
End With
End Sub


Private Sub TaskListView_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
TaskListView.SortKey = ColumnHeader.Index - 1
If TaskListView.SortOrder = lvwAscending Then
TaskListView.SortOrder = lvwDescending
Else
TaskListView.SortOrder = lvwAscending
End If
TaskListView.Sorted = True
End Sub
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34092305
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да все норм, просто есть небольшой недочет
Когда я выделяю стоку в List.item передается переменная с названием процесса, но хотелось бы чтобы Pid можно было тоже выделить и передать его другой переменной.
А так РЕспект!
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34092336
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давай завтра

если я понял
то это тоже не проблема
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34092556
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВОбщем в String я уже сделал
вот:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim a as String
On Error Resume Next
    Set LItem = TaskListView.SelectedItem
    If Len(LItem.Text) >  0  Then
     a =  MsgBox Trim(LItem.Text) ' текстовая переменная

    End If
Так же пытался сделать, чтобы перводить в числа, только за место Trim ставил Val, но этот оператор мне ничем не помог, все равно возвращает 0.
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34093759
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для SelectedItem можно получать и значения из каждой колонки тоже
не только первую
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34094022
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже понял что можно получать значения для 2 колонки, но как это сделать програмно?
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34094058
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, ура я сам разобрался
Вот решение:
Код: plaintext
1.
MsgBox LItem.SubItems( 1 )
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34094082
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private Sub Command2_Click()
If Not TaskListView.SelectedItem Is Nothing Then
MsgBox TaskListView.SelectedItem.ListSubItems(1).Text
End If
End Sub

ещё кнопка и код для неё

странно ты используешь в своём коде API
это уже фигуры высшего пилотажа
а как использовать ListView не знаешь
...
Рейтинг: 0 / 0
порядок строк в ListView'e
    #34094389
Kifir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да ладно, я просто перебрался от начала изучения до сегодняшнего дня, пропустив при этом немало ценной мне информации.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / порядок строк в ListView'e
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]