自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Delphi編程實現(xiàn)QQ聊天窗口的修改

開發(fā) 開發(fā)工具
本文是筆者在Delphi學習過程中,得出的個人體會,介紹了Delphi編程實現(xiàn)QQ聊天窗口的修改的具體方法,希望能與大家共同分享一下。

  有人曾為公司不讓用QQ、MSN等聊天工具而煩惱嗎?看了下面的小程序你就會打消這種看法了。本文將教你在Delphi中編程實現(xiàn)QQ聊天窗口的修改。具體方法如下:

  這次我用到的是一個系統(tǒng)鉤子:WH_CBT。

  編寫代碼如下:

  1. library HookPrj;  
  2.  
  3. uses  
  4.  SysUtils,  
  5.  Classes,  
  6.  QQTitleHook in ’QQTitleHook.pas’;  
  7.  
  8.  exports  
  9. EnableWheelHook, DisableWheelHook;  
  10.  
  11. begin  
  12.  hkQQChat:= 0;  
  13. end.  
  14.  
  15.  
  16. unit QQTitleHook;  
  17.  
  18. interface 
  19.  
  20. uses  
  21.  Windows, Messages, SysUtils, Dialogs, CommCtrl, StrUtils;  
  22.  
  23. var  
  24.  hkQQChat: HHOOK;  
  25.  //聊天窗口的句柄  
  26.  hwQQChat: HWnd ;  
  27.  //聊天窗口的標題  
  28.  tlQQChat: string;  
  29.  //窗口類名  
  30.  clsName: string;  
  31.  buf: array [0..1024] of char;  
  32.  
  33.  const 
  34.   //QQ聊天窗口的類名  
  35.   csQQ = ’#32770’;  
  36.  
  37.  function TitleHookProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;  
  38.  function EnumWindowsTitleFunc(Handle: THandle; lParam: LPARAM): boolean ; stdcall;  
  39.  function EnableWheelHook : Boolean; stdcall; export;  
  40.  function DisableWheelHook: Boolean; stdcall; export;  
  41.  
  42.  implementation  
  43.    
  44.  //鉤子的處理函數  
  45.  function TitleHookProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;  
  46.  begin  
  47.   Result:= 0;  
  48.   if Code<0 then  
  49.   begin  
  50.    Result:= CallNextHookEx(hkQQChat, Code, wParam, lParam);  
  51.    Exit;  
  52.   end  
  53.   else 
  54.    if Code = HCBT_ACTIVATE then  
  55.    begin  
  56.     //獲取激活窗口的句柄,以及窗口類名,然后判斷此窗口類名是否為#32770。  
  57.     hwQQChat:= HWND(wParam);  
  58.     GetClassName(hwQQChat, buf, 1024);  
  59.     clsName:= string(buf);  
  60.     if clsName = csQQ then  
  61.     begin  
  62.      //如果窗口類名是#32770,則遍枚舉所有窗口,并將窗口句柄傳入  
  63.      //【這里僅僅做演示用,因為Windows中很多窗口的類名均為#32770,所以這樣判斷效率會很底,】  
  64.      //【有興趣的朋友可以根據QQ聊天窗口的特性來增加判斷條件,從而提高效率。】  
  65.      EnumWindows(@EnumWindowsTitleFunc, hwQQChat);  
  66.     end;  
  67.    end;  
  68.   end;  
  69.  
  70.  function EnumWindowsTitleFunc(Handle: THandle; lParam: LPARAM): boolean ; stdcall;  
  71.  begin  
  72.   if (Handle = lParam) and boolean(GetWindowText(Handle, buf, 256)) then  
  73.   begin  
  74.    //根據窗口句柄獲得窗口標題  
  75.    tlQQChat:= string(buf);  
  76.    //然后判斷標題中是否包含“與...聊天”等相關字符,如果包括則此窗口為QQ聊天窗口  
  77.    if ((pos(’與’, tlQQChat)>0) and (pos(’聊天中’, tlQQChat)>0)) then  
  78.    begin  
  79.     //確定為聊天窗口后遍修改窗口標題。  
  80.     tlQQChat := AnsiReplaceStr(tlQQChat, ’與’ , ’我的文檔’);  
  81.     tlQQChat := AnsiReplaceStr(tlQQChat, ’聊天中’, ’’ );  
  82.     SetWindowText(Handle, pchar(tlQQChat));  
  83.    end;  
  84.    //【同上,這個地方大家可以自由控制,不僅僅局限在QQ、MSN等聊天窗口?!? 
  85.    //【而且想要將標題改成什么也可以自由控制,如果能根據修改后的窗口圖標來確定標題】  
  86.    //【比如通過修改將窗口圖標替換成Delphi的圖標,然后標題修改為Delphi7,誰還能看出破綻呢?】  
  87.    if ((pos(’群 -’, tlQQChat)>0) or (pos(’高級群 -’, tlQQChat)>0)) then  
  88.    begin  
  89.     tlQQChat := AnsiReplaceStr(tlQQChat, ’群 -’, ’我的文檔’);  
  90.     tlQQChat := AnsiReplaceStr(tlQQChat, ’高級’ , ’’ );  
  91.     SetWindowText(Handle, pchar(tlQQChat));  
  92.    end;  
  93.    //MSN  
  94.    if pos(’ - 對話’, tlQQChat)>0 then  
  95.    begin  
  96.     tlQQChat := AnsiReplaceStr(tlQQChat, ’ - 對話’ , ’我的文檔’);  
  97.     SetWindowText(Handle, pchar(tlQQChat));  
  98.    end;  
  99.   end;  
  100.   Result :=True;  
  101.  end;  
  102.  
  103.  //啟動鉤子  
  104.  function EnableWheelHook: Boolean; stdcall; export;  
  105.  begin  
  106.   if hkQQChat=0 then  
  107.   begin  
  108.    hkQQChat := SetWindowsHookEx(WH_CBT, @TitleHookProc, Hinstance, 0);  
  109.    Result := True;  
  110.   end  
  111.   else 
  112.    Result := False;  
  113.   end;  
  114.  
  115.   //卸載鉤子  
  116.   function DisableWheelHook: Boolean; stdcall; export;  
  117.   begin  
  118.    if hkQQChat<>0 then  
  119.    begin  
  120.     UnHookWindowsHookEx(hkQQChat);  
  121.     hkQQChat := 0;  
  122.     Result := True;  
  123.    end  
  124.    else 
  125.     Result := False;  
  126.    end;  
  127.  
  128.   end.  

  調試:運行程序后自動隱藏,當你提取QQ或者MSN的消息時會驚奇的發(fā)現(xiàn)聊天窗口的那個討厭的“與XX聊天”的標題沒有了,而標題換成了“我的文檔”。這時如果你再將此聊天窗口的圖標換成文檔樣式的圖標,那么誰還能看出那就是你的聊天窗口。調用應用程序很簡單,調用EnableWheelHook后隱藏就可以了,退出時DisableWheelHook就OK啦。

  程序僅僅提供大家一個思路,還有很多不完善的地方,希望有興趣的朋友聯(lián)系我,共同交流提高。

【編輯推薦】

  1. 利用VFW在Delphi中開發(fā)視頻捕獲程序
  2. Delphi編程使用HOOK監(jiān)視Windows
  3. Delphi中如何判斷服務器路徑
  4. Delphi初學者應小心的六大問題
  5. 基于Delphi的屏幕抓圖技術的實現(xiàn)
責任編輯:韓亞珊 來源: 編程愛好者
相關推薦

2011-12-15 10:19:55

JavaNIO

2017-01-09 10:42:56

微信小程序

2021-11-05 13:20:43

微信個人狀態(tài)移動應用

2021-07-27 12:21:34

微信Bug聊天記錄

2014-03-21 09:05:40

2023-08-29 18:23:46

代碼AI

2019-11-05 10:00:06

手機QQQQ空間QQ

2009-06-30 16:26:56

2012-03-07 14:14:19

win8

2010-08-02 15:21:06

DelphiICMP

2009-08-28 10:24:44

Windows 7系統(tǒng)故障應對QQ窗口自動變大

2011-04-06 15:51:32

DelphiHOOK

2023-04-21 10:21:26

世優(yōu)科技ChatGPT數字人

2011-04-06 13:28:46

Delphi

2011-04-06 13:56:36

Delphi

2015-08-06 16:23:04

iosxmpp聊天

2012-05-18 14:53:25

2021-01-15 13:27:50

竊密腳本CSS惡意代碼

2021-02-23 13:27:28

Android 12谷歌小部件

2011-03-18 19:05:31

QQQtWidget
點贊
收藏

51CTO技術棧公眾號