Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Процессы в винде Добавлено: 11.12.03 21:32  

Автор вопроса:  KAM | ICQ: 190197618 
Ребят, подскажите как вывести все процессы, идущие в винде например в лист бокс? Очень нужно, помогите пожалуйста.

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 11.12.03 22:30

А скачай ProcessExplorer  и смотри, там всякого интересного валом.

http://www.sysinternals.com/

Ответить

Номер ответа: 2
Автор ответа:
 Svetlana



ICQ: 262385618 

Вопросов: 43
Ответов: 205
 Профиль | | #2 Добавлено: 11.12.03 23:26
Vot tyt to chto tebe nado: http://vbnet.ru/faq/showtopic.asp?id=120 

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 12.12.03 17:17

Держи, от сердца отрываю, а точнее от своей программы, которой посвящен сайт, который всегда видно над моими ответами:

VERSION 5.00

Begin VB.Form frmProcesses

BorderStyle = 1 'Fixed Single

Caption = "Список активных процессов"

ClientHeight = 3630

ClientLeft = 45

ClientTop = 330

ClientWidth = 9480

BeginProperty Font

Name = "Tahoma"

Size = 8.25

Charset = 204

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

Icon = "frmProcesses.frx":0000

LinkTopic = "Form1"

MaxButton = 0 'False

MinButton = 0 'False

ScaleHeight = 242

ScaleMode = 3 'Pixel

ScaleWidth = 632

ShowInTaskbar = 0 'False

StartUpPosition = 1 'CenterOwner

Begin VB.CommandButton cmdHelp

Caption = "Справка"

Height = 375

Left = 7800

TabIndex = 21

Top = 3120

Width = 1575

End

Begin VB.Frame Frame1

Caption = "Информация о процессе"

Height = 2415

Left = 6120

TabIndex = 4

Top = 120

Width = 3255

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Идентификатор кучи:"

Height = 255

Index = 8

Left = 120

TabIndex = 20

Top = 1080

Width = 2100

End

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Флаги:"

Height = 255

Index = 7

Left = 120

TabIndex = 19

Top = 2040

Width = 2100

End

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Приоритет:"

Height = 255

Index = 6

Left = 120

TabIndex = 18

Top = 1800

Width = 2100

End

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Идентификатор модуля:"

Height = 255

Index = 5

Left = 120

TabIndex = 17

Top = 840

Width = 2100

End

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Исп. процессора (%):"

Height = 255

Index = 4

Left = 120

TabIndex = 16

Top = 1320

Width = 2100

End

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Число нитей:"

Height = 255

Index = 2

Left = 120

TabIndex = 15

Top = 1560

Width = 2100

End

Begin VB.Label Label11

Alignment = 1 'Right Justify

Caption = "Родительский процесс:"

Height = 255

Index = 1

Left = 120

TabIndex = 14

Top = 600

Width = 2100

End

Begin VB.Label lblCaption

Alignment = 1 'Right Justify

Caption = "Идентификатор процесса:"

Height = 255

Index = 9

Left = 120

TabIndex = 13

Top = 360

Width = 2100

End

Begin VB.Label lbl5

Height = 255

Left = 2400

TabIndex = 12

Top = 1080

Width = 735

End

Begin VB.Label lbl9

Height = 255

Left = 2400

TabIndex = 11

Top = 2040

Width = 735

End

Begin VB.Label lbl8

Height = 255

Left = 2400

TabIndex = 10

Top = 1800

Width = 735

End

Begin VB.Label lbl4

Height = 255

Left = 2400

TabIndex = 9

Top = 840

Width = 735

End

Begin VB.Label lbl6

Height = 255

Left = 2400

TabIndex = 8

Top = 1320

Width = 735

End

Begin VB.Label lbl7

Height = 255

Left = 2400

TabIndex = 7

Top = 1560

Width = 735

End

Begin VB.Label lbl3

Height = 255

Left = 2400

TabIndex = 6

Top = 600

Width = 735

End

Begin VB.Label lbl2

Height = 255

Left = 2400

TabIndex = 5

Top = 360

Width = 735

End<

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 12.12.03 17:19

Продолжение, за один раз все не вместилось:

Begin VB.CommandButton cmdTerminate

Caption = "Завершить"

Height = 375

Left = 6120

TabIndex = 3

Top = 3120

Width = 1575

End

Begin VB.CommandButton cmdRefresh

Caption = "Обновить"

Height = 375

Left = 6120

TabIndex = 2

Top = 2640

Width = 1575

End

Begin VB.CommandButton cmdOK

Cancel = -1 'True

Caption = "OK"

Default = -1 'True

Height = 375

Left = 7800

TabIndex = 1

Top = 2640

Width = 1575

End

Begin VB.ListBox lstProcs

Appearance = 0 'Flat

BackColor = &H00000000&

BeginProperty Font

Name = "Courier New"

Size = 8.25

Charset = 204

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H0000FF00&

Height = 3390

ItemData = "frmProcesses.frx":000C

Left = 120

List = "frmProcesses.frx":000E

TabIndex = 0

Top = 120

Width = 5895

End

End

Attribute VB_Name = "frmProcesses"

Attribute VB_GlobalNameSpace = False

Attribute VB_Creatable = False

Attribute VB_PredeclaredId = True

Attribute VB_Exposed = False

Dim p(1000) As PROCESSENTRY32, nop As Long

Private Sub cmdTerminate_Click()

Dim hProcess As Long

hProcess = OpenProcess(&H1F0FFF, 1, p(lstProcs.ListIndex).lProcessId)

TerminateProcess hProcess, 0

Sleep 200

cmdRefresh_Click

End Sub

Private Sub lstProcs_DblClick()

On Error Resume Next

Dim SelectedProcess As String, PathToFile As String

SelectedProcess = lstProcs.List(lstProcs.ListIndex)

PathToFile = Left(SelectedProcess, InStrRev(SelectedProcess, "\") - 1)

ShellExecute 0, "open", PathToFile, "", "", 1

End Sub

Private Sub lstProcs_KeyUp(KeyCode As Integer, Shift As Integer)

On Error Resume Next

If lstProcs.ListIndex > -1 Then ShowPTips (lstProcs.ListIndex)

End Sub

Private Sub lstProcs_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

On Error Resume Next

If lstProcs.ListIndex > -1 Then ShowPTips (lstProcs.ListIndex)

End Sub

Private Sub lstProcs_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

On Error Resume Next

If lstProcs.ListIndex > -1 Then ShowPTips (lstProcs.ListIndex)

End Sub

Private Sub cmdOK_Click()

On Error Resume Next

Unload Me

End Sub

Private Sub cmdRefresh_Click()

On Error Resume Next

LoadProcesses

End Sub

Private Sub Form_Load()

On Error Resume Next

cmdRefresh_Click

End Sub

Private Sub LoadProcesses()

On Error Resume Next

Dim sExeName As String, r As Long, uProcess As PROCESSENTRY32

lSnapShot = CreateToolhelpSnapshot(2&, 0&)

If lSnapShot <> 0 Then

nop = 0

uProcess.lSize = Len(uProcess)

r = ProcessFirst(lSnapShot, uProcess)

Do While r

p(nop) = uProcess

nop = nop + 1

r = ProcessNext(lSnapShot, uProcess)

Loop

CloseHandle lSnapShot

ShowProcesses

End If

End Sub

Private Sub ShowProcesses()

On Error Resume Next

Dim i As Long, MaxLen As Long, PName As String

MaxLen = 0

lstProcs.Clear

For i = 0 To nop - 1

PName = Left(p(i).sExeFile, InStr(p(i).sExeFile, Chr(0)) - 1)

lstProcs.AddItem PName

If Len(PName) > MaxLen Then MaxLen = Len(PName)

Next

lstProcs.ListIndex = 0

SendMessage lstProcs.hwnd, LB_SETHORIZONTALEXTENT, 7 * (MaxLen + 2), 0

Me.Caption = "Список активных процессов (" & CStr(nop) & ")"

End Sub

Private Sub ShowPTips(i As Long)

On Error Resume Next

lbl2 = String(8 - Len(Hex(p(i).lProcessId)), "0") & Hex(p(i).lProcessId)

lbl3 = String(8 - Len(Hex(p(i).lParentProcessId)), "0") & Hex(p(i).lParentProcessId)

lbl4 = String(8 - Len(Hex(p(i).lModuleId)), "0") & Hex(p(i).lModuleId)

lbl5 = String(8 - Len(Hex(p(i).lDefaultHeapId)), "0") & Hex(p(i).lDefaultHeapId)

lbl6 = p(i).lUsage

lbl7 = p(i).lThreads

lbl8 = p(i).lPriClassBase

lbl9 = p(i).lFlags

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 13.12.03 08:14

Ребята, давайте не будем флудить в форуме.

Что тяжело написать ки на форму пару кнопок; или ForeColor=Color ?

Ответить

Номер ответа: 6
Автор ответа:
 KAM



ICQ: 190197618 

Вопросов: 25
Ответов: 97
 Профиль | | #6 Добавлено: 15.12.03 18:44
Sharp, есть проблема - нехватает объявлений АПИ функций, а мой АПИ-гид половину не показывает...

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 16.12.03 02:13

Т.е. как это не показывает? Они все взяты из стандартного API Viewer.

Ответить

Номер ответа: 8
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #8 Добавлено: 16.12.03 12:36

2Sharp: а чего ты удивляешься? У тебя такого не было?? У меня лично было...

Ответить

Номер ответа: 9
Автор ответа:
 KAM



ICQ: 190197618 

Вопросов: 25
Ответов: 97
 Профиль | | #9 Добавлено: 16.12.03 16:10

Нет таких вункций:

CreateToolhelp32Snapshot

CкeateToolhelpSnapshot

ProcessFirst

Первые две я всё-таки вывел, а вот все которые используются после ProcessFirst (включительно) отсутсвуют (ну может за исключением некоторых).

Невидно и структуру PROCESSENTRY32.

Но я её врде перевёл, вот что у меня получилось:

Public Type PROCESSENTRY32
    lSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    lFlags As Long
End Type

Короче, мне нужны обявления...

 

Ответить

Номер ответа: 10
Автор ответа:
 KAM



ICQ: 190197618 

Вопросов: 25
Ответов: 97
 Профиль | | #10 Добавлено: 17.12.03 18:09

2Sharp: Так ты мне дашь декларесы этих API функций и структур?

Очень нужно...

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 17.12.03 22:43

Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)

Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessId As Long) As Long

Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Public Type PROCESSENTRY32

lSize As Long

lUsage As Long

lProcessId As Long

lDefaultHeapId As Long

lModuleId As Long

lThreads As Long

lParentProcessId As Long

lPriClassBase As Long

lFlags As Long

sExeFile As String * MAX_PATH

End Type

А вообще же, поставь MASM32 и юзай егойный windows.inc, тогда у тебя с объявлениями API проблемы больше никогда не возникнут...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам