SendMessage

作者在 2008-07-03 22:17:42 发布以下内容
SendMessage
Public  Declare  Function  GetDlgItem  Lib  "user32"  Alias  "GetDlgItem"  (ByVal  hDlg  As  Long,  ByVal  nIDDlgItem  As  Long)  As  Long  
 
该函数检索指定的对话框中的控件句柄  
 
如果函数调用成功则返回值为给定控件的窗口句柄。如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控件。若想获得更多错误信息,请调用GetLastError函数。  
 
hDlg:标识含有控件的对话框。  
nlDDlgltem:指定将被检索的控件的ID。  
 
 
可以通过使用任何父子窗口对来使用GetDlgltem函数,而不仅只是对话框。只要hDlg参数指定一个父窗口,且子窗口有一个独立的标识符(象CreateWindow中hMenu参数指定的或创建子窗口的CreateWindowEx指定的那样),GetDlgltem就会返回一个有效的句柄到子窗口。  
       Windows  CE:GetDlgltem函数只为对话框中的直接于控制工作,它不通过嵌套的对话框来搜寻。  
Windows  NT:3.1及以上版本;Windows:95及以上版本;Windows  CE:1.0及以上版本  
 
单击=MouseDown、MouseUp  
也就是先发送WM_LBUTTONDOWN,再发送WM_LBUTTONUP  
---------------------------------------------------------------  
 
Option  Explicit  
Private  Declare  Function  FindWindow  Lib  "user32"  Alias  "FindWindowA"  (ByVal  lpClassName  As  String,  ByVal  lpWindowName  As  String)  As  Long  
Private  Declare  Function  FindWindowEx  Lib  "user32"  Alias  "FindWindowExA"  (ByVal  hWnd1  As  Long,  ByVal  hWnd2  As  Long,  ByVal  lpsz1  As  String,  ByVal  lpsz2  As  String)  As  Long  
Private  Declare  Function  SendMessage  Lib  "user32"  Alias  "SendMessageA"  (ByVal  hwnd  As  Long,  ByVal  wMsg  As  Long,  ByVal  wParam  As  Long,  lParam  As  Any)  As  Long  
Private  Const  WM_SETTEXT  =  &HC  
Private  Const  WM_NCLBUTTONDOWN  =  &HA1  
Private  Const  WM_NCLBUTTONUP  =  &HA2  
Private  Const  WM_KEYDOWN  =  &H100  
Private  Const  WM_KEYUP  =  &H101  
Private  Const  BM_CLICK  =  &HF5  
'Private  Declare  Function  GetDlgItem  Lib  "user32"  (ByVal  hDlg  As  Long,  ByVal  nIDDlgItem  As  Long)  As  Long  
Private  Declare  Function  GetWindow  Lib  "user32"  (ByVal  hwnd  As  Long,  ByVal  wCmd  As  Long)  As  Long  
Private  Sub  command1_click()  
       Dim  Handle  As  Long        '  窗口句柄  
       Dim  s  As  String  
       Dim  ParentHandle  As  Long        '  父窗口句柄  
       Dim  a  As  Integer,  b  As  Integer,  c  As  Integer,  d  As  Integer,  e  As  Integer  
       Dim  f  As  Integer,  g  As  Integer,  h  As  Integer,  i  As  Integer,  j  As  Integer  
       Dim  a1  As  Integer,  b1  As  Integer,  c1  As  Integer,  d1  As  Integer,  e1  As  Integer  
       Dim  f1  As  Integer,  g1  As  Integer,  h1  As  Integer,  i1  As  Integer,  j1  As  Integer  
       Dim  INI  As  String  
       ParentHandle  =  FindWindow("FNWNS370",  "系统名称")'这里可以找到一个主窗口的句柄  
       Handle  =  FindWindowEx(ParentHandle,  0&,  "PBEDIT70",  vbNullString)'这里可以得到一个文本框的值  
       SendMessage  Handle,  WM_SETTEXT,  0,  ByVal  "1234556"'改变文本框的值  
       Handle  =  FindWindowEx(ParentHandle,  0&,  "Button",  "确定(&O)")  
     'SendMessage  Handle,  WM_KEYDOWN,  32,  &H11C0001  
     'SendMessage  Handle,  WM_KEYUP,  32,  &H11C0001  '这两句模拟回车  
     SendMessage  Handle,  BM_CLICK,  0,  0'模拟单击  
end  sub  
 
'Private  Sub  command1_click()  
'Dim  Handle  As  Long        '  窗口句柄  
'Dim  s  As  String  
'Dim  ParentHandle  As  Long        '  父窗口句柄  
'ParentHandle  =  FindWindow("FNWNS370",  "系统注册")  
'While  True  
'        Handle  =  GetWindow(ParentHandle,  6)  '得到对话框的句柄.这里是我试出来的,等于6时刚好可以取到.  
'        Handle  =  FindWindowEx(Handle,  0&,  "Button",  "确定")  
'        SendMessage  Handle,  BM_CLICK,  0,  0  '模拟单击,我不知道为什么要单击两下.  
'        SendMessage  Handle,  BM_CLICK,  0,  0  
'        DoEvents  
'Wend  
'End  Sub  
默认分类 | 阅读 4908 次
文章评论,共0条
游客请输入验证码
浏览94515次