Пожалуйста,как написать такой софт. Нажимаю ф1 и она печатает слово "хелло". Если можно,исходник с комментариями.
В 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; }
Эмм,мне надобно чуток иначе.Допустим,я нажимаю ф1 и он печатает слово в блокноте или в адресной строке браузера.
Я хочу такую программу. Нажал кнопку f1 мне написался спамер для сайта, который открыт в браузере. Кнопка f2 парсер, f3 кейлогер. Кто замутит?
то что ты хочешь это фантастика, вот что я хочу это реально: нажимаю ф1 и кипер зазвенел и там +1000000000$
999999999999999999999999999$ и сделаю =).....вернее куплю тебе webmoney....нет, 2 webmoney....и на сдачу семечек =) Возьму всего 1% комиссии за проведение сделки Соглашайся!
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!'); }