WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  Visual Basic
  Невидимая программа

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Невидимая программа
cr опубликован 06-11-2001 16:23 MSK   Click Here to See the Profile for cr   Click Here to Email cr  
Как сделать так, чтобы программу не было видно в процессах? И если можно, чтобы диспетчеры (NT, TaskInfo) ее не видели.
AlexR опубликован 06-11-2001 19:22 MSK     Click Here to See the Profile for AlexR  Click Here to Email AlexR     
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

Emerald опубликован 07-11-2001 12:13 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Малоизвестный факт, но все гораздо проще. Всего-то строка:
app.visible = false

... и все.

Vasya2000 опубликован 07-11-2001 13:01 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Любой процесс можно увидеть, если знать где смотреть.
Не знаю как в Win NT, а в 98 можно запустить 16-разрядный процесс, его точно не видно.
cr опубликован 08-11-2001 16:08 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
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-и разрядный процесс?

Vasya2000 опубликован 08-11-2001 16:13 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
ты вообще правильно ее используешь?

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)

Vasya2000 опубликован 08-11-2001 16:19 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
не знаю как запускать 16-разрядный процесс, но он точно запускается. на вижуал бейсике не получится такая прога. на си - может быть, а на бейсике - фиг.
Vasya2000 опубликован 08-11-2001 16:27 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
кстати, у тебя какой windows?
cr опубликован 08-11-2001 16:30 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
to Vasya2000
Использую вроде правильно, все уже перепробовал..
Когда пытаюсь запустить, пишет:
Can't find DLL entry point RegisterServiceProcess in kernel32.dll

может это из-за того, что я под NT?

Vasya2000 опубликован 09-11-2001 14:39 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
ясен перец из-за этого. NT использует
другие библиотеки.
Lamer опубликован 10-11-2001 11:23 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
В NT эту ф-ю убрали намеренно для того, чтобы ни один предательский вирус не смог себя скрыть. В NT видны все процессы, без исключения! Чтобы нельзя было закрыть приложение в NT, либо через ASM, обращаясь к стеку памяти, стирают имя класса окна или винд-ворд, например. На VB это просто невозможно. Остаётся лишь «система пяти окон»!
Vasya2000 опубликован 10-11-2001 11:59 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Lamer, а что такое "система пяти окон"?
Lamer опубликован 10-11-2001 23:45 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Принцип работы этой системы вытекает из принципа мультизадачности Windows. То есть, если ты не в курсе, процессор не выполняет все проги виндов одновременно, согласно распоряжениям Windows он выделяет каждому приложению определённое системное время (по дефалту около тысячной миллисекунды или такту). В течение этого времени он выполняет некоторый процесс (изменяет или читает всего несколько десятков байт, так называемое «слово»), а затем переключается на следующий в очереди. В Windows все проги являются окнами, скрытыми от юзеровских глаз. Так вот если запустить прогу пять раз, то есть создать 5 окон, и эти окна каждую миллисекунду будут проверять наличие друг друга, причём если кол-во экземпляров меньше пяти, то запускать себя ещё и ещё раз, пока окон не будет опять пять экземпляров. Почему пять? Да потому, что пять окон не возможно прикрыть за один такт, и никакая другая прога (типа диспетчера задач) не сможет прикрыть все экземпляры!
Vasya2000 опубликован 11-11-2001 12:34 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Lamer, а ты крут
cr опубликован 12-11-2001 11:29 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
плохА..
принцип 5ти окон не работает, а асм я пока не знаю...

Может кто знает, хотя бы, как отключить alt?

Vasya2000 опубликован 13-11-2001 13:31 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Есть надежный способ - выломать все лишние кнопки с клавиатуры.
Vasya2000 опубликован 13-11-2001 13:34 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Не, есть способ еще круче - надо вообще выкинуть клаву и оставить только джойстик!
AlexR опубликован 13-11-2001 16:28 MSK     Click Here to See the Profile for AlexR  Click Here to Email AlexR     
Ещё проще: поставить MS-DOS - там никакие процессы точно не будут видны :))
AlexR опубликован 13-11-2001 16:29 MSK     Click Here to See the Profile for AlexR  Click Here to Email AlexR     
А можно просто выкинуть монитор...
cr опубликован 14-11-2001 09:19 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
Большое спасибо за советы!

Кнопки из клавы уже отковырял, присабачил джойстик от спектрума, сижу, вот, монитор разбираю, пытаюсь наити чип, который отвечает за вывод на экран запущенных процессов. Жаль что на них не написано, два раза уже ошибся. Теперь он почему-то сильно гудит и издает какие-то странные запахи, когда включается, а включается и выключается когда захочет.

А вот под мэсэдосом мои проги вообще не запускаются. Странно, правда?
ПаРаДоКС, однако..

:)
cr

purpe опубликован 14-11-2001 11:34 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
а я вообще начинал кодить на басике в БК-0010. Советую тебе папробовать.
Vasya2000 опубликован 14-11-2001 14:06 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
К черту басик и бк0010. есть же программируемые микрокалькуляторы!!
purpe опубликован 14-11-2001 15:19 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
но там нет басика ...
Vasya2000 опубликован 14-11-2001 16:10 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
там еще нет кнопки альт и процессы невидимые, стелс мать его, понимаешь
purpe опубликован 14-11-2001 16:55 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
ну если на то пошло, то на счётах вообще нет кнопок, сплошные костяшки ...
al опубликован 14-11-2001 20:51 MSK     Click Here to See the Profile for al  Click Here to Email al     
Мне кажется, что для нормальной задачи невидимость вообще-то не нужна. Все эти вопросы про невидимость (а они в этом форуме появляются чуть не каждую неделю) нужны для написания всяких гадов. Уча людей подобным фокусам мы потом можем сами получить такую програму по e-mail
cr опубликован 15-11-2001 11:23 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
To al:

Почему обязательно гадов? Я, например, пишу программу для контроля доступа к машине, когда этот самый доступ платный (например, интернет-кафе или гейм-клуб).
В NT с этим проблемм нет, но в 95, 98 такие функции напрочь отсутствуют.
Допустим, по истечении оплаченного времени, запускается окно, которое закрывает весь экран, является постоянно активным и требует ввода пароля для выгрузки себя (упрощенный вариант).
Необходимо отключить: alt+tab, alt+F4, ctrl+alt+del и скрыть процесс с глаз долой, чтобы его не могли завершить...
alt+tab и alt+F4 я уже преодолел...

Если не хотите делиться со всеми, напишите, хотя бы на емыльник(cr@inett.ru).. Буду очень благодарен!

cr

Vasya2000 опубликован 15-11-2001 15:24 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Идея-то хороша, только непойму почему ты пишешь прогу для 98 виндов под NT?
cr опубликован 15-11-2001 15:59 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
To vasya2000

Потому, что пишу программу дома (wNT), для использования ее вне дома (w98).
Дома не могу установить w98(локальная сеть-много юзеров, w98 - это самоубийство), а там, где нужна эта программа, нельзя установить и работать в VB.

Но это неважно, где и для чего писать программу. Все они должны быть универсальны. Всегда.
А такие функции и свойства программы могут пригодиться во многих других случаях. И то, что кто-то видит в этом опасность, так это его проблеммы. Информация должна быть доступной.
Если у кого-то есть мешок палок, то только на нем будет лежать ответственность, за то, что он будет раскидывать эти палки во все стороны или просто построит из них околицу.

cr

AlexR опубликован 15-11-2001 19:05 MSK     Click Here to See the Profile for AlexR  Click Here to Email AlexR     
Ну если под Windows98 то то что я писал должно пойти.
Lamer опубликован 17-11-2001 11:57 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Принцип пяти окон надёжен. Наверное ты открыл пять окон в рамках одного процесса (в своём приложении). Надо создать стандарт EXE , который бы при загрузка, запускал себя ещё 4 раза, скрывал все свои окна (Visible=False, ShowInTaskBar=False)! Затем, с помощью API ф-ии (например, FindWindow или ф-ий перечисления процессов) определял кол-во своих копий и запускал новые, если их меньше чем 5!
Lamer опубликован 17-11-2001 12:11 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Кстати, посмотри на форуме мою тему "Отключение горячих клавиш Windows", там кто-то прислал код для отключения всех клавиш (включая Ctrl+Alt+Del), но поверь, когда какая нибудь прога зависнит и юзер не сможет вызвать окно завершения задач, его это сильно не обрадует, ведь придётся перегружать тачку!
Vasya2000 опубликован 17-11-2001 12:58 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
Lamer, а можно поймать момент закрытия программы? Чтото типа события Unload?
К примеру: я использую в своей проге функцию TerminateProcess, а другая прога (написанная на бейсике), к которй я пытаюсь применить эту функцию, реагирует на это? И перед тем как закрыться - запускает себя в новом процессе??
Lamer опубликован 17-11-2001 13:24 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Это и не надо! Пусть лучше прога проверяет наличие каждого экземпляра через каждые 100 миллисекунд!
Vasya2000 опубликован 17-11-2001 13:33 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
5 лишних процессов в памяти может существенно снизить производительность системы. Но если других вариантов нет - значит система пяти окон - форева!
Lamer опубликован 17-11-2001 13:37 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Нет, не собираешься же ты запихивать 5 экземпляров огромной проги в память, пусть у этих экземпляров будут общие данные, например они будут использовать одну библиотеку, или будут синхронизированы с помощью к примеру мутекса!
Vasya2000 опубликован 17-11-2001 13:40 MSK     Click Here to See the Profile for Vasya2000  Click Here to Email Vasya2000     
"...или будут синхронизированы с помощью к примеру мутекса!" - попбдробнее об этом пожалуйста, что такое мутекс??
Lamer опубликован 17-11-2001 13:44 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Знаешь как в книгах обычно пишут "Эта тема выходит за рамки данной книги", так вот, мне уже пора бежать по делам, а рассказу о мутексах, событиях и симафорах будет достаточно длинным! Вообщем это что-то вроде системного таймера ВИНДОВ. Поищи доку в нете! Ну можешь задать последний вопрос и я уже уйду потихоньку!
cr опубликован 19-11-2001 15:21 MSK     Click Here to See the Profile for cr  Click Here to Email cr     
Всем спасибо! Проблема разрешена.

cr

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.