Программа которая печатает слово по хоткею.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Dark~Angel, 4 Apr 2014.

  1. Dark~Angel

    Dark~Angel Member

    Joined:
    25 Apr 2010
    Messages:
    308
    Likes Received:
    76
    Reputations:
    8
    Пожалуйста,как написать такой софт.
    Нажимаю ф1 и она печатает слово "хелло".
    Если можно,исходник с комментариями.
     
    #1 Dark~Angel, 4 Apr 2014
    Last edited: 4 Apr 2014
  2. SekirBoshka

    SekirBoshka Member

    Joined:
    25 May 2012
    Messages:
    78
    Likes Received:
    28
    Reputations:
    0
    В GoogLe примеров много...а так вот

    Code:
    
    #include <Windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    //==========================================================
    ///регистрация класса окна
    int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    
    {
    	HWND hMainWnd;
    	char szClassName[] = "MyClass";
    	MSG msg;
    	WNDCLASSEXA wc;
    	//Заполняем структуру окна'
    	wc.cbSize = sizeof(wc);
    	wc.style = CS_HREDRAW | CS_VREDRAW;
    	wc.lpfnWndProc =  WndProc;
    	wc.cbClsExtra = 0;
    	wc.cbWndExtra = 0;
    	wc.hInstance = hInstance;
    	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    	wc.hCursor =  LoadCursor(NULL, IDC_ARROW);
    	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    	wc.lpszMenuName = NULL;
    	wc.lpszClassName = szClassName;
    	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    	//Регистрируем класс окна
    	if(!RegisterClassExA(&wc)) {
    		MessageBoxA(NULL, "Cannot register class","Error", MB_OK);
    		return 0;
    	}
    
    	//Создаем основное окно приложения
    	hMainWnd = CreateWindowA(szClassName, "A Hello Application", WS_OVERLAPPEDWINDOW,
    		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,(HWND)NULL,(HMENU)NULL,(HINSTANCE)hInstance,NULL);
    	if(!hMainWnd) {
    		MessageBoxA(NULL, "Cannot create main window", "Error", MB_OK);
    		return 0;
    	}
    
    	//Показываем наше окно
    	ShowWindow(hMainWnd, nCmdShow);
    	
    		
    		//Выполняем цикл обработки сообщения до закрытия окна
    	while (GetMessage(&msg,NULL,0,0)) { 
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return msg.wParam;
    }
    
    	//=====================================================
    LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    	HDC hDC;
    	PAINTSTRUCT ps;
    	RECT rect;
    
    	switch (uMsg)
    	{
    ///рисуем надпись в главном  окне "Нажмите клавишу F1 или F2 "
    	case WM_PAINT:
    		hDC = BeginPaint(hWnd,&ps);
    		GetClientRect(hWnd, &rect);
    		DrawTextA(hDC, "Нажмите клавишу F1 или F2 ", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    
    		EndPaint(hWnd, &ps);
    		break;
    
    	case WM_CLOSE:
    		
    			
    		DestroyWindow(hWnd);
    		
    		break;
    	case WM_KEYDOWN: //перехватываем сообщение от клавы
    
    		switch(wParam)//wParam содержит код клавы
    		{
    			case VK_F1:
    		MessageBoxA(hWnd,"ХЕЛОУ!!!", "F1", MB_OK);
    
    		break;
    
    		case VK_F2:
    		MessageBoxA(hWnd,"Нажата клавиша F2!!!", "F2", MB_OK);
    
    		break;
    		}
    
    		break;
    		
    
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    
    	default:
    		return DefWindowProc(hWnd,uMsg,wParam, lParam);
    	}
    	return 0;
    }
     
  3. Dark~Angel

    Dark~Angel Member

    Joined:
    25 Apr 2010
    Messages:
    308
    Likes Received:
    76
    Reputations:
    8
    Эмм,мне надобно чуток иначе.Допустим,я нажимаю ф1 и он печатает слово в блокноте или в адресной строке браузера.
     
  4. Dark~Angel

    Dark~Angel Member

    Joined:
    25 Apr 2010
    Messages:
    308
    Likes Received:
    76
    Reputations:
    8
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
  6. kingbeef

    kingbeef Reservists Of Antichat

    Joined:
    8 Apr 2010
    Messages:
    367
    Likes Received:
    164
    Reputations:
    126
    Я хочу такую программу. Нажал кнопку f1 мне написался спамер для сайта, который открыт в браузере. Кнопка f2 парсер, f3 кейлогер. Кто замутит?
     
    _________________________
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    да ему даже не текст в чужом окне нужен. Ему нужно просто SendKey использовать...
     
  8. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    С хорошим бюджетом сделают)))
     
  9. Alexandr II

    Alexandr II -=ImperatoR=-

    Joined:
    28 Dec 2007
    Messages:
    1,067
    Likes Received:
    670
    Reputations:
    87
    то что ты хочешь это фантастика, вот что я хочу это реально:
    нажимаю ф1 и кипер зазвенел и там +1000000000$ :)
     
  10. Kamik

    Kamik Member

    Joined:
    2 Dec 2008
    Messages:
    122
    Likes Received:
    85
    Reputations:
    8
    999999999999999999999999999$ и сделаю =).....вернее куплю тебе webmoney....нет, 2 webmoney....и на сдачу семечек =) :D Возьму всего 1% комиссии за проведение сделки :cool: Соглашайся! :rolleyes:
     
  11. kingbeef

    kingbeef Reservists Of Antichat

    Joined:
    8 Apr 2010
    Messages:
    367
    Likes Received:
    164
    Reputations:
    126
    Обменяемся?
     
    _________________________
  12. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,309
    Reputations:
    327
    http://forums.anandtech.com/archive/index.php/t-2302347.html

    ну и примерно так
    Code:
    // идентификаторы берем от балды, главное чтобы читались понятно в коде
    #define ID_HKEY		12345
    #define ID_QUIT		ID_HKEY+1
    
    const char g_sStringToType[] = "olololo";
    
    int __stdcall WinMain123()
    {
    	MSG msg;
    	HWND wnd;
    	int i;
    
    	// регистрируем горячие клавиши
    	RegisterHotKey(NULL, ID_HKEY, 0, VK_F1);
    	RegisterHotKey(NULL, ID_QUIT, 0, VK_F2);
    
    	// читаем сообщения из очереди для текущего потока.
    	// DispatchMessage не нужно т.к. окна с обработчиком сообщений у нас нет
    	while (GetMessage(&msg, 0, 0, 0))
    	{
    		if (msg.message == WM_HOTKEY)
    			if (msg.wParam == ID_HKEY)
    			{
    				if (wnd = GetForegroundWindow()) // пробуем получить хендл окна с которым сейчас работает юзер
    				{
    					// напечатаем
    					for (i = 0; i < sizeof(g_sStringToType)-1; i++)
    					{
    						keybd_event(VkKeyScan(g_sStringToType[i]), 0, 0, 0); // нажали
    						keybd_event(VkKeyScan(g_sStringToType[i]), 0, KEYEVENTF_KEYUP, 0); // отпустили
    					}
    				}
    			}
    			else if (msg.wParam == ID_QUIT) // выход по нажатию ф2
    				break;
    	}
    
    	ExitProcess('BYE!');
    }
     
    #12 sn0w, 8 Apr 2014
    Last edited: 8 Apr 2014
    2 people like this.
Loading...
Similar Threads - Программа печатает хоткею
  1. Peja
    Replies:
    0
    Views:
    2,725