[Delphi Version] Logitech Infinite Spirit Sable, драйвер Patch - Реализация настоящего мультимедийного игрока! Прикрепленная программа камуфляжа QQ
██████████████ Программа камуфляжа QQ
Включите «чат с таким-то» в строке заголовка окна чата QQ в «Мой документ So-A-So», а значок в окне чата становится значком документа Word, а значок в лоток Также становится другие значки в разных состояниях.
Изменения значков не требуют программирования, просто изменяйте файл QQRES.DLL QQ2004.
████████████ Logitech Infinite Spirit Sable, Patch Patch - реализовать настоящий мультимедийный игрок
Logitech Infinite Spirit Mink - это многофункциональная беспроводная мышь, запущенная Logitech.
Самой большой особенностью этой мыши является то, что у нее встроено много функциональных клавиш, и в дополнение к колесу прокрутки есть 8 клавиш. Два ключа на стороне оснащены многими мышами Logitech в среднем и высоком уровне, и функции в основном предназначены для просмотра вверх и вниз; , Вперед, назад, +, -". Кроме того, колесо прокрутки может выполнять перекрестную навигацию, что означает, что существует дополнительная функция левого и правого просмотра.
Но в реальном использовании функции мультимедийного ключа действительно ограничены. Почему ты так говоришь?
Медиаплеер, который я люблю использовать, - это MPC (MS Windows Media Player Classic).
Ниже приведен вопрос о недостатках MPC:
Просто воспроизводите/паузу и нажмите левую кнопку или пространство, а левая кнопка находится на мышью, чтобы кнопка воспроизведения/паузы была избыточной;
Нажмите Pgup/Pgdown на следующем/предыдущем. Даже если вы ищете видеофайлы, которые составляют более 10 минут, это не большая проблема, чтобы вручную щелкнуть по следующему файлу после просмотра, поэтому эти два ключа ненужны.
Последние драйверы Logitech не предоставляют функции настройки для приведенных выше трех ключей, поэтому, чтобы полностью использовать множество функциональных клавиш на мышью, мне пришлось добавить новый код в программу QQ Icon для реализации этих трех ключей. И это также может включить одну и ту же кнопку мыши для реализации различных функций настройки в разных приложениях.
Используйте официальную программу настройки драйвера для настройки:
Функция медиа -ключа - это комбинация ключа: Ctrl+F4, а функция Zoom заключается в закрытии программы (очень эффективной).
Последующая программа может реализовать следующие функции (в основном комбинация ключей):
◎mpc
Просмотрите вверх: идти вперед на 10 секунд;
◎ acdsee
Игра/пауза: Ctrl+Del;
◎ ACD Фотоканвы
Игра/пауза: Ctrl+S;
◎ Netcaptor
Игра/пауза: Ctrl+Shift+S;
◎ Ultraedit
Игра/пауза: Ctrl+S;
Наконец, я хочу презирать разработчиков водителей Logitech Infinite Spirit Mink!
Основная функция драйвера мыши заключается в преобразовании и обработке сигналов смещения, передаваемых с мыши, а также таких проблем, как определение различных ключей и обработка ускорения, но это лишь небольшие проблемы по сравнению с обработкой и анализом Мобильные сигналы. Поскольку вы сделали так много мышей среднего и высокого уровня, особенно в этом лингси, которую я купил для RMB 360, почему вы не набираете больше кодов и добавили несколько ключей на клавиатуре мультимедиа, чтобы настроить их. В конце концов, компьютеры - это не телевизоры, рекорды, машины VCD, DVD -машины, комбинированные аудио ... Мультимедийные функции являются лишь частью функций компьютеров. Используется в большем количестве прикладного программного обеспечения.
Код ██████████ Delphi выглядит следующим образом, среди которых только MPC использует крючки, потому что в программном обеспечении воспроизведения медиа, сообщения, сгенерированные мультимедийной клавиатурой и двумя боковыми клавишами, похищены крючками для драйверов Logitech. Поэтому я должен сам сделать глобальный крючок, чтобы остановить новости заранее, чтобы крюк Logitech не мог зацепить информацию, которая мне нужна.
// ▓▓▓▓▓▓▓▓▓▓▓▓ retitle.dpr
программа переиздания;
Использование
Формы,
Sysutils,
Windows,
UNIT1 в 'Unit1.pas' {f},
Dlgdebug_u в 'dlgdebug_u.pas' {dlgdebug};
{$ R *.res}
Начинать
Application.initialize;
// Статус отладки
dbg: = findcmdlineswitch ('debug', ['/', '-'], true);
Если DBG, то с dlgdebug действительно начинается
dlgdebug: = tdlgdebug.create (приложение);
Слева: = getSystemmetrics (sm_cxscreen) -width;
Top: = getSystemmetrics (sm_cyscreen) -Height-60;
конец;
Application.CreateForm (TF, F);
Application.Run;
конец.
// ▓▓▓▓▓▓▓▓▓ Unit1.pas
единица единицы 1;
интерфейс
Использование
Windows, сообщения, Sysutils, варианты, классы, графика, управления, формы,
Dialogs, stdctrls, extctrls, dlgdebug_u;
тип
Tf = class (tform)
TMR: Ttimer;
Процедура FormCreate (отправитель: Tobject);
Процедура tmrtimer (отправитель: tobject);
процедура wndproc (var message: tmessage);
Частный
{Частные объявления}
hfocus: hwnd;
BUF: массив [0..1024] из Чар;
Stitle: String;
Процедура GetMousePoshwndandClassName (отправитель: tpoint);
Замена функции (S, источник, Target: String): String;
// Logichi Infinite Spirity Sable
процедура вниз (VK: Byte);
процедура вверх (VK: Byte);
процедура Key1 (VK1: Byte);
процедура Key2 (VK1, VK2: Byte);
процедура Key3 (VK1, VK2, VK3: Byte);
публичный
{Публичные объявления}
конец;
вар
F: TF;
констант
Logitech = $ 0319;
Play_pause = $ e0000;
Play_left = $ C0000;
Play_right = $ b0000;
Выполнение
Процедура Enableheelhook;
Процедура отключена, STDCALL;
{$ R *.dfm}
Процедура tf.formcreate (отправитель: tobject); // ██████████████████████████████ Инициализация интерфейса
Начинать
СТАРТИЛ: = fsstayontop;
Высота: = 0;
Ширина: = 0;
Скрывать;
TMR.Interval: = 50;
ShowWindow (Application.Handle, SW_HIDE);
SetWindowlong (application.handle, gwl_exstyle,
GetWindowlong (application.handle, gwl_exstyle) или ws_ex_toolwindow, а не ws_ex_appwindow);
Enablewheelhook; // Lotech Lingmian Blue Side Key, WM_MOUSEWHEEL Message Hook
конец;
Процедура tf.getMousePoshwndandClassName (отправитель: tpoint); // ████ Заглавное лицо камуфляжа
var hwnd: thandle;
atitle: массив [0..255] из Чар;
Str: String;
Начинать
hwnd: = windowfoint (отправитель);
Если Boolean (getWindowText (hwnd, Atitle, 256))), то начните
str: = string (atitle);
if ((pos ('и', str)> 0) и (pos ('catch', str)> 0)), затем начните
str: = замена (str, 'catch', '');
str: = замена (str, 'и', 'моя документация');
SetWindowText (hwnd, pchar (str));
конец;
if ((pos ('group-', str)> 0) или (pos ('Advanced Group-', str)> 0)), затем начните
str: = замена (str, 'Group-', 'my Letter');
str: = замена (str, 'advanced', '');
SetWindowText (hwnd, pchar (str));
конец;
// чат
Если POS ('QQ чат -комната', str)> 0, тогда начинайте
Str: = 'Microsoft Visual C ++ 6.2';
SetWindowText (hwnd, pchar (str));
конец;
// msn
Если pos (' - dialoge', str)> 0, тогда начинайте
str: = замена (str, ' - диалог', «рабочий документ»);
SetWindowText (hwnd, pchar (str));
конец;
конец;
конец;
Процедура tf.tmrtimer (отправитель: tobject); // ██████████████████████████████████████ █████████████████████████████████████████
var rpos: tpoint;
Начинать
Если Boolean (getCursporspos (RPO)), то GetMousePoshwndandClassName (RPOS);
конец;
Функция tf.replacing (s, source, target: string): string; // ██████ Заменить строку
сайт var, strlen: целое число;
Начинать
сайт: = pos (источник, s);
strlen: = длина (источник);
удалить (s, сайт, strlen);
Вставить (Target, S, Site);
результат: = s;
конец;
Процедура tf.wndproc (var Сообщение: tmessage); //// █████████▌logytech Infinite Spirit Mink
Начните с сообщения, начинается
унаследован;
// Если три клавиши на центре и справа от клавиатуры мультимедиа не нажимают, уйти
Если нет ((msg = logitech) и ((lparam = play_pause) или (lparam = play_left) или (lparam = play_right))), затем выйти;
HFOCUS: = GetForegroundWindow;
GetWindowText (HFOCUS, BUF, 1024);
Stitle: = String (buf);
Деб (Stitle);
// acdsee
if (pos ('acdsee', stitle)> 0) и (pos ('5.0', stitle)> 0) и (msg = logitech), затем case lparam of of
Play_pause: key2 (vk_control, vk_delete); // ctrl+del
Play_left: key2 (vk_menu, ord ('m')); // alt+m
Play_right: key2 (vk_menu, ord ('c')); // alt+c
конец;
if (pos ('acd', stitle)> 0) и (pos ('fotocanvas', stitle)> 0) и (msg = logitech), затем case lparam of
Play_pause: key2 (vk_control, ord ('s')); // ctrl+s
Play_left: key2 (vk_shift, ord ('s')); // shift+s
Play_right: key2 (vk_shift, ord ('a')); // shift+a
конец;
// netcaptor
if (pos ('netcaptor', stitle)> 0) и (msg = logitech), то case lparam of of
Play_pause: key3 (vk_control, vk_shift, ord ('s')); // ctrl+shift+s
Play_left: key1 (vk_f2);
Play_right: key1 (vk_f3);
конец;
// ultraedit
if (pos ('ultraedit-32', stitle)> 0) и (msg = logitech), затем case lparam of of
Play_pause: key2 (vk_control, ord ('s')); // ctrl+s
Play_left: key2 (vk_control, vk_f6); // ctrl+f6
Play_right: key3 (vk_control, vk_shift, vk_f6); // ctrl+shift+f6
конец;
конец;
процедура tf.down (VK: Byte);
Процедура tf.Up (VK: Byte);
Процедура tf.key1 (VK1: Byte);
Вниз (VK1);
UP (VK1);
конец;
Процедура tf.key2 (VK1, VK2: Byte);
Вниз (VK1);
Вниз (VK2);
UP (VK2);
UP (VK1);
конец;
Процедура tf.key3 (VK1, VK2, VK3: Byte);
Вниз (VK1);
Вниз (VK2);
Вниз (VK3);
UP (VK3);
UP (VK2);
UP (VK1);
конец;
конец.
// ▓▓▓▓▓▓▓▓▓▓▓▓ dlgdebug_u.pas
{********************************************* ******** ********************************************
Немодальное диалоговое окно, используемое в программе для отображения информации отладки
2005/02
********************************************* ******* ***************************************** *****
UNIT DLGDEBUG_U;
использует окна, сообщения, системы, варианты, классы, графика, управления, формы,
Диалоги, stdctrls, comctrls;
Процедура Deb (TheMsg: String);
Процедура Deb (themsg: Integer); перегрузка;
Процедура Deb (const theStr: String; Const args: массив Const);
тип
Tdlgdebug = class (tform)
Re: Trichedit;
Процедура mmkeyup (отправитель: tobject; var Key: Word; Shift: TshiftState);
Процедура FormCreate (отправитель: Tobject);
Частный
{Частные объявления}
публичный
{Публичные объявления}
Подтверждение: байт;
Selcolor: Tcolor;
Процедура временной шкалы;
конец;
var dlgdebug: tdlgdebug;
DBG: логический;
Выполнение
{$ R *.dfm}
Процедура tdlgdebug.mmkeyup (отправитель: tobject; var Key: Word; Shift: TshiftState);
Начинать
Если key = vk_space, затем начните
re.tag: = integer (не логический (re.tag));
//mm.tag: = integer (не логический (Mm.tag));
// Если логический (мм.
// еще Red.Resume;
конец;
конец;
Процедура Deb (eMsg: String);
Если не DBG, то выйдите;
с dlgdebug do begin // информация отладки
Временная шкала;
re.selattributes.color: = selcolor;
re.paragraph.firstindent: = odent;
re.Lines.Add (theMsg);
//mm.lines.add(themsg);
конец;
конец;
Процедура Deb (TheMsg: Integer);
Начинать
Если не DBG, то выйдите;
с dlgdebug do begin // информация отладки
Временная шкала;
re.selattributes.color: = selcolor;
re.paragraph.firstindent: = odent;
re.lines.add (inttoStr (themsg));
//mm.lines.add(inttoStr(Themsg));
конец;
конец;
Процедура Deb (const theStr: String; Const args: массив Const);
Начинать
Если не DBG, то выйдите;
с dlgdebug do begin // информация отладки
Временная шкала;
re.selattributes.color: = selcolor;
re.paragraph.firstindent: = odent;
re.lines.add (формат (TheStr, Args));
//mm.lines.add(format(thestr, args));
конец;
конец;
Процедура tdlgdebug.timeline;
Начните с того, что начнется
Paragraph.firstindent: = 0;
Selattributes.color: = clred;
Lines.Add (FormatDateTime (давняя формат, сейчас));
конец;
Процедура tdlgdebug.formcreate (отправитель: tobject);
Начинать
отступ: = 10;
selcolor: = clyellow;
конец;
конец.
// ▓▓▓▓▓▓▓▓▓▓▓▓ Hookprj.dpr
Библиотека крючков;
Использование
Sysutils,
Классы
Hook_u in 'kuk_u.pas';
экспорт
Enablewheelhook,
Отключить белью;
Начинать
конец.
// ▓▓▓▓▓▓▓▓▓ Hook_u.pas
UNIT HOUCK_U;
использует Windows, сообщения, Sysutils, Dialogs;
var hk: hhook; // Значение ручки крючка
hfocus: hwnd;
BUF: массив [0..1024] из Чар;
Stitle: String;
IC: байт;
Зделта: Коротко;
Функция WheelHookProc (код: Integer; WPARAM: Longint; MSG: Longint): LRESULT;
Функция EnableHeelHook: логический;
Функция отключена, логический;
Выполнение
// █████████████████████████████████████████�
Функция WheelHookProc (код: Integer; WPARAM: Longint; MSG: Longint): LRESULT;
Начинать
zdelta: = short (Hiword (pmsg (msg)^. wparam));
if (code = hc_action) и (pmsg (msg)^. Message = wm_mousewheel) и (abs (zdelta)> 200), затем начинайте
HFOCUS: = GetForegroundWindow;
GetWindowText (HFOCUS, BUF, 1024);
Stitle: = String (buf);
if (pos ('mplayerc', stitle)> 0) или (pos ('media player classic', stitle)> 0), затем начните
Inc (IC);
// Нажмите кнопку синей стороны один раз, чтобы генерировать два сообщения.
// Если все обработано, это эквивалентно быстрому пересылке дважды, то есть 10 секунд
// if (ic mod 2) = 0, затем начните
keybd_event (vk_control, mapvirtualKey (vk_control, 0), 0, 0);
Если Zdelta> 200, то начните
keybd_event (vk_right, mapvirtualkey (vk_right, 0), 0, 0);
keybd_event (vk_right, mapvirtualkey (vk_right, 0), keyeventf_keyup, 0); // Прямо
конец иначе начнется
keybd_event (vk_left, mapvirtualkey (vk_left, 0), 0, 0);
keybd_event (vk_left, mapvirtualkekey (vk_left, 0), keyeventf_keyup, 0); // Left Up
конец;
keybd_event (vk_control, mapvirtualkekey (vk_control, 0), keyeventf_keyup, 0); // ctrl up
//конец;
PMSG (MSG)^. Сообщение: = 0; // Поскольку к ключевому сообщению было обработано локальное сообщение, оно не должно быть передано другим потокам для обработки
End Else Result: = callnexthoekex (HK, Code, Wparam, Longint (@msg)); // Если это не MPC, пропустите вниз
End Else Result: = callnexthoekex (HK, Code, Wparam, Longint (@msg)); // Если это не два синих боковых клавиша, пропустите его вниз
конец;
Функция Enableheelhook: логический;
Начинать
Если hk = 0, то начните
Hk: = setwindowshoekex (wh_getmessage, @wheelhookproc, hinstance, 0);
Результат: = true;
end else result: = false;
конец;
Функция отключена, логическая служба;
Начинать
Если HK <> 0, то начните
Uncookwindowshoekex (HK);
HK: = 0;
Результат: = true;
end else result: = false;
конец;
конец.
QQ: 7995.7944 (Shensi Road)
Электронная почта: [email protected]