Delphi完成獲得句柄並發送新聞的辦法。本站提示廣大學習愛好者:(Delphi完成獲得句柄並發送新聞的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Delphi完成獲得句柄並發送新聞的辦法正文
本文以實例情勢具體解釋了Delphi獲得句柄並發送新聞的辦法,詳細用法解釋以下:
查找別的一個窗口的句柄:
handle := FindWindow(nil,PChar('窗口的題目'));//查到窗體句柄
查找子窗體:
childHandle := FindWindowEx(handle,0,'子窗體類','子窗體題目');
別的有個列舉子窗體的API,
EnumChildWindows(主創體句柄,@回調函數,用戶參數);
用這個函數須要本身寫一個回調的函數,好比:
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('我來測度了'))); ShowMessage( IntToStr(h)); end;
SendMessage(TreeView.Handle,TVM_SETBKCOLOR,0,RGB(255,0,0)); 設置TV配景色彩 SendMessage(Button.Handle,WM_LBUTTONDOWN,0,0); 鼠標左鍵按下 SendMessage(Button.Handle,WM_LBUTTONUP,0,0); 鼠標左鍵抬起 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作風 SendMessage(ComboBox.Handle,CB_SETDropPEDWIDTH,300,0); 轉變CBDownWidth
WM_CUT、WM_COPY和WM_PASTE 剪切,復制,粘帖
完成隨意率性組合鍵:
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解釋: 挪用一個窗口的窗口函數,將一條新聞發給誰人窗口。除非新聞處置終了,不然該函數不會前往
SendMessage所包括4個參數:
1. hwnd 32位的窗口句柄窗口可所以任何類型的屏幕對象,由於Win32可以或許保護年夜多半可視對象的句柄
2. wMsg 用於差別其他新聞的常量值,這些常量可所以Windows單位中預界說的常量,也能夠是自界說的常量
3. wParam 平日是一個與新聞有關的常量值,也能夠是窗口或控件的句柄
4. lParam 平日是一個指向內存中數據的指針。因為WParm、lParam和Pointer都是32位的,是以,它們之間可以互相轉換
wMsg函數具體解釋:
★WM_Create 創立一個窗口
★WM_DESTROY 當一個窗口被損壞時發送
★WM_MOVE 挪動一個窗口
★WM_SIZE 轉變一個窗口的年夜小
★WM_ACTIVATE 一個窗口被激活或掉去激活狀況
★WM_SETFOCUS 一個窗口取得核心
★WM_KILLFOCUS 一個窗口掉去核心
★WM_ENABLE 一個窗口轉變成Enable狀況
★WM_SETREDRAW 設置窗口能否能重畫
★WM_SETTEXT 運用法式發送此新聞來設置一個窗口的文本
★WM_GETTEXT 運用法式發送此新聞來復制對應窗口的文本到緩沖區
★WM_GETTEXTLENGTH 獲得與一個窗口有關的文本的長度(不包括空字符)
★WM_PAINT 請求一個窗口重畫本身
★WM_CLOSE 當一個窗口或運用法式要封閉時發送一個旌旗燈號
★WM_QUERYENDSESSION 用戶選擇停止對話框或法式本身挪用ExitWindows函數
★WM_QUIT 用來停止法式運轉
★WM_QUERYOPEN 用戶窗口恢復之前的年夜小地位時,把此新聞發送給某個圖標
★WM_ERASEBKGND 當窗口配景必需被擦除時(例在窗口轉變年夜小時)
★WM_SYSCOLORCHANGE 當體系色彩轉變時,發送此新聞給一切頂級窗口
★WM_QUERYENDSESSION 新聞後,此新聞發送給運用法式,告訴它對話能否停止
★WM_SHOWWINDOW 當隱蔽或顯示窗口是發送此新聞給這個窗口
★WM_ACTIVATEAPP 發此新聞給運用法式哪一個窗口是激活的,哪一個長短激活的
★WM_FONTCHANGE 當體系的字體資本庫變更時發送此新聞給一切頂級窗口
★WM_TIMECHANGE 當體系的時光變更時發送此新聞給一切頂級窗口
★WM_CANCELMODE 發送此新聞來撤消某種正在停止的摸態(操作)
★WM_SETCURSOR 假如鼠標惹起光標在某個窗口中挪動
★WM_ENDSESSION 當體系過程收回且鼠標輸出沒有被捕捉時,就發新聞給某個窗口
★WM_MOUSEACTIVATE 當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發送此新聞給以後窗口
★WM_CHILDACTIVATE 送此新聞給MDI子窗口當用戶點擊此窗口的題目欄,或當窗口被激活,挪動,轉變年夜小
★WM_QUEUESYNC 此新聞由基於盤算機的練習法式發送,經由過程 WH_JOURNALPALYBACK的hook法式分別出用戶輸出新聞
★WM_GETMINMAXINFO 此新聞發送給窗口當它將要轉變年夜小或地位
★WM_PAINTICON 發送給最小化窗口當它圖標將要被重畫
★WM_ICONERASEBKGND 此新聞發送給某個最小化窗口,僅當它在繪圖標前它的配景必需被重畫
★WM_NEXTDLGCT★發送此新聞給一個對話框法式去更改核心地位
★WM_SPOOLERSTATUS 每當打印治理排隊增長或削減一條功課時收回此新聞
★WM_DRAWITEM 當button,combobox,listbox,menu的可視外不雅轉變時發送
★WM_MEASUREITEM 當button, combobox, listbox, listview control, or menuitem 被創立時
★WM_VKEYTOITEM 此新聞有一個LBS_WANTKEYBOARDINPUT作風的收回給它的一切者來呼應WM_KEYDOWN新聞
★WM_CHARTOITEM 此新聞由一個LBS_WANTKEYBOARDINPUT作風的列表框發送給他的一切者來呼應WM_CHAR新聞
★WM_SETFONT 當繪制文本時法式發送此新聞獲得控件要用的色彩
★WM_GETFONT 運用法式發送此新聞獲得以後控件繪制文本的字體
★WM_SETHOTKEY 運用法式發送此新聞讓一個窗口與一個熱鍵相干連
★WM_GETHOTKEY 運用法式發送此新聞來斷定熱鍵與某個窗口能否有聯系關系
★WM_QUERYDRAGICON 此新聞發送給最小化窗口,當此窗口將要被拖放而它的類中沒有界說圖標,運用法式能前往一個圖標或光標的句柄,當用戶拖放圖標時體系顯示這個圖標或光標
★WM_COMPAREITEM 發送此新聞來剖斷combobox或listbox新增長的項的絕對地位
★WM_COMPACTING 顯示內存曾經很少了
★WM_WINDOWPOSCHANGING 發送此新聞給誰人窗口的年夜小和地位將要被轉變時,來挪用setwindowpos函數或其它窗口治理函數
★WM_WINDOWPOSCHANGED 發送此新聞給誰人窗口的年夜小和地位曾經被轉變時,來挪用setwindowpos函數或其它窗口治理函數
★WM_POWER 當體系將要進入暫停狀況時發送此新聞
★WM_COPYDATA 當一個運用法式傳遞數據給另外一個運用法式時發送此新聞
★WM_CANCELJOURNA 當某個用戶撤消法式日記激活狀況,提交此新聞給法式
★WM_NOTIFY 當某個控件的某個事宜曾經產生或這個控件須要獲得一些信息時,發送此新聞給它的父窗口
★WM_INPUTLANGCHANGEREQUEST 當用戶選擇某種輸出說話,或輸出說話的熱鍵轉變
★WM_INPUTLANGCHANGE 當平台現場曾經被轉變後發送此新聞給受影響的最頂級窗口
★WM_TCARD 當法式曾經初始化windows贊助例程時發送此新聞給運用法式
★WM_HELP 此新聞顯示用戶按下了F1,假如某個菜單是激活的,就發送此新聞個此窗口聯系關系的菜單,不然就發送給有核心的窗口,假如以後都沒有核心,就把此新聞發送給以後激活的窗口
★WM_USERCHANGED 當用戶曾經登入或加入後發送此新聞給一切的窗口,當用戶登入或加入時體系更新用戶的詳細設相信息,在用戶更新設置時體系立時發送此新聞
★WM_NOTIFYFORMAT 公用控件,自界說控件和他們的父窗口經由過程此新聞來斷定控件是應用ANSI照樣UNICODE構造
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;