Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Клава

1.7K
08 февраля 2006 года
alektrik
140 / / 16.01.2006
Как можно добраться к клаве? Помогите плииииз, очень надо...
1.9K
09 февраля 2006 года
Borland_prog
149 / / 25.01.2006
Цитата:
Originally posted by alektrik
Как можно добраться к клаве? Помогите плииииз, очень надо...




Смотри сюда http://delphiworld.narod.ru/_os_.html

1.7K
09 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by Borland_prog
Смотри сюда http://delphiworld.narod.ru/_os_.html



Это конечно всё замечательно, но мне бы на C++ (Visual Studio 7 .NET). С Дельфями не работал...
ничего не понимаю. Хотя бы номер аси оставил...

243
11 февраля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by alektrik
Как можно добраться к клаве?


ММмммм.... Какой глубокий вопрос. Подойти к столу, и коснуться рукой клавиатуры.
Конкретнее вопросы будут? Что сделать то надо?

1.7K
11 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by pacific_7
ММмммм.... Какой глубокий вопрос. Подойти к столу, и коснуться рукой клавиатуры.
Конкретнее вопросы будут? Что сделать то надо?



Ммммм... какой отличный ответ... Конкретнее вопросы будут! Так вот надо чтоб прога работала так: нажал на кнопку - вызвалась функция, и в ней надо считать СКАН код (кот. идет с порта 60h)...

243
11 февраля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by alektrik
Ммммм... какой отличный ответ... Конкретнее вопросы будут! Так вот надо чтоб прога работала так: нажал на кнопку - вызвалась функция, и в ней надо считать СКАН код (кот. идет с порта 60h)...


Так, давай еще конкретнее:
1. ОС.
2. Глобально, или только на твою программу?

И если винды NT (что наиболее вероятно), то советую забыть про порты. Если конечно не драйвер пишешь. Нафига тебе они на Си?

1.7K
12 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by pacific_7
Так, давай еще конкретнее:
1. ОС.
2. Глобально, или только на твою программу?

И если винды NT (что наиболее вероятно), то советую забыть про порты. Если конечно не драйвер пишешь. Нафига тебе они на Си?



ОС - WinXP...
короче мне нужно чтоб это так работало: нажимаешь кнопку например 1, считал скан код нажатия кнопки 1, нажал 2 (неотпуская 1), получил скан код 2, отпустил 1 скан код отпускания клавиши 1 (по хорошему это (скан код 1)+80h), нажал 2 - скан код отпускания 2... дрова влом писать на ASMe... кстати не знаешь где можно найти в инете DDK (Driver Developer (-ment) Kit) на халяву? (yandex'ы, rambler'ы, google'ы... не предлагать!)

1.8K
12 февраля 2006 года
k3Eahn
365 / / 19.12.2005
А, что, WM_KEYUP и WM_KEYDOWN не катят?
1.7K
12 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by k3Eahn
А, что, WM_KEYUP и WM_KEYDOWN не катят?



Мож и катят... я просто раньше под ДОСом писал...
мож кинуть на мыло какую-нть маленькую прогу плиз?
[email]alektrik87@mail.ru[/email]

1.8K
12 февраля 2006 года
k3Eahn
365 / / 19.12.2005
Послал - лови...
Решение банальное - читаем MSDN...
8)
1.7K
12 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by k3Eahn
Послал - лови...
Решение банальное - читаем MSDN...
8)



Конечно пасиб... но мне бы хук на клаву поставить... (не могу понять почему не работает)
Вот код:

#include "windows.h"

HHOOK hhkKbdHook = NULL;

LRESULT KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{

DWORD dwData=40, dwBytesReturned;
HANDLE hFile=CreateFile("c:\\test.txt", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);
WriteFile(hFile, &dwData, 1, &dwBytesReturned, 0);
CloseHandle(hFile);

MessageBox(NULL, "Ok !!!", "Status", 0);
return CallNextHookEx(NULL,code,wParam,lParam);
}

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

if (!(hhkKbdHook = SetWindowsHook(WH_KEYBOARD, (HOOKPROC)KeyboardProc)))
MessageBox(NULL,"zad","zad",MB_OK);

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}

//Сюда дальше можно не смотреть
if (hhkKbdHook)
{
UnhookWindowsHook(WH_KEYBOARD, (HOOKPROC)KeyboardProc);
hhkKbdHook = NULL;
}
return 0;
}

По идее при нажатии клавиши в корневике на "c" должен создать файл "test.txt" и записать туда ASCII числа 40 и вывести месаг...

243
12 февраля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by alektrik
По идее при нажатии клавиши в корневике на "c" должен создать файл "test.txt" и записать туда ASCII числа 40 и вывести месаг...


По идее... По идее сперва учим матчасть, а потом - пишем код. А не наоборот.
Глобальные хуки (т.е. на всю систему) обязательно должны находиться в dll-ках. Т.е. ты пишешь функцию в dll-ке, загружаешь ее, и после этого ставишь хук на всю систему. Примерно надо сделать вот что:
DLL:

Код:
#include <windows.h>
extern "C" __declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) void hwnd(HHOOK HwndHook);
HHOOK hHook;
HINSTANCE hInstance;
FARPROC KeybProc = (FARPROC)KeyboardProc;

int WINAPI DllEntryPoint(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
{
        return 1;
}

__declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
        DWORD numb=0;
        char buffer[10];
        if((code == HC_ACTION)&&(!(HIWORD(lParam) & KF_UP)))
        {
                switch ((char)wParam)
                {
                //ЧТО-ТО ТУТ ДЕЛАЕМ С ПОЛУЧЕННЫМИ ДАННЫМИ
                }
                FlushFileBuffers(hDump);
                CloseHandle(hDump);

        }
return CallNextHookEx(hHook,code,wParam,lParam);
}

Главный модуль:
Код:
typedef void (*HWN)(HHOOK );
HWN hwn=NULL;

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HMODULE dllhook = LoadLibrary("a.dll");
if(dllhook)
{
        hwn = (HWN)GetProcAddress(dllhook,"_hwnd");
        HOOKPROC hook = (HOOKPROC)GetProcAddress(dllhook, "KeyboardProc");
        if(hwn && hook)
        {
                HHOOK hhook = SetWindowsHookEx(WH_KEYBOARD,hook,dllhook,0);
                hwn(hhook);
                Sleep(INFINITE);
        }
}

FreeLibrary(dllhook);
return 0;
}

ЗЫ Код маленько кривой, т.к. писан был очень давно, но рабочий.
1.7K
12 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by pacific_7
По идее... По идее сперва учим матчасть, а потом - пишем код. А не наоборот.
Глобальные хуки (т.е. на всю систему) обязательно должны находиться в dll-ках. Т.е. ты пишешь функцию в dll-ке, загружаешь ее, и после этого ставишь хук на всю систему.



Почему оба GetProcAddress возвращают 0 (код ошибки (GetLastError()) 7fh, у меня описания кодов ошибки нету). LoadLibrary нормально грузит DLL'ky. И зачем в DLL файле прототип функции hwnd без её описания? И почему при вызове функции для получения адреса функции hwnd стоит знак "нижнее подчеркивание", а для KeyboardProc его нету?

243
13 февраля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by alektrik
Почему оба GetProcAddress возвращают 0 (код ошибки (GetLastError()) 7fh, у меня описания кодов ошибки нету). LoadLibrary нормально грузит DLL'ky. И зачем в DLL файле прототип функции hwnd без её описания? И почему при вызове функции для получения адреса функции hwnd стоит знак "нижнее подчеркивание", а для KeyboardProc его нету?


Ты хочешь сам написать, или что бы за тебя написали? Если первое, то подскажу - ошибка твоя значит: "Не найдена указанная процедура". Почему? Подумай. Почитай все же литературу на эту тему.
Если хочешь, что бы за тебя написали, то могу написать, если тебе это так надо.

1.7K
14 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by pacific_7
Ты хочешь сам написать, или что бы за тебя написали? Если первое, то подскажу - ошибка твоя значит: "Не найдена указанная процедура". Почему? Подумай. Почитай все же литературу на эту тему.
Если хочешь, что бы за тебя написали, то могу написать, если тебе это так надо.



Я хочу, чтоб мне помогли разобраться во всей этой мути... а для этого нужен нормальный исходник, с комментариями... если есть возможность кинь на почту (alektrik87@mail.ru) исходники и откомпилированный exe и dll (тока заархивируй)...лит-ры на эту тему у меня пока нет, так что выбор откуда познавать Программирование в Виндовз не велик...

243
14 февраля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by alektrik
Я хочу, чтоб мне помогли разобраться во всей этой мути... а для этого нужен нормальный исходник, с комментариями...


В чём пишешь? А то у каждой среды свои тонкости - надо знать чего выслать.
Если есть возможность - стучи в асю.

1.7K
15 февраля 2006 года
alektrik
140 / / 16.01.2006
Цитата:
Originally posted by pacific_7
В чём пишешь? А то у каждой среды свои тонкости - надо знать чего выслать.
Если есть возможность - стучи в асю.



Пишу в Visual Studio 7 .NET (C++).
Ася - 258464925

243
15 февраля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by alektrik
Пишу в Visual Studio 7 .NET (C++).
Ася - 258464925


Дык есть у меня твоя аська - ты же ее в профиле указал. А проект - ща соберусь с духом и вышлю.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог