欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

Delphi

當(dāng)前位置:主頁 > 軟件編程 > Delphi >

Delphi實(shí)現(xiàn)獲取句柄并發(fā)送消息的方法

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:Delphi|點(diǎn)擊: 次

本文以實(shí)例形式詳細(xì)說明了Delphi獲取句柄并發(fā)送消息的方法,具體用法說明如下:

查找另外一個(gè)窗口的句柄:

handle := FindWindow(nil,PChar('窗口的標(biāo)題'));//查到窗體句柄

查找子窗體:

childHandle := FindWindowEx(handle,0,'子窗體類','子窗體標(biāo)題'); 

另外有個(gè)枚舉子窗體的API,

EnumChildWindows(主創(chuàng)體句柄,@回調(diào)函數(shù),用戶參數(shù));

用這個(gè)函數(shù)需要自己寫一個(gè)回調(diào)的函數(shù),比如:

function EnumChildProc(ahWND:HWND; param:LPARAM):boolean; stdcall;
sendmessage(handle,message,wl,rl)
unit Unit1; 

interface 

uses Windows,Messages,Tlhelp32,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;

type
 TForm1=class(TForm)
procedure FormCreate(Sender: TObject);

 private
 {
Private declarations
} 
 public 
 {
Public declarations
}
 end; 
var Form1: TForm1;
implementation
{ 
$R *.DFM
}

procedure TForm1.FormCreate(Sender: TObject);
var a,b:PAnsiChar;
h:HWND;
begin
h:= FindWindow(nil,'abc.txt - 記事本');
h:= FindWindowEx(h,0,'edit',nil);
SendMessage(h,WM_SETTEXT,255,Integer(PChar('我來測(cè)度了')));
ShowMessage( IntToStr(h));
end;

SendMessage(TreeView.Handle,TVM_SETBKCOLOR,0,RGB(255,0,0)); 設(shè)置TV背景顏色
SendMessage(Button.Handle,WM_LBUTTONDOWN,0,0);  鼠標(biāo)左鍵按下
SendMessage(Button.Handle,WM_LBUTTONUP,0,0);   鼠標(biāo)左鍵抬起
SendMessage(Edit.Handle,WM_SETTEXT,255,Integer(PChar('abc'))); 傳遞文本
SendMessage(Edit.Handle,WM_Char,Wparam('Q'),2);  傳遞字符
SendMessage(Button.Handle,BM_SETSTYLE,BS_RADIOBUTTON,1);  改變Button風(fēng)格
SendMessage(ComboBox.Handle,CB_SETDropPEDWIDTH,300,0);  改變CBDownWidth

WM_CUT、WM_COPY和WM_PASTE  剪切,復(fù)制,粘帖

實(shí)現(xiàn)任意組合鍵:

keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);

SendMessageA說明: 調(diào)用一個(gè)窗口的窗口函數(shù),將一條消息發(fā)給那個(gè)窗口。除非消息處理完畢,否則該函數(shù)不會(huì)返回

SendMessage所包含4個(gè)參數(shù):   
1. hwnd 32位的窗口句柄窗口可以是任何類型的屏幕對(duì)象,因?yàn)閃in32能夠維護(hù)大多數(shù)可視對(duì)象的句柄
2. wMsg 用于區(qū)別其他消息的常量值,這些常量可以是Windows單元中預(yù)定義的常量,也可以是自定義的常量
3. wParam 通常是一個(gè)與消息有關(guān)的常量值,也可能是窗口或控件的句柄
4. lParam 通常是一個(gè)指向內(nèi)存中數(shù)據(jù)的指針。由于WParm、lParam和Pointer都是32位的,因此,它們之間可以相互轉(zhuǎn)換

wMsg函數(shù)詳細(xì)說明: 

★WM_Create 創(chuàng)建一個(gè)窗口
★WM_DESTROY 當(dāng)一個(gè)窗口被破壞時(shí)發(fā)送
★WM_MOVE 移動(dòng)一個(gè)窗口
★WM_SIZE 改變一個(gè)窗口的大小
★WM_ACTIVATE 一個(gè)窗口被激活或失去激活狀態(tài)
★WM_SETFOCUS 一個(gè)窗口獲得焦點(diǎn)
★WM_KILLFOCUS 一個(gè)窗口失去焦點(diǎn)
★WM_ENABLE 一個(gè)窗口改變成Enable狀態(tài)
★WM_SETREDRAW 設(shè)置窗口是否能重畫
★WM_SETTEXT 應(yīng)用程序發(fā)送此消息來設(shè)置一個(gè)窗口的文本
★WM_GETTEXT 應(yīng)用程序發(fā)送此消息來復(fù)制對(duì)應(yīng)窗口的文本到緩沖區(qū)
★WM_GETTEXTLENGTH 得到與一個(gè)窗口有關(guān)的文本的長度(不包含空字符)
★WM_PAINT 要求一個(gè)窗口重畫自己
★WM_CLOSE 當(dāng)一個(gè)窗口或應(yīng)用程序要關(guān)閉時(shí)發(fā)送一個(gè)信號(hào)
★WM_QUERYENDSESSION 用戶選擇結(jié)束對(duì)話框或程序自己調(diào)用ExitWindows函數(shù)
★WM_QUIT 用來結(jié)束程序運(yùn)行
★WM_QUERYOPEN 用戶窗口恢復(fù)以前的大小位置時(shí),把此消息發(fā)送給某個(gè)圖標(biāo)
★WM_ERASEBKGND 當(dāng)窗口背景必須被擦除時(shí)(例在窗口改變大小時(shí))
★WM_SYSCOLORCHANGE 當(dāng)系統(tǒng)顏色改變時(shí),發(fā)送此消息給所有頂級(jí)窗口
★WM_QUERYENDSESSION 消息后,此消息發(fā)送給應(yīng)用程序,通知它對(duì)話是否結(jié)束
★WM_SHOWWINDOW 當(dāng)隱藏或顯示窗口是發(fā)送此消息給這個(gè)窗口
★WM_ACTIVATEAPP 發(fā)此消息給應(yīng)用程序哪個(gè)窗口是激活的,哪個(gè)是非激活的   
★WM_FONTCHANGE 當(dāng)系統(tǒng)的字體資源庫變化時(shí)發(fā)送此消息給所有頂級(jí)窗口
★WM_TIMECHANGE 當(dāng)系統(tǒng)的時(shí)間變化時(shí)發(fā)送此消息給所有頂級(jí)窗口
★WM_CANCELMODE 發(fā)送此消息來取消某種正在進(jìn)行的摸態(tài)(操作)
★WM_SETCURSOR 如果鼠標(biāo)引起光標(biāo)在某個(gè)窗口中移動(dòng)
★WM_ENDSESSION 當(dāng)系統(tǒng)進(jìn)程發(fā)出且鼠標(biāo)輸入沒有被捕獲時(shí),就發(fā)消息給某個(gè)窗口
★WM_MOUSEACTIVATE 當(dāng)光標(biāo)在某個(gè)非激活的窗口中而用戶正按著鼠標(biāo)的某個(gè)鍵發(fā)送此消息給當(dāng)前窗口
★WM_CHILDACTIVATE 送此消息給MDI子窗口當(dāng)用戶點(diǎn)擊此窗口的標(biāo)題欄,或當(dāng)窗口被激活,移動(dòng),改變大小
★WM_QUEUESYNC 此消息由基于計(jì)算機(jī)的訓(xùn)練程序發(fā)送,通過 WH_JOURNALPALYBACK的hook程序分離出用戶輸入消息
★WM_GETMINMAXINFO 此消息發(fā)送給窗口當(dāng)它將要改變大小或位置   
★WM_PAINTICON 發(fā)送給最小化窗口當(dāng)它圖標(biāo)將要被重畫
★WM_ICONERASEBKGND 此消息發(fā)送給某個(gè)最小化窗口,僅當(dāng)它在畫圖標(biāo)前它的背景必須被重畫
★WM_NEXTDLGCT★發(fā)送此消息給一個(gè)對(duì)話框程序去更改焦點(diǎn)位置
★WM_SPOOLERSTATUS 每當(dāng)打印管理列隊(duì)增加或減少一條作業(yè)時(shí)發(fā)出此消息   
★WM_DRAWITEM 當(dāng)button,combobox,listbox,menu的可視外觀改變時(shí)發(fā)送
★WM_MEASUREITEM 當(dāng)button, combobox, listbox, listview control, or menuitem 被創(chuàng)建時(shí)
★WM_VKEYTOITEM 此消息有一個(gè)LBS_WANTKEYBOARDINPUT風(fēng)格的發(fā)出給它的所有者來響應(yīng)WM_KEYDOWN消息   
★WM_CHARTOITEM 此消息由一個(gè)LBS_WANTKEYBOARDINPUT風(fēng)格的列表框發(fā)送給他的所有者來響應(yīng)WM_CHAR消息   
★WM_SETFONT 當(dāng)繪制文本時(shí)程序發(fā)送此消息得到控件要用的顏色
★WM_GETFONT 應(yīng)用程序發(fā)送此消息得到當(dāng)前控件繪制文本的字體
★WM_SETHOTKEY 應(yīng)用程序發(fā)送此消息讓一個(gè)窗口與一個(gè)熱鍵相關(guān)連
★WM_GETHOTKEY 應(yīng)用程序發(fā)送此消息來判斷熱鍵與某個(gè)窗口是否有關(guān)聯(lián)
★WM_QUERYDRAGICON 此消息發(fā)送給最小化窗口,當(dāng)此窗口將要被拖放而它的類中沒有定義圖標(biāo),應(yīng)用程序能返回一個(gè)圖標(biāo)或光標(biāo)的句柄,當(dāng)用戶拖放圖標(biāo)時(shí)系統(tǒng)顯示這個(gè)圖標(biāo)或光標(biāo)
★WM_COMPAREITEM 發(fā)送此消息來判定combobox或listbox新增加的項(xiàng)的相對(duì)位置
★WM_COMPACTING 顯示內(nèi)存已經(jīng)很少了
★WM_WINDOWPOSCHANGING 發(fā)送此消息給那個(gè)窗口的大小和位置將要被改變時(shí),來調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)
★WM_WINDOWPOSCHANGED 發(fā)送此消息給那個(gè)窗口的大小和位置已經(jīng)被改變時(shí),來調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)
★WM_POWER 當(dāng)系統(tǒng)將要進(jìn)入暫停狀態(tài)時(shí)發(fā)送此消息
★WM_COPYDATA 當(dāng)一個(gè)應(yīng)用程序傳遞數(shù)據(jù)給另一個(gè)應(yīng)用程序時(shí)發(fā)送此消息
★WM_CANCELJOURNA 當(dāng)某個(gè)用戶取消程序日志激活狀態(tài),提交此消息給程序
★WM_NOTIFY 當(dāng)某個(gè)控件的某個(gè)事件已經(jīng)發(fā)生或這個(gè)控件需要得到一些信息時(shí),發(fā)送此消息給它的父窗口   
★WM_INPUTLANGCHANGEREQUEST 當(dāng)用戶選擇某種輸入語言,或輸入語言的熱鍵改變
★WM_INPUTLANGCHANGE 當(dāng)平臺(tái)現(xiàn)場(chǎng)已經(jīng)被改變后發(fā)送此消息給受影響的最頂級(jí)窗口
★WM_TCARD 當(dāng)程序已經(jīng)初始化windows幫助例程時(shí)發(fā)送此消息給應(yīng)用程序
★WM_HELP 此消息顯示用戶按下了F1,如果某個(gè)菜單是激活的,就發(fā)送此消息個(gè)此窗口關(guān)聯(lián)的菜單,否則就發(fā)送給有焦點(diǎn)的窗口,如果當(dāng)前都沒有焦點(diǎn),就把此消息發(fā)送給當(dāng)前激活的窗口
★WM_USERCHANGED 當(dāng)用戶已經(jīng)登入或退出后發(fā)送此消息給所有的窗口,當(dāng)用戶登入或退出時(shí)系統(tǒng)更新用戶的具體設(shè)置信息,在用戶更新設(shè)置時(shí)系統(tǒng)馬上發(fā)送此消息
★WM_NOTIFYFORMAT 公用控件,自定義控件和他們的父窗口通過此消息來判斷控件是使用ANSI還是UNICODE結(jié)構(gòu)

function EnumChildWindowsProc(hwnd, lparam: Integer): Boolean;  
  var  
 buffer: array[0..255] of char;  
  begin  
 Result := True;  
 GetClassName(hwnd,buffer,256);  
 if StrPas(Buffer)='Edit' then  
 begin  
 SendMessage(hwnd,WM_GETTEXT,256,lparam);  
 Result:=False;  
 end;  
  end;  
  
  procedure TForm1.Button1Click(Sender: TObject);  
  var  
 hwnd: Integer;  
 buffer: array[0..255] of char;  
  Begin  
 hwnd := FindWindow('CabinetWClass',nil);  
 if hwnd<> 0 then  
 begin  
 EnumChildWindows(hwnd,@EnumChildWindowsProc,Longint(@buffer[0]));  
 Caption := StrPas(buffer);  
 end;  
  end;

上一篇:Delphi實(shí)現(xiàn)讀取系統(tǒng)時(shí)間與日期完整實(shí)例

欄    目:Delphi

下一篇:Delphi下OpenGL2d繪圖之畫點(diǎn)的方法

本文標(biāo)題:Delphi實(shí)現(xiàn)獲取句柄并發(fā)送消息的方法

本文地址:http://mengdiqiu.com.cn/a1/Delphi/8636.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有