Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ловим отсоединение мыши... [D7, Win2k]


Страницы:   1 2

Геннадий ©   (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]

Ящик в язик и замок + локальная сигнализация, заодно и питание вывести администратору.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо