Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Процессы, их уничтожение, Hook'и, WM_CLOSE Добавлено: 22.08.03 05:37  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru

На днях я вот эксперементировал с процессами с системными сообщениями. Сначала я захотел чтобы моя прога закрывала все экземпляры программы "блокнот". У меня получилось вот это:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Command1_Click()

Dim hw&

Do

hw& = FindWindow(vbNullString, "Безымянный - Блокнот")

SendMessage hw&, &H10, &O0, &O0

Loop Until hw& = 0

End Sub

Программа работает неплохо, но тут у меня возникла проблема. Я получал Handle окна которое хотел закрыть с помощью FindWindow, пытаясь найти заголовок. А если мне не известен заголовок окна или его просто нет, можно его как-нибудь закрыть? Например мне известен адрес екзешника, ну C:/Windows/internat.exe например. Как мне его выгрузить? (нет, я не собираюсь подсунуть вместо этого файла свой, я не вирусописатель, а борец за справедливость :-)) Я подумал, что можно TerminateProcess юзать, но я не пользовался пока, в книге Эплмана не рекомендуется её использовать, да там ещё надо ExitCode какой-то получать... Вобщем надо мне ещё подучиться с ней работать, если кто поможет примером-буду рад (тут на сайте скачивал пример Killer - штука класс, но там кажись часть функций в UserControl переложены, не могу разобраться до конца. Да и тут ещё один вопросик возникает: если мою прогу хотят убить TerminateProcess'ом то Form_Unload не выполняется, как мне зашитить свою прогу от гроханья чужыми? Буду рад если подскажите как во время этой ерунды выполнить Form_Unload или например, поставить Hook (как вы уже догадались-я не умею) и отловить TerminateProcess и WM_CLOSE.

Там есть событие Form_Terminate, но кажется оно не лучше Unload.

Спасибо за внимание.

Ответить

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

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



ICQ: 8440085 

Вопросов: 15
Ответов: 117
 Web-сайт: malyav.narod.ru
 Профиль | | #1
Добавлено: 22.08.03 07:27

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 Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

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

 

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

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

 

'ProcessList это список (через запятую) имен exeфайлов (без пути), процессы для которых нужно закрыть

Public Sub KillProcess(ProcessList As String)

Dim hSnapShot As Long, nProcess As Long

Dim uProcess As PROCESSENTRY32

Dim hProcess As Long

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #2
Добавлено: 22.08.03 12:20

Огромное спасибо! Код работает идеально. А про защиту и хуки не знаешь где мона инфу накачать?

Ответить

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



ICQ: 8440085 

Вопросов: 15
Ответов: 117
 Web-сайт: malyav.narod.ru
 Профиль | | #3
Добавлено: 22.08.03 14:15
Нет, никогда этим не интересовался. А что помог, приятно.

Ответить

Страница: 1 |

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



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