Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Кнопка резервного копирования в HDD


Автор: Artem148 13.4.2011, 19:34
Доброго времени суток!

У меня есть в кожухе для HDD кнопка резервного копирования. Можно ли перехватить сообщение о её нажатии?

Заранее спасибо!

Автор: jhonyxakep 14.4.2011, 05:08
У HDD есть какой-нибудь софт, который так умеет делать?

Автор: Artem148 14.4.2011, 18:58
Да, есть стандартная голимая программа, шла на оптическом диски.

Автор: Snowy 15.4.2011, 00:40
Вот выключи ее и лови сообщения.
Выясни какое сообщение шлется броадкастом, при нажат на кнопу.
Любая тулза по отлову сообщений сгодится (например стандартный spy++)

Автор: jhonyxakep 15.4.2011, 07:19
Еще можно попробовать поковырять её дллки

Автор: Artem148 15.4.2011, 15:24
Спасибо, попрубую!

Автор: Artem148 15.4.2011, 16:50
Можно поподробней о SPY++ ?

Автор: Snowy 15.4.2011, 17:07
А что тебя интересует?
http://forum.vingrad.ru/topic-127179.html
Выбираешь окно или процесс, жмёшь правой кнопой и просишь Messages.
Тебе покажут все сообщения.
Жми кнопу на устройстве и смотри, происходит ли при этом что-нибудь.
Для броадкастовых сообщений (как, например, подключение флешки) можешь выбрать любое окно или процесс - они шлются всем.
Если такого сообщения нет, то всё гораздо сложнее и неочевиднее.

Автор: Artem148 15.4.2011, 17:13
to jhonyxakep.  Прога называется "CloneMe"
Тут большая часть Dll 

Автор: Artem148 16.5.2011, 20:13
to Snowy. 
1) Message log в Spy++ вообще "молчит" - сообщений нет вообще, даже о движении мыши над формами! 
2) Вместе с прогой(CloneMe.exe) запускается(CloneMeServ.exe) 
3) Прога "узнаёт" о нажатии, даже когда закрыта(при запуске "вылазиют" сообщения: "Вы точно хотите архивировать ...", колличество       сообщений пропорционально колличеству нажатий)

P.S может в дровах поковырться?

Автор: Artem148 22.5.2011, 21:17
Эй, есть кто живой!?.

P.S: Ни уже ли я что-то не то сказал?

Автор: Snowy 23.5.2011, 11:10
А что нужно?
Ты просто что-то не так делаешь.
Попробуй бросить на форму ApplicationEvents и записывать в мемо номера всех сообщений, раз со spy не разобрался.

Автор: Artem148 27.5.2011, 14:16
Цитата

Попробуй бросить на форму ApplicationEvents и записывать в мемо номера всех сообщений, раз со spy не разобрался


1) а) Я разобрался со spy
    б) Сообщений нет только от стандартной проги(на пример от "Оперы" сообщений очень много(если не останавливать ловлю, то непрочитаешь - слишком быстро), от стандартной проги ни одного сообщения)

Цитата

Ты просто что-то не так делаешь


2) Всё может быть  smile , хотя что тут можно сделать не так:
   I)    Жмём "Find window" 
   II)  "Прицельчиком" находим нужное окно
   III)  Выбираем сообщения(радио кнопка)
   IV)  Сидим, смотрим, видим фигу  smile 

Цитата

А что нужно?


3) Хороший вопро - надо подумать...
   
Цитата

    У меня есть в кожухе для HDD кнопка резервного копирования. Как перехватить сообщение о её нажатии?
   

Я думаю это...    smile 

Автор: Snowy 27.5.2011, 14:54
Стандартную прогу вообще выключи. Скорее всего она все сообщения и давит.

Добавлено через 5 минут и 12 секунд
Цитата(Artem148 @  27.5.2011,  14:16 Найти цитируемый пост)
У меня есть в кожухе для HDD кнопка резервного копирования. Как перехватить сообщение о её нажатии?
Нажатие кнопки порождает какое-то событие в системе.
Чтобы его поймать, сначала нужно выяснить, что же это за событие.
А, поскольку кнопка находится у тебя, то мы оперируем пациента по переписке.
Я могу посоветовать каким инструментом пользоваться и что искать, а препарировать пациента - уж как-то сам.

Автор: Artem148 27.5.2011, 15:24
Скальпель, док... 

P.S 1) это сообщения с самой проги 
      2) повторюсь: жму кнопку бродкаст молчмт...

Автор: Artem148 27.5.2011, 16:00
 000702BC P message:0xC1A4 [Registered:"Click_CloneMeFirstButton"] wParam:00000000 lParam:00000000 time:2:05:33.046 point:(550, 226)
 000202B8 S message:0xC1A4 [Registered:"Click_CloneMeFirstButton"] wParam:00000000 lParam:00000000


А дальше?

P.S: Та прога определяет также и на сколько раздроблен диск: может лучше в дровах поковыряться?

Автор: Snowy 27.5.2011, 16:23
Дальше создай у формы обычную процедуру по поимке сообщения, только вместо WM_XXX пишешь $C1A4
Что касается непосредственно работы с диском - это уже другой вопрос.
Задача этой темы - поймать событие нажатия кнопки.

Автор: Artem148 27.5.2011, 16:33
Delphi: "illegal message method index" - надо пытаться через  "RegisterWindowMessage"

Автор: Snowy 27.5.2011, 16:50
Хм... Ну тогда лови все подряд через ApplicationEvents.OnMessage и отфильтровывай по номеру.

Автор: Artem148 27.5.2011, 17:02
А если через "RegisterWindowMessage"?

Автор: Snowy 27.5.2011, 17:08
Попробуй  smile 
Для дельфи этот номер отрицательный.
Но средствами API должно получиться.

Автор: Artem148 27.5.2011, 18:07
Зарегестрировали, с помощью какой функции её отлавливать?

Автор: Snowy 27.5.2011, 18:57
ApplicationEvents.OnMessage
Лови то что вернула RegisterWindowMessage

Автор: Artem148 29.5.2011, 12:11
to Snowy.   Мне не даёт покоя эта надпись, что это вообще такое([Registered:"Click_CloneMeFirstButton"]), и с чем это едят?

P.S Сообщени не "приходит"...

Автор: Artem148 29.5.2011, 13:10
Ещё один маленький нюанс: стандартная прога использует свою службу (MeDM)
 
P.S Остановили службу, запустили прогу - формы нет(признаков жизни тоже  smile ). Но стоит запустиь службу прога "оживает".

Автор: Artem148 29.5.2011, 13:29
MeDM - это, как выяснилось, Device Manager Service

Автор: Snowy 30.5.2011, 10:16
Цитата(Artem148 @  29.5.2011,  12:11 Найти цитируемый пост)
Мне не даёт покоя эта надпись, что это вообще такое([Registered:"Click_CloneMeFirstButton"])
Click_CloneMeFirstButton - Это строка, которую ты должен скормить RegisterWindowMessage. Тогда RegisterWindowMessage вернёт тебе номер сообщения, который ты должен ловить.

Цитата(Artem148 @  29.5.2011,  13:10 Найти цитируемый пост)
Ещё один маленький нюанс: стандартная прога использует свою службу (MeDM)
Значит эта служба разговаривает с устройствои и высылает сообщение Click_CloneMeFirstButton.

Автор: Artem148 31.5.2011, 10:33
Дано: 1)  MeDM.exe (\Windows\System32\MeDM.exe), он создаёт службу(MeDM), без которой прога запускается и "зависает" в процессах
           2) CloneMeServ.exe - эта прога запускается, и при её завершении запрос при нажатии на кнопку не выдаётся
           3) Сама прога - CloneMe.exe;  У  CloneMeServ.exe  и MeDM.exe никаких сообщений нет!

И последнее: Если прога запущена и отклучит службу и выгрузить MeDM, то сообщения приходят и вообще прога работает нормально. 

Автор: Artem148 5.6.2011, 21:06
Можно ли обратиться на примую к диску, к его свойствам?

Автор: Shyrik_UK 18.8.2011, 14:57
Тема вроде умерла, но вдруг будет полезно грядущим поколениям....

У меня тож веник с супер-пупер кнопкой. 
Смотрел сообщения, пытался подгрузить dll (в дебилдере) - не получилось нахрапом.
Однако, при внимательном рассмотрении того софта, что поставляется с вениким обнаружилось следующее: помимо кучки библиотек у меня два exe файла - один - тот, что стартует с системой и слушает нажатие, и второй - который занимается какраз "бэкапом".
Решение простое - пишем свою мини-прогу, которая запускает внешне-настроенный BackUp-прогу. Кладём её в директорию с дефолтным софтом и переименовываем exe-шник на тот, который шёл с веником (тот второй ). 
Всё работает и радует smile

Автор: Artem148 19.8.2011, 08:53
Shyrik_UK,  smile  после чтения собщения получил разрыв мозга...   smile  Очнулся в реанимаци...  smile 

Цитата

  Решение простое - пишем свою мини-прогу, которая запускает внешне-настроенный BackUp-прогу. Кладём её в директорию с дефолтным софтом и переименовываем exe-шник на тот, который шёл с веником (тот второй )... 

 
 Ага, красавчик (или красвица  smile ) конечно, суть вопроса была: "Не создать локальную прогу(прога должна быть Portable) для Back-Up`а", а "перехватить сообщение о нажатии кнопки, при том от источникаа не от левой, стороней проги!!!"

P.S: С чего ты решил(а), что я собираюсь использовать кнопку для Back-Up`а !? 

Автор: robt 23.8.2011, 14:18
а с чего вдруг все решили что от устройства подключенного по усб должно посылаца какое либо сообщение?

Автор: Artem148 24.8.2011, 09:00
robt, Выкладывай свой вариант... Послушаем!   smile 

Автор: robt 24.8.2011, 10:58
а что, тонкого намека мало?

посмотрел на твою подпись... будь попроще и люди к тибе потянуца

Автор: Artem148 24.8.2011, 14:03
robt, Куда уж проще ...  smile 

А тонкие намёки не все понимают  smile  

Автор: robt 24.8.2011, 21:20
покури тему про HID+USB=google.ru

Автор: Artem148 24.8.2011, 21:37
Может стоит поковыряться в с службе Plug-And-Play?

Автор: robt 24.8.2011, 21:56
зачем?

Автор: Artem148 24.8.2011, 22:07
Цитата

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

 Взято из описания службы

Автор: robt 25.8.2011, 09:48
нуи? зачем?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)