牧者

大风起兮云飞扬

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

Delphi中SendMessage使用说明(3)--SendMessage使用例子

(引用CommCtrl) 
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);

 

 

 
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;

  

 下列办法可实现对话框自动定时关闭:
在程序中插入一个定时器,设置好时间,在对话框使用前激活定时器。插入代码:

procedure TfrmMain.Timer1_AutoCloseTimer(Sender: TObject);
var
    AHandle: THandle;
begin
    AHandle := FindWindow('TMessageForm', PChar(application.Title));
    if AHandle > 0 then
        SendMessage(AHandle, WM_CLOSE, 0, 0);
end;

  

 

posted on 2016-10-20 10:03  牧者.D  阅读(2035)  评论(0)    收藏  举报