Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

Зацените систему управления CD-ROM ом   Найти похожие ветки 

 
NewWonder ©   (2005-08-17 20:43) [0]

http://freesoft.ru/?id=667531


 
NewWonder ©   (2005-08-17 20:44) [1]

Глупость, конечно, но всё же :)


 
KilkennyCat ©   (2005-08-17 20:45) [2]

не работает на ноутбуке.


 
NewWonder ©   (2005-08-17 20:46) [3]

Как не работает?


 
NewWonder ©   (2005-08-17 20:47) [4]

Пробовал выбирать оптические приводы?


 
KilkennyCat ©   (2005-08-17 20:48) [5]


> Как не работает?


Не закрывает!!!


 
NewWonder ©   (2005-08-17 20:50) [6]

А открывает?


 
NewWonder ©   (2005-08-17 20:52) [7]

Надо же :( Вот млин... Надо дорабатывать...


 
KilkennyCat ©   (2005-08-17 20:52) [8]

открывает.  Но закрывать один фиг руками приходится. Так что, дорабатывай. :)))


 
vrem   (2005-08-17 20:55) [9]

:) срочно дорабатывать :)


 
AlexWlad ©   (2005-08-17 20:57) [10]

KilkennyCat ©   (17.08.05 20:52) [8]

В смысле - MessageBox("Пожалуйста, закройте сидюк", MB_OK); ???


 
DeadMeat ©   (2005-08-17 22:51) [11]


> Не закрывает!!!

Во блин... сам не сразу врубился.. Хе..

ДОРАБАТЫВАТЬ!! ОБЯЗАТЕЛЬНО!!

---
...Death Is Only The Begining...


 
BiN ©   (2005-08-17 22:57) [12]

"Система управления CD-ROM"ом" - это первая стадия глюкотворчества, за которой (или во время оной) обычно следует "запуздыривание-иконки-туда-где-часики". Ну а верхом апофеоза системного суперкодинга следует, очевидно, считать скрытие процесса под Win98.

ничего личного.


 
Джо ©   (2005-08-17 23:14) [13]


>  [12] BiN ©   (17.08.05 22:57)

Да, троица неразлучная.


 
NewWonder ©   (2005-08-18 14:52) [14]

А у меня закрывает :( В чём может быть причина.
О проге. Несерьёзная софтина, конечно. Но писал больше для себя (расположение системника таково), кроме того, один CD-ROM не открывается по нажатию... Так что не такая уж бесполезная программа.


 
Kerk ©   (2005-08-18 14:54) [15]


> Зацените систему управления CD-ROM"ом

А нафига она нужна?


 
Rouse_ ©   (2005-08-18 14:57) [16]

Хочу систему управления дисководом ;)


 
NewWonder ©   (2005-08-18 14:59) [17]

1) не видит CDюк после ручново открытия (с помошью кнопки) - так у моего друга
2) системник далековат  - это у меня
3) кнопка заедает - тоже у меня
4) посмотрите сами: http://www.worlds3d.mirgames.ru/cdc_2_1.htm


 
Плохиш ©   (2005-08-18 15:32) [18]

4. Новое в версии 2.1

 - Трёхмерная модель Вашего CD-ROM’а;

У меня неправильную модель показывает.


 
Игорь Шевченко ©   (2005-08-18 15:37) [19]

Программист должен сделать в своей жизни три дела:

1. Запихнуть иконку в трей (туда, где часики)
2. Скрыть процесс от Ctrl+Alt+Del в XP
3. Создать самоудаляющуюся программу.

В процессе реализации этих идей программист обязан наступить на все возможные грабли, которые в избытке раскиданы на пути, прежде чем к нему придет просветление и он спросит себя: "А что это я фигней маюсь ?".


 
Antonn ©   (2005-08-18 17:47) [20]

1. About - прочитать все надписи еще раз:)
2. Курсор на ссылке надо менять
3. Изменение размеров формы - смотрели что происходит с 3Д?
4. Как то не синхронно на 3Д подставка заезжает, у меня уже лоток зактывается, пока она начнет двигаться.
5. Битмапы на кнопках/меню надо получше обработать, края рваные, совсем не смотрится.
6. В выборе приводов надо бы убрать винты(все таки проверил, вдруг HDD вывалится:))
7. Звук - не смешно...
8. Вроде написано: "не требует установки, не сорит...", какого она копируется в C:\Windows и заносит себя в реестр???
9. хм.. 12960Кб В оперативке, 8628Кб в Виртуальной памяти. Не много ли?
10. Прозрачность или убрать, или вывести регулятор.


 
KilkennyCat ©   (2005-08-18 17:58) [21]


> [14] NewWonder ©   (18.08.05 14:52)
> А у меня закрывает


У тебя на ноутбуке закрывает?! Я хочу такой ноутбук... Наверное, и дисплей тоже автоматически работает, на откр-закр...:))


> 19] Игорь Шевченко ©   (18.08.05 15:37)
> Программист должен сделать в своей жизни три дела:
>
> 1. Запихнуть иконку в трей (туда, где часики)
> 2. Скрыть процесс от Ctrl+Alt+Del в XP
> 3. Создать самоудаляющуюся программу.
>
> В процессе реализации этих идей программист обязан наступить
> на все возможные грабли, которые в избытке раскиданы на
> пути, прежде чем к нему придет просветление и он спросит
> себя: "А что это я фигней маюсь ?".


В процессе реализации этих идей программист обязан отсидеть на форумах 1024 человеко\часов, потратить в десять раз больше этих же часов, но других человеков. А просветление может и не прийти.


 
oldman ©   (2005-08-18 18:01) [22]


> Игорь Шевченко ©   (18.08.05 15:37) [19]
> Программист должен сделать в своей жизни три дела:
>
> 1. Запихнуть иконку в трей (туда, где часики)
> 2. Скрыть процесс от Ctrl+Alt+Del в XP
> 3. Создать самоудаляющуюся программу.


1. Это - посадить дерево
2. Это - построить дом
3. Это - родить сына

:))))))))


 
Игорь Шевченко ©   (2005-08-18 18:01) [23]

KilkennyCat ©   (18.08.05 17:58) [21]


> В процессе реализации этих идей программист обязан отсидеть
> на форумах 1024 человеко\часов, потратить в десять раз больше
> этих же часов, но других человеков. А просветление может
> и не прийти.


Тогда рекомендуется народный метод лечения сколиоза :)


 
Rouse_ ©   (2005-08-18 18:03) [24]

Всетаки не пойму прикола. Сразу говорю прогу не качал...
Ну узнал ты как открывать/закрывать лоток, а смысл писать целую тулзу? Вот узнал я как делать ShellExecute, чичас думаю - а может написать тулзу которая файлы запускает? Даже не смешно...

ЗЫ: Ничего личного, просто не понятна логика, у программиста она должна присутствовать де факто...


 
Юрий Зотов ©   (2005-08-18 18:42) [25]

РЕЦЕНЗИЯ на программу CD Closer v2.1

Когда в описании программы я прочитал фразу "функциональность, по сравнению с первой версией, возросла многократно", то подумал, что вторая версия, видимо, умеет не только закрывать лоток (как первая, судя по ее названию), но еще и умеет его открывать (потому как больше с CD-приводом ничего делать и не нужно - ведь диск в него все равно придется запихивать ручками).

Но когда я прочитал [8], то понял, что ошибся. Оказывается, версия 2 является не расширением версии 1, а ее дополнением. Потому что версия 1 умела только закрывать лоток, а версия 2, как выяснилось, умеет только его открывать.

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

Для тех, кто не ходил по ссылке, привожу краткое описание программного комплекса. Он состоит из 2-х программ (правда, почему-то они называются одинаково и отличаются лишь номером версии - но не верьте, это совершенно разные программы, дополняющие одна другую до полного комплекса). С точки зрения пользователя, одна из этих двух программ умеет открывать лоток CD, другая - закрывать его. А с точки зрения программиста, каждая программа содержит в себе ровно один обработчик OnClick, и в каждом из этих двух обработчиков написана ровно одна строка, сдернутая с Инета. Комплекс разработан (цитирую) "по многочисленным просьбам пользователей" фирмой с красивым названием "студия Dream Software".

Скачивать этот шедевр софтверного творчества я все же не стал - мне не влом и пальцем на кнопку нажать. Даже проще, и никаких глюков. Гарантированно.

======================================

Данная рецензия любезно предоставлена фирмой с ваще афигительно красивым названием (и 36-ю годами на софтверном рынке):
YurZoSoft SuperDream PuperCool Inc. (R) (TM) (C) 1969-2005.


 
Rouse_ ©   (2005-08-18 18:45) [26]

> 1969-2005.
Юр ты как родился сразу за комп? ;)


 
Rouse_ ©   (2005-08-18 18:47) [27]

Блин, не так посчитал :))))))))))))


 
Rouse_ ©   (2005-08-18 18:49) [28]

Кста... к слову будет сказано:
> студия Dream Software = студия Сонное Программное обеспечение ;)
Теперь понятно при чем тут сидюк :)))))))))


 
Юрий Зотов ©   (2005-08-18 18:52) [29]

> Rouse_ ©   (18.08.05 18:45) [26]

Не, я в 69-м написал свою первую программу. Она два плюс два складывала, причем тоже с глюками. И, конечно, же, я сразу придумал "ваще афигительно красивое" название фирмы, а свой шедевр стал активно распространять. Вот только жаль, что тогда Инета не было, а то Билли щас бы в сторонке отдыхал. Куря нервно.


 
TUser ©   (2005-08-18 18:52) [30]

> Но писал больше для себя (расположение системника таково),

Тут один уже писал для себя прогу, - чтобы разбираться в своих старых исходниках :)

А по поводу расположения системника - очень интересно. В смысле - я обычно  выдвигаю лоток CD чтобы вставить туда диск или вынуть оттуда. То есть тянуться-то к нему все равно придется. Или у тебя этот процевв - задвигания и выдвигания - самодостаточен?


 
Юрий Зотов ©   (2005-08-18 18:54) [31]

> TUser ©   (18.08.05 18:52) [30]
> процевв - задвигания и выдвигания - самодостаточен?

"Входит... и выходит..."
(с) Ослик Иа-Иа.


 
Плохиш ©   (2005-08-18 19:03) [32]

Удалено модератором


 
vrem   (2005-08-18 19:16) [33]

автор, про прикол - на ноуте сидиром сам не закрывается, нужно рукой задвигать его до щелчка(не кнопкой!). когда же нужно открыть, то крышка сидирома всего лишь отщёлкивается, и опять же рукой сидиром выдвигаешь.


 
Agent13 ©   (2005-08-18 19:52) [34]

Н-да, внушаить. Выдвигалка ЦД с 3Д-анимацией. Я бы до такого не додумался...


 
delirium-system-2   (2005-08-18 19:55) [35]

TUser ©   (18.08.05 18:52) [30]

Телекинез.


 
Antonn ©   (2005-08-18 19:59) [36]

TUser ©   (18.08.05 18:52) [30]
Или у тебя этот процевв - задвигания и выдвигания - самодостаточен?

у него СД-чейджер


 
delirium-system-2   (2005-08-18 20:22) [37]

Кстати, вот реальная идея.

Сделай улититу, ведущую базу данных серийных номеров CD. При вставке в дисковод CD с серийным номером, занесенным в БД, улитита (оформленная в виде сервиса) должна говорить: "Извините, мест нет." и выплевывать диск. Обязательно с открытыми исходниками. Буду пользоваться, обещаю.


 
TUser ©   (2005-08-18 20:54) [38]

> delirium-system-2

А зачем, интересно, нужна такая утилита.


 
Defunct ©   (2005-08-18 20:57) [39]

CD Closer v2.1  
Утилита предназначенная для программного управления оптическими накопителями. Изначально я писал программку просто для интереса. После написания первой версии программы я показал её нескольким знакомым программистам и она всем очень понравилась. Мне указали наиболее очевидные недостатки программки, и вот появилась вторая версия программы CD Closer! В программе было реализовано много интересностей, а функциональность, по сравнению с первой версией, возросла многократно. Слышал много отзывов вроде «сложно представить более навороченную систему управления подставкой для кофе…». Прошёл год. За это время Nic Software стала студией Dream Software. И вот, по многочисленным просьбам пользователей, я решил доработать старенькую программу.


Как это констрастирует с этим:

NewWonder ©   (17.08.05 20:44) [1]
Глупость, конечно, но всё же :)


 
delirium-system-2   (2005-08-18 21:02) [40]

TUser ©   (18.08.05 20:54) [38]

Для усложнения жизни пользователям.


 
КаПиБаРа ©   (2005-08-19 07:52) [41]

ТЗ на программу для CD-Rom`a

1. Основной модуль. Кушает не более 50 кБ. Не сидит в трее.
1.1. При закрытии лотка определяет содержимое диска
1.2. При обнаружении киношки - запускает проигрыватель
1.3. При обнаружении фотографий - запускает просмотрщик
1.4. При обнаружении вирусов - выполняет их.
1.5. При обнаружении других заданных параметров выполняет еще что-то. Например копирование файлов в определенное место (синхронизация) и т.д. и т.п.
1.6. Перед выполнением любых действий выдает сообщение с возможностью отмены. Если действие не критичное (например запуск кино), то возможно автоматическое выполнение, если не нажата отмена по истечении определенного времени.
1.7. Стартует как сервис или в автозагрузке.

2. Модуль управления.
2.1. Всевозможные настройки для основного модуля.
2.2. Запуск-останов основного модуля
2.3. Открывание-закрывание лотка CD-Rom`а
2.4. Можно запуздырить иконку в трей


 
boriskb ©   (2005-08-19 08:40) [42]

NewWonder ©   (17.08.05 20:43)

Не печалься.
Все ты правильно делал, кроме одного:
Не надо было эту прогу рекламировать на весь инет.

Пиши еще и не обижайся на здешних - им только дай позубоскалить :))


 
Юрий Зотов ©   (2005-08-19 11:54) [43]

> boriskb ©   (19.08.05 08:40) [42]

Вот с этим согласен абсолютно. Писать - надо. Обязательно надо. И выдвигалки лотков, и все остальное.

А вот гнуть пальцы а-ля "студия Dream Software" - это не надо. Смешно это. Поскольку программка-то - простейшая. Учебная. И до "Dream Software" ей - как до Луны.


 
KilkennyCat ©   (2005-08-19 12:04) [44]


> 41] КаПиБаРа ©   (19.08.05 07:52)
> ТЗ на программу для CD-Rom`a
> 2. Модуль управления.


2.5 Remote control (shvabra or TV-pult)


 
NewWonder ©   (2005-08-19 12:46) [45]


> ТЗ на программу для CD-Rom`a
>
> 1. Основной модуль. Кушает не более 50 кБ. Не сидит в трее.
> 1.1. При закрытии лотка определяет содержимое диска
> 1.2. При обнаружении киношки - запускает проигрыватель
> 1.3. При обнаружении фотографий - запускает просмотрщик
> 1.4. При обнаружении вирусов - выполняет их.
> 1.5. При обнаружении других заданных параметров выполняет
> еще что-то. Например копирование файлов в определенное место
> (синхронизация) и т.д. и т.п.
> 1.6. Перед выполнением любых действий выдает сообщение с
> возможностью отмены. Если действие не критичное (например
> запуск кино), то возможно автоматическое выполнение, если
> не нажата отмена по истечении определенного времени.
> 1.7. Стартует как сервис или в автозагрузке.
>
> 2. Модуль управления.
> 2.1. Всевозможные настройки для основного модуля.
> 2.2. Запуск-останов основного модуля
> 2.3. Открывание-закрывание лотка CD-Rom`а
> 2.4. Можно запуздырить иконку в трей

А вот это идея!


 
Vlad Oshin ©   (2005-08-19 13:06) [46]

а я вот думаю: чего тут м/б на 50 постов с привлечением многих знаменитостей?
а тут, как обычно,  2х2 считают, оказывается :)


 
имя   (2005-08-19 13:14) [47]

Удалено модератором


 
Rouse_ ©   (2005-08-19 13:14) [48]

Я в свое время придумал что написать. Руки пока не дотягиваются. Идея такова. Ловим сообщения WM_DEVICECHANGE c кодом WParam = DBT_DEVICEARRIVAL, вставлен новый компакт. Берем его серийник смотрим есть ли в базе. Если нет - помещаем в базу ну и там какую нить формочку чтоб пользовател ввел описание сидюка. А теперь: все раздают компакт диски а потом пытаються вспомнить "кому ж я его отдал?". Так вот когда отдаем компакт - лезем в баз и помечаем, такой то сидюк ушел дяде Васе, такой то дяде Пете и т.п. Можно еще прибабахов навернуть. Былоб время давно бы такую тулзу написал...


 
kot andrei ©   (2005-08-19 13:17) [49]

Rouse_ ©   (19.08.05 13:14) [48]

такую тузлу кто-то из здешних уже писал, даже тестить помоему предлагал, помню там еще регулярно вываливалось List of bounds (-1)


 
Vlad Oshin ©   (2005-08-19 13:21) [50]

дарю идею простейшей программы:
БД результатов игр в футбол. Возможность закачки последней ин-фы.(проект не умрет пока есть футбол :))
Всякие сортировки. Открытый формат подразумевает версии сторонних разработчиков, плагинов и т.п.
Задача: подумать, сделать, заплатить операторам на набивку статистики.


 
Rouse_ ©   (2005-08-19 13:32) [51]

> помню там еще регулярно вываливалось List of bounds (-1)
Отвечю словами дяди Юры: ЭТО писал программист, ЭТО нужно переписывать :)


 
delirium-system-2   (2005-08-19 13:32) [52]

Rouse_ ©   (19.08.05 13:14) [48]

Интересно увидеть реально работающий код пойматия WM_DEVICECHANGE c кодом WParam = DBT_DEVICEARRIVAL без использования DDK и написания всяческих фильтров файловых систем. Весьма непросто это сделать.


 
Rouse_ ©   (2005-08-19 13:37) [53]

> Весьма непросто это сделать.
Да ну...

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

const
 // GUID взят из INF файла драйвера
 ClassGuid: TGUID = "{36fc9e60-c465-11cf-8056-444553540001}";

 DBT_DEVTYP_DEVICEINTERFACE  = $00000005;

 //Event that has occurred. This parameter can be one of the following values from the Dbt.h header file.

 // A device has been added to or removed from the system.
 // Windows NT 4.0 and Windows Me/98/95:  This value is not supported.
 DBT_DEVNODES_CHANGED        = $00000007;

 // Permission is requested to change the current configuration (dock or undock).
 DBT_QUERYCHANGECONFIG       = $00000017;

 // The current configuration has changed, due to a dock or undock.
 DBT_CONFIGCHANGED           = $00000018;

 // A request to change the current configuration (dock or undock) has been canceled.
 DBT_CONFIGCHANGECANCELED    = $00000019;

 // A device or piece of media has been inserted and is now available.
 DBT_DEVICEARRIVAL           = $00008000;

 // Permission is requested to remove a device or piece of media.
 // Any application can deny this request and cancel the removal.
 DBT_DEVICEQUERYREMOVE       = $00008001;

 // A request to remove a device or piece of media has been canceled.
 DBT_DEVICEQUERYREMOVEFAILED = $00008002;

 // A device or piece of media is about to be removed. Cannot be denied.
 DBT_DEVICEREMOVEPENDING     = $00008003;

 // A device or piece of media has been removed.
 DBT_DEVICEREMOVECOMPLETE    = $00008004;

 // A device-specific event has occurred.
 DBT_DEVICETYPESPECIFIC      = $00008005;

 // A custom event has occurred.
 // Windows NT 4.0 and Windows 95:  This value is not supported.
 DBT_CUSTOMEVENT             = $00008006;

 // The meaning of this message is user-defined.
 DBT_USERDEFINED             = $0000FFFF;

type
 PDEV_BROADCAST_DEVICEINTERFACE = ^TDEV_BROADCAST_DEVICEINTERFACE;
 TDEV_BROADCAST_DEVICEINTERFACE = packed record
   dbcc_size: DWORD;
   dbcc_devicetype: DWORD;
   dbcc_reserved: DWORD;
   dbcc_classguid: TGUID;
   dbcc_name: PCHAR;
 end;

 TForm1 = class(TForm)
   Memo1: TMemo;
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   AdvWnd: HWND;
   hNotify: HDEVNOTIFY;
   procedure WMDeviceChange(var Message: TMessage);
 end;

 function RegisterDeviceNotificationA(hRecipient: THandle;
   NotificationFilter: PDEV_BROADCAST_DEVICEINTERFACE;
   Flags: DWORD): HDEVNOTIFY; stdcall; external user32;
 function UnregisterDeviceNotification(Handle: HDEVNOTIFY): BOOL; stdcall; external user32;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
 NotificationFilter: TDEV_BROADCAST_DEVICEINTERFACE;
begin
 NotificationFilter.dbcc_size := SizeOf(NotificationFilter);
 NotificationFilter.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE;
 NotificationFilter.dbcc_classguid := ClassGuid;
 NotificationFilter.dbcc_name := PChar("");
 hNotify := RegisterDeviceNotificationA(Handle, @NotificationFilter,
   DEVICE_NOTIFY_WINDOW_HANDLE);
 AdvWnd := AllocateHWnd(WMDeviceChange);
end;

// Лог:
{
Вставили ключ
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED

Вытащили ключ
DBT_DEVNODES_CHANGED

Вставили флэш
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVICEARRIVAL
DBT_DEVNODES_CHANGED

Вытащили флэш
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVICEREMOVECOMPLETE

Подключили сетевой диск
DBT_DEVICEARRIVAL

Отключили сетевой диск
DBT_DEVICEREMOVECOMPLETE

подрубили через SubSt
DBT_DEVICEARRIVAL

откулючили через subst
DBT_DEVICEREMOVECOMPLETE    
}

procedure TForm1.WMDeviceChange(var Message: TMessage);
begin
 with Message do
 begin
   if Msg = WM_DEVICECHANGE then
     case WParam of
       DBT_DEVNODES_CHANGED: Memo1.Lines.Add("DBT_DEVNODES_CHANGED");
       DBT_QUERYCHANGECONFIG: Memo1.Lines.Add("DBT_QUERYCHANGECONFIG");
       DBT_CONFIGCHANGED: Memo1.Lines.Add("DBT_CONFIGCHANGED");
       DBT_CONFIGCHANGECANCELED: Memo1.Lines.Add("DBT_CONFIGCHANGECANCELED");
       DBT_DEVICEARRIVAL: Memo1.Lines.Add("DBT_DEVICEARRIVAL");
       DBT_DEVICEQUERYREMOVE: Memo1.Lines.Add("DBT_DEVICEQUERYREMOVE");
       DBT_DEVICEQUERYREMOVEFAILED: Memo1.Lines.Add("DBT_DEVICEQUERYREMOVEFAILED");
       DBT_DEVICEREMOVEPENDING: Memo1.Lines.Add("DBT_DEVICEREMOVEPENDING");
       DBT_DEVICEREMOVECOMPLETE: Memo1.Lines.Add("DBT_DEVICEREMOVECOMPLETE");
       DBT_DEVICETYPESPECIFIC: Memo1.Lines.Add("DBT_DEVICETYPESPECIFIC");
       DBT_CUSTOMEVENT: Memo1.Lines.Add("DBT_CUSTOMEVENT");
       DBT_USERDEFINED: Memo1.Lines.Add("DBT_USERDEFINED");
     end;
 end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 UnregisterDeviceNotification(hNotify);
 DeallocateHWnd(AdvWnd);
end;

end.


 
Игорь Шевченко ©   (2005-08-19 13:38) [54]

delirium-system-2   (19.08.05 13:32) [52]

Дарю.

unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls;

type
 TfMain = class(TForm)
   Label1: TLabel;
   lbChangeCount: TLabel;
   ListView: TListView;
   procedure FormCreate(Sender: TObject);
 private
   FCount : Integer;
   procedure WMDeviceChange (var Message : TMessage);
     message WM_DEVICECHANGE;
   procedure UpdateCount;
   procedure RegisterEvent (EventCode : Cardinal);
 end;

var
 fMain: TfMain;

implementation
uses
 JwaDbt;

{$R *.dfm}

{ TfMain }

procedure TfMain.UpdateCount;
begin
 lbChangeCount.Caption := IntToStr(FCount);
end;

procedure TfMain.WMDeviceChange(var Message: TMessage);
begin
 RegisterEvent (Message.WParam);
 inherited;
 UpdateCount;
end;

procedure TfMain.FormCreate(Sender: TObject);
begin
 UpdateCount;
end;

procedure TfMain.RegisterEvent(EventCode: Cardinal);
var
 S : string;
begin
 Inc(FCount);
 with ListView.Items.Add do begin
   Caption := IntToStr(FCount);
   case EventCode of
   DBT_CONFIGCHANGECANCELED:
     S := "DBT_CONFIGCHANGECANCELED";
   DBT_CONFIGCHANGED:
     S := "DBT_CONFIGCHANGED";
   DBT_CUSTOMEVENT:
     S := "DBT_CUSTOMEVENT";
   DBT_DEVICEARRIVAL:
     S := "DBT_DEVICEARRIVAL";
   DBT_DEVICEQUERYREMOVE:
     S := "DBT_DEVICEQUERYREMOVE";
   DBT_DEVICEQUERYREMOVEFAILED:
     S := "DBT_DEVICEQUERYREMOVEFAILED";
   DBT_DEVICEREMOVECOMPLETE:
     S := "DBT_DEVICEREMOVECOMPLETE";
   DBT_DEVICEREMOVEPENDING:
     S := "DBT_DEVICEREMOVEPENDING";
   DBT_DEVICETYPESPECIFIC:
     S := "DBT_DEVICETYPESPECIFIC";
   DBT_DEVNODES_CHANGED:
     S := "DBT_DEVNODES_CHANGED";
   DBT_QUERYCHANGECONFIG:
     S := "DBT_QUERYCHANGECONFIG";
   DBT_USERDEFINED:
     S := "DBT_USERDEFINED";
   else
     S := Format ("Unknown Event %d", [EventCode]);
   end;
   SubItems.Add(S);
 end;
end;

end.


object fMain: TfMain
 Left = 192
 Top = 107
 Width = 544
 Height = 375
 Caption = "fMain"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object Label1: TLabel
   Left = 20
   Top = 12
   Width = 81
   Height = 13
   Caption = "Device changes:"
 end
 object lbChangeCount: TLabel
   Left = 108
   Top = 12
   Width = 6
   Height = 13
   Caption = "0"
 end
 object ListView: TListView
   Left = 4
   Top = 32
   Width = 525
   Height = 309
   Columns = <
     item
       Caption = "Event "#8470
       Width = 55
     end
     item
       Caption = "Kind"
       Width = 180
     end>
   TabOrder = 0
   ViewStyle = vsReport
 end
end


 
Rouse_ ©   (2005-08-19 13:39) [55]

> delirium-system-2   (19.08.05 13:32) [52]
Кстати учите матчасть, это Platform SDK: Device I/O

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/wm_devicechange.asp


 
delirium-system-2   (2005-08-19 13:42) [56]

И работает (в данный момент delphi не имеется)?
Выясним, что не так делал...


 
Игорь Шевченко ©   (2005-08-19 13:43) [57]

delirium-system-2   (19.08.05 13:42) [56]

Не работало бы, я б не постил


 
boriskb ©   (2005-08-19 13:45) [58]

Vlad Oshin ©   (19.08.05 13:21) [50]
дарю идею простейшей программы:


В инете есть много таких.
Я года 3 юзал такую - очень качественно сделана.
И базы (обновления) в инете поддерживались:
Чемпионаты чуть не всех европейский стран - в том числе России;
Кубки.
Разнообразнейшая статистика.

Насколько помню - на каком то Питерском сайте она лежала.
Урл сейчас не вспомню


 
Rouse_ ©   (2005-08-19 13:46) [59]

Мне вообще интересно узнать, как можно написать, чтоб не работало? :)


 
boriskb ©   (2005-08-19 13:48) [60]

Rouse_ ©   (19.08.05 13:46) [59]
Мне вообще интересно узнать, как можно написать, чтоб не работало? :)


Приходи ко мне - научу :)))))


 
Андрей Жук ©   (2005-08-19 13:50) [61]


> Rouse_ ©   (19.08.05 13:14) [48] [Новое
>сообщение][Ответить]
> Я в свое время придумал что написать. Руки пока не
> дотягиваются. Идея такова. Ловим сообщения
> WM_DEVICECHANGE c кодом WParam = DBT_DEVICEARRIVAL,
> вставлен новый компакт. Берем его серийник смотрим
> есть ли в базе. Если нет - помещаем в базу ну и там
> какую нить формочку чтоб пользовател ввел описание
> сидюка. А теперь: все раздают компакт диски а потом
> пытаються вспомнить "кому ж я его отдал?". Так вот
> когда отдаем компакт - лезем в баз и помечаем, такой
> то сидюк ушел дяде Васе, такой то дяде Пете и т.п.
> Можно еще прибабахов навернуть. Былоб время давно бы
> такую тулзу написал...

Ну а пользы от того, что ты будешь ловить вставки сидюка? Можно простую БД для этой цели использовать, все одно ручками придется указывать, что отдал и кому отдал


 
kot andrei ©   (2005-08-19 13:54) [62]

Андрей Жук ©   (19.08.05 13:50) [61]

польза в том что можно сканировать содержимое диска , хотя бы какие папки на нем есть,- и сохранять, а потом легко вспомнить что это был за диск, и как много ты потерял отдав его дяде Васе


 
КаПиБаРа ©   (2005-08-19 14:19) [63]

Rouse_ ©   (19.08.05 13:14) [48]
Можно еще прибабахов навернуть

Например сканирование диска на читаемость. А то отдашь хороший, а вернут покоцаный.

Андрей Жук ©   (19.08.05 13:50) [61]
Ну а пользы от того, что ты будешь ловить вставки сидюка?

Вставил - диск. Ткнул мышкой на дядю Васю. Все. Факт передачи зарегистрирован.


 
Андрей Жук ©   (2005-08-19 14:56) [64]


> Вставил - диск. Ткнул мышкой на дядю Васю. Все. Факт
> передачи зарегистрирован.

То еще нужно комп включать :)


 
Rule ©   (2005-08-19 15:57) [65]

Андрей Жук ©   (19.08.05 14:56) [64]
согласен, в этом плане наладоннки рулит, достал ткнул в имя диска ткнул в дядю Васю и все кирдык ...


 
КаПиБаРа ©   (2005-08-19 16:01) [66]

Андрей Жук ©   (19.08.05 14:56) [64]
Для этого его нужно сначала выключить :)


 
KilkennyCat ©   (2005-08-19 16:03) [67]

ДядямВасям отдавать оригинал?! Фи!


 
Vlad Oshin ©   (2005-08-19 16:09) [68]


> boriskb ©   (19.08.05 13:45) [58]

хорошо ):
просто, я эту идею с 2000 года дарю.
и подарился бы сам, еслиб была причная вещь.


 
delirium-system-2   (2005-08-19 16:19) [69]

Rouse_ ©   (19.08.05 13:46) [59]

ГЫ. Раскопал свой старый код, так практически аналогично [53], только GUID был DEVCLASS_CDROM, однако, после замены GUID`а ничего не изменилось. Рассказывайте в чем секрет, зачем еще одна оконная процедура?


 
Rouse_ ©   (2005-08-19 16:33) [70]

> Рассказывайте в чем секрет, зачем еще одна оконная процедура?
Да можно и не заводить ее, можно сделать как у Игоря. Хотя я понял в чем твоя проблема. Ты наверное пытался поймать LPT устройство :) Там такие штучки проходят не сразу в отличие от USB :)
Этот код я тестировал для Guardant Stealth 2 - электронный ключик...


 
MeF Dei Corvi ©   (2005-08-19 16:36) [71]


> ткнул в имя диска ткнул в дядю Васю

Бедный дядя Вася :) в него уже наладонниками тычат :)


 
ISP ©   (2005-08-19 17:42) [72]

> Rouse_ ©   (19.08.05 13:14) [48]
> то сидюк ушел дяде Васе, такой то дяде Пете и т.п.
> Можно еще прибабахов навернуть.

Можно камеру присобачить для, так сказать, визуальной документализации факта передачи. С модулем ИИ для определения имени/фамилии/пола по фотографии. Фиг тогда кто отвертится.


 
delirium-system-2   (2005-08-19 19:56) [73]

Rouse_ ©   (19.08.05 16:33) [70]

Как выяснилось, нотификация с CD-ROM приходит только при включенном AutoStart, который у меня всегда отключен. Метод не очень надежный.


 
[lamer]Barmaglot ©   (2005-08-19 23:27) [74]

На сколько я помню, этот код не работает в 98-м...


 
delirium-system-2   (2005-08-19 23:30) [75]

[lamer]Barmaglot ©   (19.08.05 23:27) [74]
Работает, во всяком случае при захвате CD-ROM VirtualPC Ж)



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.69 MB
Время: 0.013 c
6-1117176041
Poul
2005-05-27 10:40
2005.09.18
Обработка Ping-ов


1-1124115313
MegaVolt
2005-08-15 18:15
2005.09.18
MainMenu + Images = странности


14-1125004177
ronyn
2005-08-26 01:09
2005.09.18
Как защитить программу


2-1123677426
DeepProg
2005-08-10 16:37
2005.09.18
ADO. Parameters.


5-1099825350
проходящий мимо
2004-11-07 14:02
2005.09.18
компонент на основе edit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский