Make(delphi) ver(4.04 build 185) Add(MainForm,2953706,70,119) { Height=345 Position=1 } Add(MultiElementEx,7432097,259,154) { @Hint=#21:Enum and Kill Process| link(onEnum,717641:doText,[(313,160)(313,181)]) link(Name,1136537:Text,[]) } BEGIN_SDK Add(EditMultiEx,12516692,21,21) { WorkCount=#37:doEnum=Перебирает запущенные процессы|38:doKill=Убивает процесс указаный в Name| EventCount=#37:onEnum=Выдает все запущенные процессы| VarCount=#37:Count=Количество запущенных процессов| DataCount=#31:Name=Имя процесса(explorer.exe)| Width=111 Height=81 link(doEnum,13171388:doEnum,[(42,27)(42,48)]) link(doKill,13171388:doKill,[(39,34)(39,55)]) link(Count,13171388:varCount,[(27,81)(69,81)]) } Add(VBJScript,13171388,63,42) { WorkPoints=#6:doEnum|6:doKill| EventPoints=#6:onEnum| VarPoints=#8:varCount| DataPoints=#4:Name| Script=#5:Dim n|23:Sub doWork(Data, Index)|21: Select Case Index|24: Case "doEnum"|56: Set DX = CreateObject("DynamicWrapperX")|0:|38: TH32CS_SNAPPROCESS = 2|30: MAX_PATH = 260|0:|59: ' Смещения членов структуры PROCESSENTRY32:|26: dwSize = 0|28: cntUsage = 4|33: th32ProcessID = 8|38: th32DefaultHeapID = 12|33: th32ModuleID = 16|31: cntThreads = 20|40: th32ParentProcessID = 24|35: pcPriClassBase = 28|28: dwFlags = 32|84: szExeFile = 36 ' Здесь буфер для имени процесса, длиной MAX_PATH.|16: |68: Size = 9 * 4 + MAX_PATH ' Размер структуры в байтах.|100: Struct = DX.Space(Size / 2, "") ' Здесь размер надо задавать в двухбайтных символах,|105: ' поэтому деление на 2. Пустая строка обнуляет структуру.|89: DX.NumPut Size, Struct, dwSize, "u" ' Пишем размер структуры в её начало.|16: |81: DX.Register "kernel32", "CreateToolhelp32Snapshot", "i=uu", "r=h"|81: DX.Register "kernel32", "Process32First", "i=hp", "r=l"|81: DX.Register "kernel32", "Process32Next", "i=hp", "r=l"|81: DX.Register "kernel32", "CloseHandle", "i=h", "r=l"|16: |74: hSnap = DX.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)|16: |65: DX.Process32First hSnap, Struct ' Первый процесс.|16: |100: pExeName = DX.StrPtr(Struct) + szExeFile ' Адрес строки с именем exe-файла процесса.|16: |70: List = DX.StrGet(pExeName, "s") ' Читаем имя в список.|42: n = 1 ' Счётчик процессов.|16: |53: While DX.Process32Next(hSnap, Struct)|65: List = List & vbCrLf & DX.StrGet(pExeName, "s")|27: n = n + 1|20: Wend|16: |36: DX.CloseHandle hSnap|16: |32: sys.onEnum List|24: Case "doKill"|158: Set Processes = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_Process where Name='" & sys.Name & "'")|45: for each Process in Processes|36: Process.Terminate(0)|20: Next|14: End Select|7:End Sub|0:|28:Function GetVar(Data, Index)|19: Select Case Index|19: Case "varCount"|29: GetVar = n |12: End Select|12:End Function| UseName=0 link(onEnum,12516692:onEnum,[(121,48)(121,27)]) link(Name,12516692:Name,[(69,24)(27,24)]) } END_SDK Add(Edit,1136537,259,91) { Left=10 Top=10 Width=370 } Add(Button,3155378,182,154) { Left=10 Top=35 Caption="Enum" link(onClick,7432097:doEnum,[]) } Add(Button,11491320,182,189) { Left=70 Top=35 Caption="Kill" link(onClick,7432097:doKill,[(236,195)(236,167)]) } Add(ListBox,717641,336,154) { Left=10 Top=65 Width=370 Height=245 DataType=1 link(onClick,1136537:doText,[(383,167)(383,68)(247,68)(247,97)]) } Add(Button,4209563,182,224) { Left=130 Top=35 Caption="Count" link(onClick,14085322:doText,[]) } Add(Label,14085322,259,224) { Left=195 Top=35 Width=10 Height=17 Caption="0" link(Text,7432097:Count,[]) }