Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.128.199.130] |
|
Сообщ.
#1
,
|
|
|
Как сделать так, чтобы программу не было видно в процессах? И если можно, чтобы диспетчеры (NT, TaskInfo) ее не видели.
|
Сообщ.
#2
,
|
|
|
Option Explicit
Private Declare Function RegisterServiceProcess Lib "kernel32.dll" _ (ByVal dwProcessId As Long, ByVal dwType As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long Private Sub toVisible() Call RegisterServiceProcess(GetCurrentProcessId, 0) End Sub Private Sub toInvisible() Call RegisterServiceProcess(GetCurrentProcessId, 1) End Sub или Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Private Sub Form_Load() RegisterServiceProcess GetCurrentProcessId, 1 'Hide app End Sub Private Sub Form_Unload(Cancel As Integer) RegisterServiceProcess GetCurrentProcessId, 0 'Remove service flag End Sub |
Сообщ.
#3
,
|
|
|
Малоизвестный факт, но все гораздо проще. Всего-то строка:
app.visible = false ... и все. |
Сообщ.
#4
,
|
|
|
Любой процесс можно увидеть, если знать где смотреть.
Не знаю как в Win NT, а в 98 можно запустить 16-разрядный процесс, его точно не видно. |
Сообщ.
#5
,
|
|
|
to AlexR
В кернел32 нет функции RegisterServiceProcess. Can't find DLL entry point RegisterServiceProcess in kernel32.dll to Emerald Это как использовать? Ставил в форм_лоад - он пишет: Method or Data member not found to Vasya2000 И как запустить 16-и разрядный процесс? |
Сообщ.
#6
,
|
|
|
ты вообще правильно ее используешь?
Public Declare Function GetCurrentProcessId Lib "kernel32" _ () As Long Public Declare Function RegisterServiceProcess Lib "kernel32" _ (ByVal dwProcessID As Long, ByVal dwType As Long) As Long Dim ret As Long ret = RegisterServiceProcess(GetCurrentProcessId, 1) |
Сообщ.
#7
,
|
|
|
не знаю как запускать 16-разрядный процесс, но он точно запускается. на вижуал бейсике не получится такая прога. на си - может быть, а на бейсике - фиг.
|
Сообщ.
#8
,
|
|
|
кстати, у тебя какой windows?
|
Сообщ.
#9
,
|
|
|
to Vasya2000
Использую вроде правильно, все уже перепробовал.. Когда пытаюсь запустить, пишет: Can't find DLL entry point RegisterServiceProcess in kernel32.dll может это из-за того, что я под NT? |
Сообщ.
#10
,
|
|
|
ясен перец из-за этого. NT использует
другие библиотеки. |
Сообщ.
#11
,
|
|
|
В NT эту ф-ю убрали намеренно для того, чтобы ни один предательский вирус не смог себя скрыть. В NT видны все процессы, без исключения! Чтобы нельзя было закрыть приложение в NT, либо через ASM, обращаясь к стеку памяти, стирают имя класса окна или винд-ворд, например. На VB это просто невозможно. Остаётся лишь «система пяти окон»!
|
Сообщ.
#12
,
|
|
|
Lamer, а что такое "система пяти окон"?
|
Сообщ.
#13
,
|
|
|
Принцип работы этой системы вытекает из принципа мультизадачности Windows. То есть, если ты не в курсе, процессор не выполняет все проги виндов одновременно, согласно распоряжениям Windows он выделяет каждому приложению определённое системное время (по дефалту около тысячной миллисекунды или такту). В течение этого времени он выполняет некоторый процесс (изменяет или читает всего несколько десятков байт, так называемое «слово»), а затем переключается на следующий в очереди. В Windows все проги являются окнами, скрытыми от юзеровских глаз. Так вот если запустить прогу пять раз, то есть создать 5 окон, и эти окна каждую миллисекунду будут проверять наличие друг друга, причём если кол-во экземпляров меньше пяти, то запускать себя ещё и ещё раз, пока окон не будет опять пять экземпляров. Почему пять? Да потому, что пять окон не возможно прикрыть за один такт, и никакая другая прога (типа диспетчера задач) не сможет прикрыть все экземпляры!
|
Сообщ.
#14
,
|
|
|
Lamer, а ты крут
|
Сообщ.
#15
,
|
|
|
плохА..
принцип 5ти окон не работает, а асм я пока не знаю... Может кто знает, хотя бы, как отключить alt? |
Сообщ.
#16
,
|
|
|
Есть надежный способ - выломать все лишние кнопки с клавиатуры.
|
Сообщ.
#17
,
|
|
|
Не, есть способ еще круче - надо вообще выкинуть клаву и оставить только джойстик!
|
Сообщ.
#18
,
|
|
|
Ещё проще: поставить MS-DOS - там никакие процессы точно не будут видны )
|
Сообщ.
#19
,
|
|
|
А можно просто выкинуть монитор...
|
Сообщ.
#20
,
|
|
|
Большое спасибо за советы!
Кнопки из клавы уже отковырял, присабачил джойстик от спектрума, сижу, вот, монитор разбираю, пытаюсь наити чип, который отвечает за вывод на экран запущенных процессов. Жаль что на них не написано, два раза уже ошибся. Теперь он почему-то сильно гудит и издает какие-то странные запахи, когда включается, а включается и выключается когда захочет. А вот под мэсэдосом мои проги вообще не запускаются. Странно, правда? ПаРаДоКС, однако.. cr |
Сообщ.
#21
,
|
|
|
а я вообще начинал кодить на басике в БК-0010. Советую тебе папробовать.
|
Сообщ.
#22
,
|
|
|
К черту басик и бк0010. есть же программируемые микрокалькуляторы!!
|
Сообщ.
#23
,
|
|
|
но там нет басика ...
|
Сообщ.
#24
,
|
|
|
там еще нет кнопки альт и процессы невидимые, стелс мать его, понимаешь
|
Сообщ.
#25
,
|
|
|
ну если на то пошло, то на счётах вообще нет кнопок, сплошные костяшки ...
|
Сообщ.
#26
,
|
|
|
Мне кажется, что для нормальной задачи невидимость вообще-то не нужна. Все эти вопросы про невидимость (а они в этом форуме появляются чуть не каждую неделю) нужны для написания всяких гадов. Уча людей подобным фокусам мы потом можем сами получить такую програму по e-mail
|
Сообщ.
#27
,
|
|
|
To al:
Почему обязательно гадов? Я, например, пишу программу для контроля доступа к машине, когда этот самый доступ платный (например, интернет-кафе или гейм-клуб). В NT с этим проблемм нет, но в 95, 98 такие функции напрочь отсутствуют. Допустим, по истечении оплаченного времени, запускается окно, которое закрывает весь экран, является постоянно активным и требует ввода пароля для выгрузки себя (упрощенный вариант). Необходимо отключить: alt+tab, alt+F4, ctrl+alt+del и скрыть процесс с глаз долой, чтобы его не могли завершить... alt+tab и alt+F4 я уже преодолел... Если не хотите делиться со всеми, напишите, хотя бы на емыльник(cr@inett.ru).. Буду очень благодарен! cr |
Сообщ.
#28
,
|
|
|
Идея-то хороша, только непойму почему ты пишешь прогу для 98 виндов под NT?
|
Сообщ.
#29
,
|
|
|
To vasya2000
Потому, что пишу программу дома (wNT), для использования ее вне дома (w98). Дома не могу установить w98(локальная сеть-много юзеров, w98 - это самоубийство), а там, где нужна эта программа, нельзя установить и работать в VB. Но это неважно, где и для чего писать программу. Все они должны быть универсальны. Всегда. А такие функции и свойства программы могут пригодиться во многих других случаях. И то, что кто-то видит в этом опасность, так это его проблеммы. Информация должна быть доступной. Если у кого-то есть мешок палок, то только на нем будет лежать ответственность, за то, что он будет раскидывать эти палки во все стороны или просто построит из них околицу. cr |
Сообщ.
#30
,
|
|
|
Ну если под Windows98 то то что я писал должно пойти.
|
Сообщ.
#31
,
|
|
|
Принцип пяти окон надёжен. Наверное ты открыл пять окон в рамках одного процесса (в своём приложении). Надо создать стандарт EXE , который бы при загрузка, запускал себя ещё 4 раза, скрывал все свои окна (Visible=False, ShowInTaskBar=False)! Затем, с помощью API ф-ии (например, FindWindow или ф-ий перечисления процессов) определял кол-во своих копий и запускал новые, если их меньше чем 5!
|
Сообщ.
#32
,
|
|
|
Кстати, посмотри на форуме мою тему "Отключение горячих клавиш Windows", там кто-то прислал код для отключения всех клавиш (включая Ctrl+Alt+Del), но поверь, когда какая нибудь прога зависнит и юзер не сможет вызвать окно завершения задач, его это сильно не обрадует, ведь придётся перегружать тачку!
|
Сообщ.
#33
,
|
|
|
Lamer, а можно поймать момент закрытия программы? Чтото типа события Unload?
К примеру: я использую в своей проге функцию TerminateProcess, а другая прога (написанная на бейсике), к которй я пытаюсь применить эту функцию, реагирует на это? И перед тем как закрыться - запускает себя в новом процессе?? |
Сообщ.
#34
,
|
|
|
Это и не надо! Пусть лучше прога проверяет наличие каждого экземпляра через каждые 100 миллисекунд!
|
Сообщ.
#35
,
|
|
|
5 лишних процессов в памяти может существенно снизить производительность системы. Но если других вариантов нет - значит система пяти окон - форева!
|
Сообщ.
#36
,
|
|
|
Нет, не собираешься же ты запихивать 5 экземпляров огромной проги в память, пусть у этих экземпляров будут общие данные, например они будут использовать одну библиотеку, или будут синхронизированы с помощью к примеру мутекса!
|
Сообщ.
#37
,
|
|
|
"...или будут синхронизированы с помощью к примеру мутекса!" - попбдробнее об этом пожалуйста, что такое мутекс??
|
Сообщ.
#38
,
|
|
|
Знаешь как в книгах обычно пишут "Эта тема выходит за рамки данной книги", так вот, мне уже пора бежать по делам, а рассказу о мутексах, событиях и симафорах будет достаточно длинным! Вообщем это что-то вроде системного таймера ВИНДОВ. Поищи доку в нете! Ну можешь задать последний вопрос и я уже уйду потихоньку!
|
Сообщ.
#39
,
|
|
|
Всем спасибо! Проблема разрешена.
cr |