Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как заблокировать мышь?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Crash86

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто знает, как заблокировать мышь под Win2K (код на VC++)?

Всего записей: 28 | Зарегистр. 25-12-2002 | Отправлено: 18:44 31-07-2003
OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что значит заблокировать?
Может просто курсор убрать
Или сообщения не обрабатывать
???

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 19:54 31-07-2003
Crash86

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заблокировать ввод

Всего записей: 28 | Зарегистр. 25-12-2002 | Отправлено: 20:08 31-07-2003
OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ввод в одно свое окно или ввод вообще?

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 21:42 31-07-2003
EAS



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Заблокировать ввод

Я думал вывод
 
Конкретизируй пожалуйста, ввод в 1) свое окно; 2)чужое окно; 3)вообще. С 1) имхо проблем не должно быть. 2) сложнее, в голову приходит только функция AttachThreadInput, но она только прицепляться к вводу; хуки - но на что? На PostMessage может. 3) IMHO дрова рубить или провод дергать

Всего записей: 441 | Зарегистр. 18-07-2003 | Отправлено: 04:38 01-08-2003
Shtorm



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как отключить мышу в winXP при работе с DoS программами? Если дёрнуть мышой, прога просто вылетает и естесно не сохраняет при етом никаких данных.

Всего записей: 232 | Зарегистр. 02-10-2002 | Отправлено: 15:14 01-08-2003
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Отключи мышь на время работы програмы.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 00:22 02-08-2003
aaabbbccc



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
The BlockInput function blocks keyboard and mouse input events from reaching applications.
 
Syntax
BOOL BlockInput(      
    BOOL fBlockIt
);
 
Parameters
    fBlockIt
        [in] Specifies the function's purpose. If this parameter is TRUE, keyboard and mouse input events are blocked. If this parameter is FALSE, keyboard and mouse events are unblocked. Note that only the thread that blocked input can successfully unblock input.  
 
Return Value
 
    If the function succeeds, the return value is nonzero.
 
    If input is already blocked, the return value is zero. To get extended error information, call GetLastError.  
 
    The system will unblock input in the following cases:
 
        * The thread that blocked input unexpectedly exits without calling BlockInput with fBlock set to FALSE. In this case, the system cleans up properly and re-enables input.
        * Windows 95/98/Me: The system displays the Close Program/Fault dialog box. This can occur if the thread faults or if the user presses CTRL+ALT+DEL.
        * Windows 2000/XP: The user presses CTRL+ALT+DEL or the system invokes the Hard System Error modal message box (for example, when a program faults or a device fails).  
 
Function Information
 
    Import library User32.lib
    Minimum operating systems Windows 98, Windows 2000
 
 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/KeyboardInputFunctions/BlockInput.asp

Всего записей: 30 | Зарегистр. 10-08-2002 | Отправлено: 00:27 02-08-2003
Crash86

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Теперь понял :)

Всего записей: 28 | Зарегистр. 25-12-2002 | Отправлено: 19:01 02-08-2003
Shtorm



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp

Цитата:
Отключи мышь на время работы програмы.

Каким образом? Чё-то типа скрипта надо или BATника.  
ALL[
У кого какие предложения по этому поводу?

Всего записей: 232 | Зарегистр. 02-10-2002 | Отправлено: 12:06 06-08-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shtorm

Цитата:
Каким образом? Чё-то типа скрипта надо или BATника.

Да нет... просто выдернуть шнурок (наверное).

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 14:31 06-08-2003
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zorrack
Правильно.
Shtorm
Если очень надо работать со старой програмой, то просто выдерни мышь.
После окончания работы Windows подхватит мышу сам. Особенно на Win2K.
Конечно мне не известна вся ситуация, но это IMHO наиболее простое и доступное решение.  
И это совершенно серьезно. Без подколок. Зачем громоздить навески на систему и добиваться нестабильной работы? Или найти/написать заменитель этой програмы.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:28 06-08-2003 | Исправлено: dneprcomp, 20:32 06-08-2003
Shtorm



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zorrack
dneprcomp

Цитата:
Да нет... просто выдернуть шнурок (наверное).

Это не серьёзно!  
Да и к тому же мышь не хватается после её выдёргивания

Всего записей: 232 | Зарегистр. 02-10-2002 | Отправлено: 17:01 07-08-2003
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shtorm
Ну извини.  Обычно система мышу подхватывает. Я все время переключаю с одного компа на другой мышь и клавиатуру. И ничего, работает.
Скорее всего, твоя программа портит что-то в системе во время работы. А ты еще пытаешься сам что-то навесить...  

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 19:31 07-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
лучше не так
 
OSVERSIONINFO osver;
osver.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&osver);
if(osver.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
// Install the low-level keyboard & mouse hooks
m_hhkLowLevelKybd=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,AfxGetInstanceHandle(),0);
m_hhkLowLevelMouse=SetWindowsHookEx(WH_MOUSE_LL ,LowLevelMouseProc,AfxGetInstanceHandle(),0);
}
 
..............................
 
а в обработчиках делай чё хочешь
например
 
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
BOOL fEatKeystroke = FALSE;
 
if(nCode==HC_ACTION)  
{
switch (wParam)  
{
case WM_KEYDOWN:  
case WM_SYSKEYDOWN:
case WM_KEYUP:  
case WM_SYSKEYUP:  
 
PKBDLLHOOKSTRUCT p =(PKBDLLHOOKSTRUCT)lParam;
 
if(p->vkCode=='R' && p->flags & LLKHF_ALTDOWN) Exit();
 
                                                // мое или нет?
if(pDlg->m_hWnd!=::GetActiveWindow()) return 1;
 
if(p->vkCode==VK_LWIN || p->vkCode==VK_RWIN || p->vkCode==VK_APPS)
fEatKeystroke=TRUE;
else
fEatKeystroke=
((p->vkCode==VK_TAB) && ((p->flags & LLKHF_ALTDOWN)!=0)) ||
((p->vkCode==VK_ESCAPE) &&  
((p->flags & LLKHF_ALTDOWN)!=0)) ||
((p->vkCode==VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
 
break;
}
}
 
return(fEatKeystroke ? 1 : CallNextHookEx(NULL,nCode,wParam,lParam));
}
 
LRESULT CALLBACK LowLevelMouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
BOOL fEatMouse=FALSE;
 
if(nCode==HC_ACTION)  
{
switch (wParam)  
{
case WM_LBUTTONDOWN:  
case WM_LBUTTONUP:
case WM_RBUTTONDOWN:  
case WM_RBUTTONUP:  
 
PMSLLHOOKSTRUCT p =(PMSLLHOOKSTRUCT)lParam;
 
DWORD ID=::GetWindowThreadProcessId(pDlg->m_hWnd,NULL);
DWORD wID=::GetWindowThreadProcessId(::WindowFromPoint(p->pt),NULL);
// мое или нет
 
if(ID==wID)
{
pDlg->GetDlgItem(IDC_TITLE)->SetWindowText("Ты попал.");
}
else
{
fEatMouse=TRUE;
pDlg->GetDlgItem(IDC_TITLE)->SetWindowText("Ты не попал.");
}
 
break;
}
}
 
return(fEatMouse ? 1 : CallNextHookEx(NULL, nCode, wParam,lParam));
}

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 11:36 08-08-2003 | Исправлено: sawamail, 11:38 08-08-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail
Супер! Один вопрос... Откуда брать pDlg
А также второй вопрос - а под 9x/Me подобный способ есть?

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 13:27 08-08-2003
Monty



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
pDlg - любое созданное тобой окошко

Всего записей: 258 | Зарегистр. 01-11-2001 | Отправлено: 13:32 08-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zorrack
Да pDlg это указатель на диалоговое окно. В принципе это не важно. В 9Х, Ме есть похожие функции (точно не помню наименование). Но есть принципиальное отличие. Если в NT твой хук ставиться в начало списка, то в 98 - в конец. Поэтому хрен чего запретишь. Если интересно - могу кинуть на мыло тестовый проектик (VC++ 6.0).    
 
Добавлено
Кстати, проверяя, кто елозит мышку или клаву, можно отрубить Ctrl+Alt+Del. Вернее не само срабатывание, а возможность воспользоваться TaskManager'ом. Появится он то появиться, а сделать юзер нихрена не сможет.

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 13:49 08-08-2003
Shtorm



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp

Цитата:
Скорее всего, твоя программа портит что-то в системе во время работы. А ты еще пытаешься сам что-то навесить...    

Да ничего она не портит, под вынЬ 2000 работает на ура, а под ХР вылетает к чертям после того как мышой двинешь.
 
sawamail

Цитата:
...OSVERSIONINFO osver;  
osver.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);  
GetVersionEx(&osver);  
if(osver.dwPlatformId==VER_PLATFORM_WIN32_NT)  
{  
// Install the low-level keyboard & mouse hooks  
m_hhkLowLevelKybd...

Мне это поможет?

Всего записей: 232 | Зарегистр. 02-10-2002 | Отправлено: 12:40 09-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shtorm
данный метод позволяет получить полный контроль над мышью
а отключить ее можно в Device Manager  

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 11:33 11-08-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как заблокировать мышь?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru