Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 21:02   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

В общем доброго времени суток, возник вопрос.
Что такое глобальный процесс? я как понимаю это своего роди системный процесс, который может отслеживать работу других программ, а так же узнавать действия человека в этих программах?
и собственно второй вопрос: как в сях сделать процесс глобальным?

И еще вопрос, я могу перехватить как-то клавиатуру, т.е. получить прерывания не используя win api?

Последний раз редактировалось rpy3uH; 26.05.2011 в 15:17.
CodeNOT вне форума Ответить с цитированием
Старый 25.05.2011, 21:42   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

нашел в принципе исходник, но он не работает
Код:
/******************************************************************/
/*									Набор ловушек*/
/*					Клава - биканье при переключении раскладки	*/
/*			Мышь - при перемещении в угол включается ScreenSaver	*/
/******************************************************************/
#include <windows.h>
#pragma argsused
//---------------------------------------------------------------------------
#define UP 1
#define DOWN 2
#define RESET 3

int iAltKey;                  // Здесь хранится состояние клавиш
int iCtrlKey;
int iShiftKey;

int KEYBLAY;						// Раскладка
bool bSCRSAVEACTIVE;				// Установлен ли ScreenSaver
MOUSEHOOKSTRUCT* psMouseHook; // Для анализа сообшений от мыши
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport) LRESULT CALLBACK KeyboardHook
(int,WPARAM,LPARAM);
extern "C" __declspec(dllexport) LRESULT CALLBACK MouseHook
(int,WPARAM,LPARAM);
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason,
								 void* lpReserved)
{
   if(reason==DLL_PROCESS_ATTACH)	// Проецируем на адр. простр.
   {
		HKEY pOpenKey;
	   char* cResult="";    // Узнаём как перекл. раскладка
	   long lSize=2;
		KEYBLAY=3;

		if(RegOpenKey(HKEY_USERS,".Default\\keyboard layout\\toggle",
  						  &pOpenKey)==ERROR_SUCCESS)
		{
	   	RegQueryValue(pOpenKey,"",cResult,&lSize);

	      if(strcmp(cResult,"1")==0)
	      	KEYBLAY=1;                  // Alt+Shift
	      if(strcmp(cResult,"2")==0)
	      	KEYBLAY=2;                  // Ctrl+Shift

	   	RegCloseKey(pOpenKey);
		}
      else
      {
         MessageBox(0,"Не могу получить данные о способе"
         				  "переключения раскладки клавиатуры",
                       "Внимание!",MB_ICONERROR);
      }
//-------------
		if(!SystemParametersInfo(SPI_GETSCREENSAVEACTIVE,0,
      								&bSCRSAVEACTIVE,0))
         MessageBox(0,"Не могу получить данные об установленном"
         				  "хранителе экрана",
                       "Внимание!",MB_ICONERROR);
   }
	return 1;
}
//---------------------------------------------------------------------------
void vfBeep()
{			
		MessageBeep(-1);
		MessageBeep(-1);
}
//---------------------------------------------------------------------------
LRESULT CALLBACK KeyboardHook(int nCode,WPARAM wParam,LPARAM lParam)
{       				 // Ловушка клав. - биканье при перекл. раскладки
	if((lParam>>31)&1)          // Если клавиша нажата...
		switch(wParam)
      {
      	case VK_SHIFT: iShiftKey=UP; break;    // Флаги состояния
      	case VK_CONTROL: iCtrlKey=UP; break;
      	case VK_MENU: iAltKey=UP; break;
		}
   else								 // Если была отпущена...
		switch(wParam)
      {
      	case VK_SHIFT: iShiftKey=DOWN; break;	// Флаги состояния
      	case VK_CONTROL: iCtrlKey=DOWN; break;
      	case VK_MENU: iAltKey=DOWN; break;
		}
//--------------
	switch(KEYBLAY)
   {
   	case 1:
      {
			if(iAltKey==DOWN && iShiftKey==UP)
		   {
				vfBeep();
		     	iShiftKey=RESET;
		   }
			if(iAltKey==UP && iShiftKey==DOWN)			// Alt+Shift
		   {
				vfBeep();
		     	iAltKey=RESET;
		   }
			if((iAltKey==UP && iShiftKey==RESET)||
		   	(iAltKey==RESET && iShiftKey==UP))
		   {
		     	iAltKey=RESET;
		     	iShiftKey=RESET;
		   }
      	break;
		}
//--------------
		case 2:
      {
			if(iCtrlKey==DOWN && iShiftKey==UP)
		   {
				vfBeep();
		     	iShiftKey=RESET;
		   }
			if(iCtrlKey==UP && iShiftKey==DOWN)		// Ctrl+Shift
		   {
				vfBeep();
		     	iCtrlKey=RESET;
		   }
			if((iCtrlKey==UP && iShiftKey==RESET)||
		   	(iCtrlKey==RESET && iShiftKey==UP))
		   {
		     	iCtrlKey=RESET;
		     	iShiftKey=RESET;
		   }
      }
   }

   return 0;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK MouseHook(int nCode,WPARAM wParam,LPARAM lParam)
{       				// Ловушка мыши - включает хранитель когда в углу
	if(wParam==WM_MOUSEMOVE || wParam==WM_NCMOUSEMOVE)
  	{
		psMouseHook=(MOUSEHOOKSTRUCT*)(lParam);
      if(psMouseHook->pt.x==0 && psMouseHook->pt.y==0)
			if(bSCRSAVEACTIVE)
				PostMessage(psMouseHook->hwnd,WM_SYSCOMMAND,
        	   				SC_SCREENSAVE,0);
   }
	return 0;
}

Последний раз редактировалось rpy3uH; 26.05.2011 в 15:09.
CodeNOT вне форума Ответить с цитированием
Старый 26.05.2011, 15:16   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
И еще вопрос, я могу перехватить как-то клавиатуру, т.е. получить прерывания не используя win api?
овтет: никак, это невозможно, если и возможно то это уязвимость

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
нашел в принципе исходник, но он не работает
а как ты всё это грузишь и как запускаешь?

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
Что такое глобальный процесс?
я не знаю что это такое, и сомневаюсь что вообще существует такое понятие. а кто тебе рассказал про глобальные процессы?

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
я как понимаю это своего роди системный процесс, который может отслеживать работу других программ, а так же узнавать действия человека в этих программах?
такого процесса не существует, если системные процессы, отличаются они только тем что у них есть такие права которых никогда нет у обычных программ.

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
и собственно второй вопрос: как в сях сделать процесс глобальным?
никак, потому что глобальных процессов нет
rpy3uH вне форума Ответить с цитированием
Старый 28.05.2011, 00:45   #4
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Драйвер же
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 28.05.2011, 12:48   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

драйвер это уже не процесс, ни в обычном понимании ни в том понимании в котором нам говорит топикстартёр
rpy3uH вне форума Ответить с цитированием
Старый 28.05.2011, 13:56   #6
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
драйвер это уже не процесс, ни в обычном понимании ни в том понимании в котором нам говорит топикстартёр
да я вообще не понял что надо ТС, но драйвер удовлетворит поставленным условиям
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальный массив mavlon_m Общие вопросы Delphi 3 09.11.2010 11:53
Глобальный хук клавиатуры. Horus92 Win Api 2 14.10.2010 22:51
Глобальный хук Умед Общие вопросы Delphi 1 02.08.2010 11:04
Глобальный HOOK vma Общие вопросы C/C++ 0 25.03.2010 11:49
Глобальный хук на мышь не глобальный О_о JTG Общие вопросы Delphi 3 05.06.2008 17:41