| История развития программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
HTML parsen 2 иконки в Treeview Помогите с ошибкой Сохранение и загрузка текста в TextBox Мультипоточность ctrl+alt+del, ctrl+alt+del имеет ли текстбокс фокус? activeskin, поиск Как округлить число SOS!!! Поиск файлов по шаблону, как найти все файлы с расширением jpg Работа с файлом Как разработать hlp-файл?, WhatsThisHelpID и hlp-файл Вопрос про счетчик сумма чётных и нечётных, сумма чётных и нечётных Переключатели в меню Большой текст в TextBox Добавление тулбара и меню Как Вы относитесь к курящим девушкам? Количество запрашиваемых записей, ADODB Русский язык в VBScript, Проблемма с русским языком в скриптах Нужен счетчик что работает быстрее?, оптимизация, и всё с ней связанное. Перехват сообщений модема Поля в принтере Компилирование програм на VB6 Как прикрепить рисунок Какая функция отсекает лишнюю часть числа Работа c Диспечтером Задач, Как программно убить задачу перехват данных АОН, Перехват потока сообщений системы Создание картотеки как в windows 3.1, Как это сделать? Как программно сделать копию экрана? Зарезервированые слова JTree, функция mark/unmark folder Изменение свойств окна, В чужой программе Данные внутри программы Текстовые переменные, Не знаю как отобразить суть. Открытие БД с паролем, Как открыть защищенную БД Access Цвет шрифта на кнопке, winapi Как создать объект? ошибка!!!!, помогите разобраться в чём дело SHChangeIconDialog, не возвращается путь к файлу... Как отловить изменение ширины столбца MSFlexGrid Запуск приложений на удаленном компьютере, Запуск приложений через ЛС на удаленном Хук событий Дистрибутив, Как его сделать Сохранить рисунок в jpg,gif или bmp, Нарисованный в программе Data, Проблемы с подключением txt файла Что такое хост SMTP?, Что такое хост SMTP? Select case совместимость ВБ и МсВорда, как из ВБ управлять полями в ворде Использование QueryDef Иконки, как програмно.... Создание базы данных Не работает МсВорд когда стоит ВБ6 Оптимизация программ API функции для COM порта vpn подключение ListBox не отражает свойство Font.Charset, ListBox не отражает свойство Font.Charse Файлы произвольного доступа Аудиограббер, Можно его написать в VB6? Как упростить код, Как упростить код Мультфильмы, Как делать мультфильмы в Basic? Как Вы относитесь к курящим девушкам? Только числа, Опять я дурак... из ВБ в ВБА срочно, перевести код из обычного ВБ в ВБА Программирование для мобильных, Что выбрать? Крестик, Крестик Переменные в VB6 VBA, программирование на VBA |
Платные хостинги Раскрутка сайта Книги по программированию Работа c Диспечтером Задач, Как программно убить задачу
- Как программно убить процесс с именем например name.exe, висящий в Диспетчере Задач, Именно УБИТЬ, а не Снять задачу. - Вот нашел на каком-то сайте пример:Код Declare Function RegisterServiceProcess Lib "kernel32.dll" _ (ByVal dwProcessId As Long, ByVal dwType As Long) As Long Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long 'Для скрытия: RegisterServiceProcess GetCurrentProcessId, 1 'Для показа: RegisterServiceProcess GetCurrentProcessId, 0highlightSyntax('vbhMzU4O','vb');Код sub main() app.TaskVisible = false 'мой код end subhighlightSyntax('vbDVlZGU','vb');Может ли кто-нибудь объяснить мне как этим пользоваться? Добавлено @ 15:43 Опять что-ли подключать kernel32.dll из winnt\system32 через Recent - так не работает, пишет ошибочка вышла. Это сообщение отредактировал Voldemar2004 - 23.3.2005, 15:42 - Вот еще сам вывел:Код Private Sub Command1_Click()Ogg = App.ThreadIDShell ("c:\OggShell\oggenc")MsgBox OggEnd SubhighlightSyntax('vbNWE4Nz','vb');только показывает номер не того процесса, который мне нужен, а процесс формы. Надо показать PID Shell'a. - Voldemar2004причем тут функция, скрывающая процесс в диспетчере задач win9x (RegisterServiceProcess) я не понял, а пользоваться ей так:Код Const RSP_SIMPLE_SERVICE = 1Const RSP_UNREGISTER_SERVICE = 0Private Declare Function GetCurrentProcessId Lib "kernel32" () As LongPrivate Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As LongPublic Sub MakeMeService() Dim pid As Long, reserv As Long 'получаем ID текущего процесса pid = GetCurrentProcessId() 'регистрируем его как сервис regserv = RegisterServiceProcess(pid, RSP_SIMPLE_SERVICE)End SubPublic Sub UnMakeMeService() Dim pid As Long, reserv As Long pid = GetCurrentProcessId() 'здесь, думаю, и так понятно :) regserv = RegisterServiceProcess(pid, RSP_UNREGISTER_SERVICE)End SubPrivate Sub Form_Load() MakeMeServiceEnd SubPrivate Sub Form_Unload(Cancel As Integer) UnMakeMeServiceEnd SubhighlightSyntax('vbjkxMGV','vb');Но прошу обратить внимание, что эта функция работает только в видовс 9х и не поддерживается в NTА по поводу "убивания" есть много способов, конечно проще всего убивать процесс, если он имеет какие-нть окна. Смотря как стоит задача...если надо, могу сляпать примерчик, только конкретизируй условия. - У меня win NT 5.x. Ну пример такой: имеется консольная прога oggenc.exe я сделал так чтоб она была невидима для глаз юзера свойством vbHide, в диспетчере задач она видна естественно как процесс с именем oggenc.exe. В диспетчере задач - ну там где приложения она не видна, но если убрать vbHide то она будет видна в окне "Приложения".Код Shell ("c:\OggShell\oggenc --bitrate 500 c:\filename.wav"), vbHidehighlightSyntax('vbEzMzYx','vb');Короче вопрос такой: как убить процесс с именем oggenc.exe, который невидим в диспетчере приложений, но висит в процессах. Добавлено @ 15:58 Ну и сели кто знает как там вывести список всех процессов из Диспетчера Задач в текстовый файл, напишите. Так я сам думаю, что надо в таймер воткнуть инфу об активных процессах - одни запускаются, другие завершаются. - Да и еще вот нашел в Инете примерчик я его упростил немножко, уж больно здоровый код получается: бросаем на форму две кнопочки butt1 - убить процесс, вторая - обновить информацию о процессах, два ListBox:Код Private Sub Command1_Click() Call KillProc(prArray(List1.ListIndex).th32ProcessID) DoEvents Call Command2_Click End SubPrivate Sub Command2_Click() List1.Clear Call Form_LoadEnd SubPrivate Sub Form_Load() For i = 0 To GetProcess(prArray) - 1 Call List1.AddItem(prArray(i).szExeFile) NextEnd SubPrivate Sub List1_Click() Dim mArray() As MODULEENTRY32 List2.Clear For i = 0 To GetProcessModule(mArray(), prArray(List1.ListIndex).th32ProcessID) - 1 Call List2.AddItem(mArray(i).szModule) NextEnd SubhighlightSyntax('vbiNTlkM','vb');создаем модуль:Код Option ExplicitPrivate Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As LongPrivate Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As LongPrivate Declare Function Module32First Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lpme As MODULEENTRY32) As LongPrivate Declare Function Module32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lpme As MODULEENTRY32) As LongPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As LongPrivate Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpExitCode As Long) As LongPrivate Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As LongPrivate Declare Function GetModuleFileNameEx Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hPass As Long) As LongPrivate Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, ByRef NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, ByRef PreviousState As TOKEN_PRIVILEGES, ByRef ReturnLength As Long) As LongPrivate Declare Function GetCurrentProcess Lib "kernel32.dll" () As LongPrivate Declare Function GetLastError Lib "kernel32.dll" () As LongPrivate Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As LongPrivate Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, ByRef TokenHandle As Long) As LongPrivate Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As LongPrivate Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 ' Maintenance string for PSS usageEnd TypePublic 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 * 260End TypePublic Type MODULEENTRY32 dwSize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Long modBaseSize As Long hModule As Long szModule As String * 256 szExePath As String * 260End TypePrivate Type LUID LowPart As Long HighPart As LongEnd TypePrivate Type TOKEN_PRIVILEGES PrivilegeCount As Long TheLuid As LUID Attributes As LongEnd TypePrivate Const TOKEN_ADJUST_PRIVILEGES As Long = &H20Private Const TOKEN_QUERY As Long = &H8Private Const SE_PRIVILEGE_ENABLED As Long = &H2Private Const SE_DEBUG_NAME As String = "SeDebugPrivilege"Private Const VER_PLATFORM_WIN32_NT As Long = 2Public Function GetProcess(outData() As PROCESSENTRY32) As Long Dim hSnapshot As Long, uProcess As PROCESSENTRY32 hSnapshot = CreateToolhelpSnapshot(&H2, 0) If hSnapshot = &HFFFF Then GetProcess = &HFFFF: Exit Function uProcess.dwSize = Len(uProcess) Call Process32First(hSnapshot, uProcess) Do ReDim Preserve outData(GetProcess) With uProcess .szExeFile = Left(.szExeFile, InStr(vbNull, .szExeFile, vbNullChar) - vbNull) End With outData(GetProcess) = uProcess uProcess.szExeFile = String(260, &H0) GetProcess = GetProcess + vbNull Loop While (Process32Next(hSnapshot, uProcess)) Call CloseHandle(hSnapshot)End FunctionPublic Sub KillProc(ID As Long) Dim hProcess As Long, _ lExitCode As Long Dim OSVER As OSVERSIONINFO OSVER.dwOSVersionInfoSize = Len(OSVER) Call GetVersionEx(OSVER) If OSVER.dwPlatformId = VER_PLATFORM_WIN32_NT Then _ hProcess = OpenProcess(&H400 Or &H1, 0&, ID) Call GetExitCodeProcess(hProcess, lExitCode) Call TerminateProcess(hProcess, lExitCode) Call CloseHandle(hProcess) End IfEnd SubhighlightSyntax('vb4YTRmM','vb');Но это слишком гемморно, нужно что-то попроще. - Естественно, ты же сам это и попросил!Код Ogg = App.ThreadIDhighlightSyntax('vbDBlYjE','vb');Попробуй так:Код Dim hShellProc&hShellProc=Shell("Твой путь")highlightSyntax('vbNDg0Y2','vb');Вот вырезка из MSDN:Runs an executable program and returns a Variant (Double) representing the program's task ID if successful, otherwise it returns zero.Т.е в hShellProc и будет искомый процесс.Разбери предыдущий код, там написано как убить процесс! - Voldemar2004в твоем листинге все популярно написано...ну ладна, смотри:допустми pID у тебя уже есть, тогда получаем hProcess путем открытия его c необходимыми флагами:Код hProcess = OpenProcess(&H400 Or &H1, 0&, ID) ' ID - соответственно pIDhighlightSyntax('vbjEwNTI','vb');Убиваем процесс по полученному хэндлу:Код TerminateProcess(hProcess, 0)highlightSyntax('vbN2EyZD','vb');Освобождаем открытый хэндл:Код CloseHandle(hProcess)highlightSyntax('vbYzdhMm','vb');Вот и все! - в General кидаем:Код Dim hShellProc As IntegerDim ID As IntegerPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hPass As Long) As LonghighlightSyntax('vbI2MGM1','vb');кнопка запуска процесса:Код hShellProc = 'вызываем exe-шник: путь + имя.exeLabel1.Caption = "№ ПРОЦЕССА: " & hShellProchighlightSyntax('vblZjFkO','vb');Код 'кнопка убийства процессаID = hShellProchProcess = OpenProcess(&H400 Or &H1, 0&, ID)Call TerminateProcess(hProcess, 0)Call CloseHandle(hProcess)highlightSyntax('vbYWRjMD','vb'); Это сообщение отредактировал Voldemar2004 - 16.4.2005, 20:47 |