![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ловим отсоединение мыши... [D7, Win2k]
Геннадий © (2003-11-01 01:04:00)
Возможно ли программно, средствами Delphi отследить отключение мыши от системного блока?
Работаю в Инет-клубе и эта проблема в последнее время стала переходить все мыслимые границы... :((
Urvin (2003-11-27 14:04:00) [1]
unit MAINFRM;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMDeviceChange(var Message: TMessage);
message WM_DEVICECHANGE;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;
procedure TForm1.WMDeviceChange(var Message: TMessage);
var
s : string;
begin
{Do Something here}
case Message.wParam of
DBT_DEVICEARRIVAL :
s := "A device has been inserted and is now available";
DBT_DEVICEQUERYREMOVE: begin
s := "Permission to remove a device is requested";
ShowMessage(s);
{True grants premission}
Message.Result := integer(true);
exit;
end;
DBT_DEVICEQUERYREMOVEFAILED :
s := "Request to remove a device has been canceled";
DBT_DEVICEREMOVEPENDING :
s := "Device is about to be removed";
DBT_DEVICEREMOVECOMPLETE :
s := "Device has been removed";
DBT_DEVICETYPESPECIFIC :
s := "Device-specific event";
DBT_CONFIGCHANGED :
s:= "Current configuration has changed"
else s := "Unknown Device Message " + IntToStr(Message.wParam);
end;
ShowMessage(s);
inherited;
end;
Геннадий (2003-11-27 12:51:00) [2]
Так в том то и дело, что всемыши у нас PS/2. Я думаю, что единственный выход - это написание своего драйвера мыши либо драйвера-прослойки между системой и родный драйвером мыши. Но вот проблема: на Delphi (такая замечательная система!) драйверы почему-то не пишут (и почему не предусмотрели?).
Songoku (2003-11-07 15:26:00) [3]
Попробуй вот это!
WM_DEVICECHANGE
Windows посылает всем окнам это ссобщение кагда произошло под ключение или отключение кагого нибудь устройства! Знаю что 100% будет работать с USB! Я тестировал это сообщение на маёю ISDN_USB - и всё прекрасно работало!
NikNet (2003-11-07 11:51:00) [4]
Вызывать в цыкле кое-кокую функцыю или процедуру и проверять на ошибки если ошибка значит мыши нет или дети сломали её думаю помог а вобше не проверял проверь сам для меня сисчас одно задруднение как перейти в Ring0
Vic (2003-11-06 16:43:00) [5]
на входе мышь и клавиатуру выдавать, на выходе забирать :)
Sam Stone (2003-11-06 13:37:00) [6]
на входе нужно залог брать за грызуна ;) Доменты какие-нить или деньги
DVM (2003-11-06 13:14:00) [7]
Камеры поставить надо... И тому кто будет резать шнур уши отрезать на выходе.
А вообще есть специальные столы для компьютерных клубов и инет-кафе, так там все это предусмотрено уже.
N169 (2003-11-06 11:27:00) [8]
Ещё можно не мыши пользовать, а трэкболы, закрепив стационарно на столе.
Кстати, если вор будет резать шнур, то есть хороший шанс, что он коротнёт питание и комп выключится.
DVM (2003-11-06 11:21:00) [9]
Да действительно, прикрутите вы их к столу скобой (не мышки, провода:) и все.
Геннадий (2003-11-06 10:01:00) [10]
> N169 (04.11.03 16:02) [16]
> А кому нужна мыша без разъёма?
Нужна. Можно взять старый (от поломанной с колёсиком).
Мышь PS/2 (оптическая)
N169 (2003-11-04 16:02:00) [11]
С USB мышкой действительно можно отловить, легко, по WM_DEVICECHANGE; с PS/2 - нет, однозначно.
Есть, правда, непрограммный вариант - просто прижать мышиный шнур к столу скобкой на шурупах. Тогда вору придётся шнур рвать. А кому нужна мыша без разъёма?
Legran (2003-11-04 15:26:00) [12]
Удалено модератором
Лёша (2003-11-04 14:20:00) [13]
как правило, в данной ситуации, очень хорошо отлавливает отсоединение мыши охрана.
Sam Stone (2003-11-04 12:16:00) [14]
> дети начинают тырить шарики от мышей. Проверено
На такую ботву можно их заклеивать ;) (для чистки придется разбирать)
Хм, а "пинговать" мышу низя?(раз в несколько секунд)
Или это прокатит только для усб?(в смысле, что выдернули)
ion (2003-11-04 09:23:00) [15]
Если мыша USB то не проще ли проверять статус девайса? Можно смотреть в сторону компонентов от MiTeC, я покраней мере с помошью их контролирую изменения в оборудовании своей конторы
Song (2003-11-04 09:14:00) [16]
>>А вы - НЕТ..
Потому что пробовал.
В АПИ есть функция, которая об этом говорит. Так вот она меняет своё "мнение" только после перезагрузки.
Про USB правда не знаю.
Геннадий (2003-11-03 15:46:00) [17]
> Обычно, когда эта проблема решается, дети начинают тырить
> шарики от мышей. Проверено. Сам работал некоторое время
> на клуб.
Хе! А у нас все оптические! P:)
Woolen (2003-11-03 13:46:00) [18]
> Работаю в Инет-клубе и эта проблема в последнее время стала
> переходить все мыслимые границы
Обычно, когда эта проблема решается, дети начинают тырить шарики от мышей. Проверено. Сам работал некоторое время на клуб.
Геннадий (2003-11-03 13:43:00) [19]
> app © (03.11.03 13:35) [7]
> Ящик в язик и замок + локальная сигнализация, заодно и питание
> вывести администратору.
Мне бы чего более интегрированного с операционной системой.
app (2003-11-03 13:35:00) [20]
Ящик в язик и замок + локальная сигнализация, заодно и питание вывести администратору.