[Versi Delphi] Logitech Infinite Spirit Sable, Driver Patch - Menerapkan pemain multimedia yang sebenarnya! Program kamuflase ikon QQ terlampir
██████████████ Program kamuflase ikon qq
Ubah "mengobrol dengan ini juga menjadi ikon lain di negara bagian yang berbeda.
Ubah ikon tidak memerlukan pemrograman, cukup ubah file qqres.dll dari QQ2004.
████████████ Logitech Infinite Spirit Sable, Patch Driver - Sadarilah pemain multimedia yang nyata
Logitech Infinite Spirit Mink adalah mouse nirkabel multifungsi yang diluncurkan oleh Logitech.
Fitur terbesar dari mouse ini adalah memiliki banyak tombol fungsi yang tertanam, dan di samping roda gulir, ada 8 kunci. Dua tombol di samping dilengkapi dengan banyak tikus Logitech yang menengah, dan fungsinya terutama untuk menjelajah ke atas dan ke bawah; , Maju, mundur, +, -". Selain itu, roda gulir dapat melakukan navigasi silang, yang berarti ada fungsi penelusuran kiri dan kanan tambahan.
Tetapi dalam penggunaan aktual, fungsi -fungsi kunci multimedia benar -benar terbatas. Kenapa kamu bilang begitu?
Pemutar media yang saya sukai adalah MPC (MS Windows Media Player Classic).
Berikut ini adalah pertanyaan tentang kekurangan MPC:
Cukup mainkan/jeda dan klik tombol atau ruang kiri, dan tombol kiri ada di mouse, sehingga tombol play/pause berlebihan;
Klik PGUP/PGDOWN pada yang berikutnya/sebelumnya. Meskipun mouse yang sesuai adalah maju/mundur, berapa banyak peluang yang harus kita tonton file sebelumnya atau berikutnya di tengah ketika kita menonton film atau klip video? Bahkan jika Anda mencari file video yang lebih dari 10 menit, itu bukan masalah besar untuk mengklik secara manual pada file berikutnya setelah menonton satu, jadi kedua tombol ini tidak perlu.
Driver terbaru Logitech tidak menyediakan fungsi kustomisasi untuk tiga tombol di atas, jadi untuk memanfaatkan sepenuhnya banyak tombol fungsi pada mouse, saya harus menambahkan kode baru ke program ikon QQ untuk mengimplementasikan tiga tombol ini. Dan itu juga dapat mengaktifkan tombol mouse yang sama untuk mengimplementasikan fungsi kustomisasi yang berbeda dalam aplikasi yang berbeda.
Gunakan program pengaturan driver resmi untuk mengatur:
Fungsi kunci media adalah kombinasi kunci: Ctrl+F4, dan fungsi zoom adalah untuk menutup program (sangat efisien).
Program selanjutnya dapat mengimplementasikan fungsi -fungsi berikut (terutama kombinasi kunci):
◎mpc
Telusuri: maju selama 10 detik;
◎ ACDSEE
Play/Pause: Ctrl+Del;
◎ ACD fotocanvas
Play/Pause: Ctrl+S;
◎ NetCaptor
Play/Pause: Ctrl+Shift+S;
◎ Ultraedit
Play/Pause: Ctrl+S;
Akhirnya, saya ingin membenci pengembang Driver Mink Logitech Infinite Spirit!
Fungsi inti driver mouse terletak pada konversi dan pemrosesan sinyal perpindahan yang ditransmisikan dari mouse, serta masalah seperti definisi berbagai kunci dan pemrosesan akselerasi, tetapi ini hanya masalah kecil dibandingkan dengan pemrosesan dan analisis dari Sinyal Seluler. Tidak ada kesulitan teknis fungsional dalam pemrograman dalam aspek ini. Karena Anda telah membuat begitu banyak tikus menengah ke atas, terutama yang saya beli ini untuk RMB 360, mengapa Anda tidak mengetik lebih banyak kode dan menambahkan beberapa kunci dalam tombol multimedia untuk menyesuaikannya. Lagi pula, komputer bukanlah TV, perekam, mesin VCD, mesin DVD, audio gabungan ... Fungsi multimedia hanya bagian dari fungsi komputer. Digunakan dalam lebih banyak perangkat lunak aplikasi.
Kode ██████████ delphi adalah sebagai berikut, di antaranya hanya MPC yang menggunakan kait, karena dalam perangkat lunak pemutaran media, pesan yang dihasilkan oleh tombol multimedia dan dua tombol samping diculik oleh kait driver Logitech. Jadi saya harus membuat kait global sendiri untuk menghentikan berita terlebih dahulu sehingga kait Logitech tidak dapat mengaitkan informasi yang saya butuhkan.
// ▓▓▓▓▓▓▓▓▓▓▓▓ retitle.dpr
restitle program;
penggunaan
Bentuk,
Sysutils,
Windows,
Unit1 di 'unit1.pas' {f},
Dlgdebug_u di 'dlgdebug_u.pas' {dlgdebug};
{$ R *.res}
Mulai
application.Initialize;
// status debug
dbg: = findCmdlineswitch ('debug', ['/', '-'], true);
Jika DBG maka dengan dlgdebug mulai
dlgdebug: = tdlgdebug.create (aplikasi);
Kiri: = getSystemMetrics (sm_cxscreen) -width;
Top: = getSystemMetrics (sm_cyscreen) -height-60;
akhir;
Application.createForm (tf, f);
Application.run;
akhir.
// ▓▓▓▓▓▓▓▓▓ unit1.pas
unit unit1;
antarmuka
penggunaan
Windows, pesan, sysutils, varian, kelas, grafik, kontrol, formulir,
Dialog, stdctrls, extctrls, dlgdebug_u;
jenis
Tf = class (tform)
Tmr: timer;
Prosedur FormCreate (pengirim: Tobject);
Prosedur tmrtimer (pengirim: tobject);
Prosedur WNDPROC (Pesan VAR: TMessage);
Pribadi
{Deklarasi Pribadi}
hfocus: hwnd;
Buf: array [0..1024] dari char;
stitle: string;
Prosedur getMousePoshWndandClassName (pengirim: tPoint);
mengganti fungsi (s, sumber, target: string): string;
// Logichi Infinite Spiritual Sable
Prosedur Down (VK: BYTE);
Prosedur UP (VK: BYTE);
Prosedur Key1 (VK1: BYTE);
Prosedur Key2 (VK1, VK2: BYTE);
Prosedur Key3 (VK1, VK2, VK3: BYTE);
publik
{Deklarasi Publik}
akhir;
var
f: tf;
const
Logitech = $ 0319;
Play_pause = $ E0000;
Play_left = $ C0000;
Play_right = $ b0000;
Pelaksanaan
Prosedur Mengaktifkanwheelhook;
Prosedur DisableWheelhook;
{$ R *.dfm}
Prosedur TF.FormCreate (pengirim: Tobject); // ██████████████████████████████ Inisialisasi Antarmuka
Mulai
FormStyle: = fsstayontop;
Tinggi: = 0;
Lebar: = 0;
Bersembunyi;
TMR.Interval: = 50;
Showwindow (application.handle, sw_hide);
SetWindowlong (application.handle, gwl_exstyle,
GetWindowlong (application.handle, gwl_exstyle) atau ws_ex_toolwindow dan bukan ws_ex_appwindow);
EnableWheelHook; // Lotech Lingmian Blue Side Key, wm_mousewheel Hook
akhir;
Prosedur tf.getmouseposhwndandclassname (pengirim: tpoint); // ████ bilah judul kamuflase
var hwnd: thandle;
Atitle: Array [0..255] dari Char;
str: string;
Mulai
hwnd: = WindowFrompoint (pengirim);
Jika boolean (getWindowText (hwnd, atitle, 256)) lalu mulai
str: = string (atitle);
if ((pos ('dan', str)> 0) dan (pos ('chat', str)> 0)) lalu mulai
str: = mengganti (str, 'chat', '');
str: = mengganti (str, 'dan', 'dokumentasi saya');
SetWindowText (hwnd, pchar (str));
akhir;
if ((pos ('group-', str)> 0) atau (pos ('canggih grup-', str)> 0)) lalu mulai
str: = mengganti (str, 'grup-', 'My Letter');
str: = mengganti (str, 'lanjutan', '');
SetWindowText (hwnd, pchar (str));
akhir;
// ruang obrolan
jika pos ('qq chat room', str)> 0 lalu mulailah
str: = 'Microsoft Visual C ++ 6.2';
SetWindowText (hwnd, pchar (str));
akhir;
// msn
jika pos (' - dialog', str)> 0 lalu mulai
str: = mengganti (str, ' - dialog', 'dokumen kerja');
SetWindowText (hwnd, pchar (str));
akhir;
akhir;
akhir;
Prosedur tf.tmrtimer (pengirim: tobject); // ██████████████████████████████████████ █████████████████████████████████████████
var rpos: tpoint;
Mulai
jika boolean (getCursorpos (RPOS)) maka getMousePoshWndandClassName (RPOS);
akhir;
fungsi tf.replacing (s, sumber, target: string): string; // ██████ ganti string
Situs VAR, Strlen: Integer;
Mulai
Situs: = POS (Sumber, S);
strlen: = panjang (sumber);
hapus (S, situs, strlen);
masukkan (target, s, situs);
Hasil: = S;
akhir;
Prosedur tf.wndproc (pesan var: tmessage); /// █████████▌logytech mink roh tak terbatas
Mulailah dengan pesan Mulai
diwariskan;
// Jika tiga tombol di tengah dan kanan keypad multimedia tidak ditekan, keluar
Jika tidak ((msg = logitech) dan ((lparam = play_pause) atau (lparam = play_left) atau (lparam = play_right))) kemudian keluar;
HFOCUS: = DETFOREGREGWINDOW;
GetWindowText (hfocus, buf, 1024);
stitle: = string (buf);
Deb (Stitle);
// acdsee
if (pos ('acdsee', stitle)> 0) dan (pos ('5.0', stitle)> 0) dan (msg = logitech) lalu casing lparam of
Play_paSe: 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
akhir;
if (pos ('acd', stitle)> 0) dan (pos ('fotocanvas', stitle)> 0) dan (msg = logitech) lalu casing lparam of 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
akhir;
// NetCaptor
if (pos ('netcaptor', stitle)> 0) dan (msg = logitech) lalu case lparam of
Play_pase: key3 (vk_control, vk_shift, ord ('s')); // ctrl+shift+s
Play_left: key1 (vk_f2);
Play_right: key1 (vk_f3);
akhir;
// ultraedit
if (pos ('ultraedit-32', stitle)> 0) dan (msg = logitech) lalu case lparam 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
akhir;
akhir;
Prosedur TF.Down (VK: BYTE);
Prosedur TF.UP (VK: BYTE);
Prosedur TF.Key1 (VK1: BYTE);
Down (VK1);
UP (VK1);
akhir;
Prosedur TF.Key2 (VK1, VK2: BYTE);
Down (VK1);
Down (VK2);
Up (vk2);
UP (VK1);
akhir;
Prosedur TF.Key3 (VK1, VK2, VK3: BYTE);
Down (VK1);
Down (VK2);
Down (VK3);
UP (VK3);
Up (vk2);
UP (VK1);
akhir;
akhir.
// ▓▓▓▓▓▓▓▓▓▓▓▓ dlgdebug_u.pas
{*********************************************** ******** ********************************
Kotak dialog non-modal yang digunakan dalam program untuk menampilkan informasi debugging
2005/02
********************************************** ******* ***************************************** *****
unit dlgdebug_u;
menggunakan windows, pesan, sysutils, varian, kelas, grafik, kontrol, formulir,
Dialog, stdctrls, comctrls;
Prosedur Deb (Themsg: String);
Prosedur Deb (Themsg: Integer); kelebihan beban;
Prosedur Deb (Const Thestr: String; Const Args: Array of Const);
jenis
Tdlgdebug = class (tform)
Re: Trichedit;
Prosedur mmkeyup (pengirim: tobject; var kunci: kata; shift: tshiftstate);
Prosedur FormCreate (pengirim: Tobject);
Pribadi
{Deklarasi Pribadi}
publik
{Deklarasi Publik}
Indent: byte;
selcolor: tcolor;
jadwal prosedur;
akhir;
var dlgdebug: tdlgdebug;
DBG: Boolean;
Pelaksanaan
{$ R *.dfm}
Prosedur tdlgdebug.mmkeyup (pengirim: tobject; var tombol: word; shift: tshiftstate);
Mulai
Jika kunci = vk_space maka mulailah
re.tag: = integer (bukan boolean (re.tag));
//mm.tag: = integer (bukan boolean (mm.tag));
// if boolean (mm.tag) lalu red.suspend
// else red.resume;
akhir;
akhir;
Prosedur Deb (Themsg: String);
Jika tidak DBG maka keluar;
Dengan DLGDEBUG Do Begin // Debug Information
Garis waktu;
re.selattributes.color: = selcolor;
re.paragraph.firstindent: = indent;
re.lines.add (themsg);
//mm.lines.add(themsg);
akhir;
akhir;
Prosedur Deb (Themsg: Integer);
Mulai
Jika tidak DBG maka keluar;
Dengan DLGDEBUG Do Begin // Debug Information
Garis waktu;
re.selattributes.color: = selcolor;
re.paragraph.firstindent: = indent;
re.lines.add (inttoStr (themsg));
//mm.lines.add(inttostr(themsg));
akhir;
akhir;
Prosedur Deb (Const Thestr: String; Const Args: Array of Const);
Mulai
Jika tidak DBG maka keluar;
Dengan DLGDEBUG Do Begin // Debug Information
Garis waktu;
re.selattributes.color: = selcolor;
re.paragraph.firstindent: = indent;
re.lines.add (format (thestr, args));
//mm.lines.add(format(thestr, args));
akhir;
akhir;
Prosedur tdlgdebug.timeline;
Mulailah dengan Re Do Begin
paragraf.firstindent: = 0;
Selattributes.color: = clred;
line.add (formatDateTime (longtimeformat, sekarang));
akhir;
Prosedur tdlgdebug.FormCreate (pengirim: tobject);
Mulai
Indent: = 10;
selcolor: = clyellow;
akhir;
akhir.
// ▓▓▓▓▓▓▓▓▓▓▓▓ hookprj.dpr
perpustakaan hookprj;
penggunaan
Sysutils,
Kelas,
Hook_u di 'hook_u.pas';
ekspor
Enablewheelhook,
Disablewheelhook;
Mulai
akhir.
// ▓▓▓▓▓▓▓▓▓ hook_u.pas
unit hook_u;
menggunakan windows, pesan, sysutils, dialog;
var HK: hhook; // nilai pegangan kait
hfocus: hwnd;
buf: array [0..1024] dari char;
stitle: string;
IC: byte;
zdelta: pendek;
fungsi wheelhookproc (kode: integer; wparam: longint; msg: longint): lResult;
fungsi mengakhiriwheelhook: boolean;
Fungsi DisableWheelhook: Boolean;
Pelaksanaan
// █████████████████████████████████████████�
fungsi wheelhookproc (kode: integer; wparam: longint; msg: longint): lResult;
Mulai
zdelta: = pendek (hiword (pmsg (msg)^. wParam));
if (code = hc_action) dan (pmsg (msg)^. pesan = wm_mousewheel) dan (abs (zdelta)> 200) lalu mulai
HFOCUS: = DETFOREGREGWINDOW;
GetWindowText (hfocus, buf, 1024);
stitle: = string (buf);
if (pos ('mplayerc', stitle)> 0) atau (pos ('Media player classic', stitle)> 0) Kemudian mulailah
Inc (IC);
// Tekan tombol sisi biru sekali untuk menghasilkan dua pesan.
// Jika semua diproses, itu setara dengan penerusan cepat dua kali, yaitu 10 detik
// if (ic mod 2) = 0 lalu mulai
keybd_event (vk_control, mapvirtualkey (vk_control, 0), 0, 0);
Jika zdelta> 200 maka mulailah
keybd_event (vk_right, mapvirtualkey (vk_right, 0), 0, 0);
keybd_event (vk_right, mapvirtualkey (vk_right, 0), keyeventf_keyup, 0); // tepat
akhir lagi dimulai
keybd_event (VK_LEFT, MapVirtualKey (VK_LEFT, 0), 0, 0);
keybd_event (vk_left, mapvirtualkey (vk_left, 0), keyeventf_keyup, 0); // ditinggalkan
akhir;
keybd_event (vk_control, mapvirtualkey (vk_control, 0), keyeventf_keyup, 0); // ctrl up
//akhir;
PMSG (msg)^. Pesan: = 0; // Karena pesan kunci samping telah diproses secara lokal, tidak harus diserahkan ke utas lain untuk diproses
Hasil Akhir Lain: = CallNexthookex (HK, Kode, WParam, Longint (@msg)); // Jika bukan MPC, pastikan
Hasil Akhir Lain: = CallNexthookex (HK, Kode, WParam, Longint (@msg)); // Jika itu bukan dua tombol sisi biru, pastikan ke bawah
akhir;
Fungsi EnableWheelhook: Boolean;
Mulai
Jika hk = 0 maka mulailah
Hk: = setWindowShookEx (wh_getmessage, @wheelhookproc, hinstance, 0);
Hasil: = true;
Hasil akhir yang lain: = false;
akhir;
Fungsi DisableWheelhook: Boolean;
Mulai
Jika hk <> 0 maka mulailah
Unhookwindowshookex (HK);
HK: = 0;
Hasil: = true;
Hasil akhir yang lain: = false;
akhir;
akhir.
QQ: 7995.7944 (jalan Shensi)
E-mail: [email protected]