Софт

индекс
91,16

Mac Maniac

Привет! Это мой первый хабратопик (не считая песочницы)
и я даже не знаю увидит его кто-нибудь или нет :-)
Ну вот мне нравится некоторые фишки на Mac которых нету в Винде. По мере возможности я пишу их на скриптовом языке AutoHotKey дабы не чувствовать себя обделённым) Что? Вы ещё не знаете про этот язык? Ну чтож, скорее сюда www.autohotkey.com. Хотя это можно написать практически на любом полноценном языке, но примеры я приведу именно на этом, потомучто главное — идея.
Может быть это кому-то покажется полезным
Отображение подключённых девайсов и их извлечение
Как всё-таки удобно, когда на рабочем столе появляется ярлык только-что подключённого девайса. И также удобно его извлечение просто перемещением на значок означающий извлечение.

Конечно же есть разные утилитки для этого процесса (к примеру DeskDrive) но к сожалению она не позволяет простым переносом на заветную кнопочку извлечь CD/USB. В Моём случае значок извлечения — это просто ярлык на cкомпилированный EXE, которыя извлекает из Drag`n`Drop буквы устройств (да-да, возможно их выделить все и кинуть туда и они все извлекутся (и CD\DVD тоже)). Чтобы у ярлыка не отображалось имя, надо нажать «переименовать» и в поле ввода зажать ALT и быстро набрать на NumPad`е 0160. это комбинация поставит невидимый символ. для того чтобы все ярлыки на рабочем столе были такими, надо для каждого ярлыка проделать это n-ое количество раз, чтобы имена не совпадали.
exe + иконка тут
Для начала рассмотрим программу извлечения:
(простая версия. кидаем на съедение ярлыки устройств — они извлекается)
#NoEnv
#NoTrayIcon

Loop ;это бесконечный цикл. обрабатываем всю группу ярлыков
{
curr:=%A_Index% ;A_Index - номер итерации цикла

;Следует обратить внимание на := и %% это не значит что в curr
;пойдёт 1,2,3... туда пойдут значение %1%, %2%, .... - а это и есть ссылки

if(curr="") ;а вот и конец нашего бесконечного цикла :-)
ExitApp ;выход из приложения

FileGetShortcut, %curr%, OutTarget ;Берём Target из ярлыка
Driveletter := SubStr(OutTarget,1,2) ;Берём букву девайса из ярлыка
;========Дальше идёт известный пример извлечения из Help по AutoHotKey=====
hVolume := DllCall("CreateFile"
, Str, "\\.\" . Driveletter
, UInt, 0x80000000 | 0x40000000 ; GENERIC_READ | GENERIC_WRITE
, UInt, 0x1 | 0x2 ; FILE_SHARE_READ | FILE_SHARE_WRITE
, UInt, 0
, UInt, 0x3 ; OPEN_EXISTING
, UInt, 0, UInt, 0)
if hVolume <> -1
{
DllCall("DeviceIoControl" ;годится как для USB, так и для CD
, UInt, hVolume
, UInt, 0x2D4808 ; IOCTL_STORAGE_EJECT_MEDIA
, UInt, 0, UInt, 0, UInt, 0, UInt, 0
, UIntP, dwBytesReturned ; Unused.
, UInt, 0)
DllCall("CloseHandle", UInt, hVolume)
}
FileRecycle, %curr% ;удаляем ярлык
}
return

Но это была простая версия. сложная с «кучей наворотов» (Как раз вверху ссылка на сложную версию) выглядит так:
* если кинута не ссылка на девайс, а файл, то перемещаем его в корзину (старый добрый MAC)
* таже самая участь постигнет ссылка не на девайс а например на папку\файл в девайсе
* тоже самое и ссылкой на Жёсткие Диски. Не надо их извлекать :-)
* при запуске программы без параметров (просто даблклик), программа проверяет
все девайсы на готовность и обновляет ярлыки на рабочем столе (удаляет лишнее, добавляет нужное) причём Иконки и имена к девайсам берём из папки exe-шника «ico». Формат имён иконок думаю понятен: (J)Мыльница.ico — это значит что это иконка для девайса J и имя на рабочем столе у него будет «Мыльница».

Но чего то не хватает, чувствуете? Ага! Хочу чтобы иконки по мере подключения появлялись сами на рабочем столе! Но вот тут есть один нюанс — для этого надо чтобы программа всегда висела в памяти, отлавливая сообщение WM_DEVICECHANGE, а на это мало кто согласится. Но всё же если вдруг:
Код + Exe
Зеркало (Webfile.ru)
конечно же есть некоторые баги: к примеру с кардридерами часто не правильно работает, но это потомучто почему-то система не посылает WM_DEVICECHANGE при вынимании или вставлении карты памяти в кардридер (кто-нибудь знает решение?
так как это тестировалось только на моей машине (XP SP3), то думаю ща будут эксепшены литься рекой :-)

p.s.: Иконки можно брать тут:
deviantArt.com
allday.ru (только после регистрации)
www.iconspedia.com
p.p.s.: как бы это не последний топик на тему Mac Maniac или «Я слишком бедный для MAC» :-)
+59
31 января 2009, 00:44
31

комментарии (56)

+1
Zeraman #
молодец, +
«дивайс» пишется через е.
0
kefirux #
спасибо, поправил )
+1
GeForester #
Подобные значки были бы удобны в трее, потому что рабочий стол постоянно приходилось бы разгребать от окон в поисках этих иконок.
+1
kefirux #
ну… такого я пока не умею, как бы глупо это не звучало. но вобще это можно реализовать без трея проще. например в QuickLunch их.

p.s.: по-настоящему я собираюсь написать топик как минимизировать все окна просто жестом мыши и как этим же жестом восстановить активное окно (как в маках). так что добираться до рабочего стола мне легко. ну а вообще это кончено дело вкуса
0
konart #
quick launch

сворачивание окон жестом уже есть в вин7 по дефолту)
а вообще… я не помню когда лично я последний раз видел свой рабочий стол :D
+1
kefirux #
нууу… я уже столько всего слышал про эту вин7, что сначала думал что они тупо всем заплатили за рекламу )))) ну исправляются — хорошо. но пока куча программ которые не идут под неё, поэтому я не собираюсь на неё переходить.

p.s.: а какой именно жест это делает в вин7?
p.p.s.: честно говоря — у меня нету ничего на рабочем столе кроме как раз этого значка eject и иконок этих )) может быть придумаю как и их убрать, но у меня просто уже и так всё пространство в панельках разных )
+1
konart #
нет никаких куч программ не идущих под нее — это тотже гон что и про висту был.
Но если про висту он был хоть сколько-то оправдан — то тут бред чистой воды. Благо вин7 это также виста по большей части и никаких проблем с совместимостью быть не может в принципе.

PS: подергать за текщее окно тано, или тупо нажать на крайнюю кнопку на таскбаре
PPS: у меня вообще значки на раб. столе отключены со времен вин2000 и никаких панелей нет кроме таскбара
0
kefirux #
просто я видел на форумах темы где говорят какие версии идут под вин7 а какие нет. вроде разработчикам по идее полюбому надо переписывать под висту код хотя бы для быстродействия чтобы пользоваться всеми нововведениями и функциями. ну то что разницы в этом плане между вистой и вин7 нету я наслышан, но вот разница между ХР и Vista помоему объясняется тем что многие программы переписывались с появлением висты. или я «ниправ ниразу»? :-)
0
konart #
ну не идут даемон тулз и алкоголь пока что, из-за несовместимости драйверов.
остальные — у меня даже с 2000 года софт нормально работает)

какие-то переписывались, какие-то нет.
Не каждая программа использует нововведения же.
0
Qiwichupa #
старые автокады и офисы не пашут, в условиях требований к совместимости с рабочим софтом — критично очень. А пока в крупной организации сменится поколение софта — уууу… долгий процесс
+1
netstuff #
боюсь предположить, чем этот жест надо будет делать =)
0
Splean #
А зачем жест мыши, если есть win+D для сворачивания всех окон? :)
0
kefirux #
и ещё Win+M
ну вот мне лень иногда до клавы тянуться )
а тут просто одно нервное движения мышью и всё.
+2
Captcha #
Win+D и не надо ничего разгребать. Но в трее и правда было бы удобнее.
0
kefirux #
а мне вот просто например жалко пространства трея на все подключённый дивайсы. но можно кстати сделать чтобы из контекстного меню одной иконки можно было всё это делать. но тут вопрос в организачии UI: каким движением извлекать устройства?
0
Splean #
Win+E -> правая кнопка мыши -> извлечь :)
0
kefirux #
аж три действия! и тем более нельзя извлечь сразу 4 привода или флешки ))
+1
ajaxtelamonid #
Отлично!
Тоже люблю autohotkey. :)
+1
kefirux #
ееейй, я не один такой!
а тут на хабре кстати нету сообщество любителей AHK?
0
ajaxtelamonid #
Нет, только одна статья есть по сути — habrahabr.ru/blogs/windows/24652/
0
kefirux #
habrahabr.ru/blogs/lifehack/48087/
вот вторая ) но к сожалению это всё.
быть может имеет смысл открыть такое сообщество?
или это я бред чистой воды несу? )
0
ajaxtelamonid #
Да можно и открыть, почему бы и нет.
0
kefirux #
буду читать мануал тогда как это сделать
+1
YasonBy #
На самом деле топиков по AHK всё же немного больше, чем две :)
habrahabr.ru/tag/autohotkey/
0
kefirux #
Ну про раскладку клавиатуры я видел топик только издалека и не заподозрил что там кроется этот шайтан-скрипт)
спасибо за идею проверять по тегам
0
kefirux #
ну какбы вот:
habrahabr.ru/blogs/AutoHotKey/
+1
Nurked #
Автор действительно маньяк! В хорошем смысле этого слова. Круто и красиво.
+1
the_thee_mind #
спасибо. а как добавлять набор иконок, т.к. включенных слишком мало?
+1
kefirux #
оу, у меня просто коллекция которую я собирал потихонечку :-)
я вобще для примера туда кинул иконки.
могу поделиться (550мб)

а вобще почти все они отсюда:
allday.ru/
а здесь можно без регистрации по одной штучке качать
www.iconspedia.com/
+1
the_thee_mind #
благодарю
+1
ForeverLive #
DeviantArt.com — почти на все современные стройства можно найти класные иконки — по крайней мере я нащел для своей камеры, мп3 и флешки
+1
kefirux #
ой. всегда забываю упомянуть этот отличный ресурс ) спасибо за то что напомнили
+1
GreenAngel #
А по-моему извлекать гараздо удобнее щёлкнув по иконке правым кликом и выбрав действие «извлеч»…
Но в целом идея понятна. Спасибо)
+1
StirolXXX #
чтобы имена НЕ совпадали.
+1
kefirux #
спасибо, исправил
0
contradance #
Где же вы раньше были? :)
У меня предчувствие, что изменения в UI седьмой версии ОС сделают ненужными все те ухищрения, к которым кастомайзеры прибегают, чтобы сделать из виндоуз мак ос.
0
kefirux #
нуу… я пока нахожусь в армии пользователей XP и держу позиции :-)
но через год когда официально выйдет вин7, я тоже сдам позиции, честно )
просто подожду пока разработчики софта под неё напишут софт.
в любом случае я думаю AHK работает в Висте, а значит должен и в вин7. поэтому
буду писать и там всякие удобности для себя
0
sibulba #
Спасибо про ALT и 0160)))
Обрадован до глубины души)))
0
kefirux #
я тоже прям счастлив был когда узнал)
+1
tgm #
автор, поправь пожалуйста ссылочку на DeskDrive
0
kefirux #
сделано, спасибо за замечание
0
habrauser #
Скажите пожалуйста название wallpaper'а, очень понравился.
+2
kefirux #
у меня уже год висит и не надоедает )


0
habrauser #
Огромное спасибо. Теперь и у меня :)
0
648a7844 #
tineye.com/search/cb63baf3dddc5fad20a2bea2838098a2918bb6d7?sort=size&order=desc

Версии в лучшем разрешении.
0
kefirux #
к сожалению автора не помню, но он известен своим стилем. на DA выкладывается
0
Zingara #
хм… интересно! после сессии пошаманю :)
0
kefirux #
о ужос, у вас ещё сессия? я слава богу отстрелялся и на радостях написал пост )
0
Paxa #
Может хватит рядить свинью в разные наряды и пора обзавестить оригинальным маком или хакинтошем накрайний случай?
0
SOLEI #
:) А вы не думали, что существует разработка под Windows (например)?
0
Paxa #
Я думаю нужно двигаться в сторону кроссплатформенности и вебности. А для ие виртуальную машину
0
kefirux #
С удовольствием, как только начну зарабатывать настолько много чтобы позволить себе это. Учитывая условия кризиса, сейчас с этим полный голяк
0
kefirux #
И кстати обычный мак мне вообще не нужен, ибо мне только для видео-монтажа и спецэффектов в Shake. Слабые Маки это не тянут
0
dchertousov #
вот завернуть бы это в инсталлер с выбором тем и предефайнами иконок для известных девайсов/типов девайсов
0
kefirux #
Это серьёзная заявка, но ввиду того что об этом пока что подумали только вы, мне не стоит торопиться с реализацией (кстати инсталяторы никогда не делал, и это значит чтение мануалов). В любом случае я сейчас больше дипломом обеспокоен и на такие подвиги времени нету (
0
dchertousov #
Это была бы очень серьезная заявка, которая стояла бы у многих юзеров взамен вышеописанной DeskDrive. С дипломом вам удачи! Надеюсь от вас в дальнейшем все-таки увидеть этот продукт.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.