hermeskid吧 关注:61贴子:2,717
  • 3回复贴,共1

GetWindowLong/SetWindowLong

只看楼主收藏回复



IP属地:江西1楼2016-02-14 16:15回复
    LONG GetWindowLong(HWND hWnd,int nlndex);
    hWnd
    目标窗口的句柄。它可以是窗口句柄及间接给出的窗口所属的窗口类。
    nlndex
    需要获得的相关信息的类型。指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要获得任意其他值,指定下列值之一:
    GWL_EXSTYLE(-20) 获得扩展窗口风格。
    GWL_HINSTANCE(-6) 获得应用实例的句柄。
    GWL_HWNDPARENT(-8) 如果父窗口存在,获得父窗口句柄。
    GWL_ID(-12) 获得窗口标识。
    GWL_STYLE(-16) 获得窗口风格。
    GWL_USERDATA(-21) 获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。
    GWL_WNDPROC(-4) 获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。
    hWnd参数为对话框句柄时,还可用下列值:
    DWL_DLGPROC(4) 获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。
    DWL_MSGRESULT(0) 获得在对话框过程中一个消息处理的返回值。
    DWL_USER(8) 获得应用程序私有的额外信息,例如一个句柄或指针。
    返回值
    如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。


    星座王
    点亮12星座印记,去领取
    活动截止:2100-01-01
    去徽章馆》
    IP属地:江西2楼2016-02-14 16:16
    回复
      LONG SetWindowLong(HWND hWnd,int nlndex,LONG dwNewLong);
      hWnd
      窗口句柄及间接给出的窗口所属的类。
      nlndex
      指定将设定的大于等于0的偏移值。有效值的范围从0到额外类的存储空间的字节数减4:例如若指定了12或多于12个字节的额外窗口存储空间,则应设索引位8来访问第三个4字节,同样设置0访问第一个4字节,4访问第二个4字节。要设置其他任何值,可以指定下面值之一:
      GWL_EXSTYLE -20 设定一个新的扩展风格。
      GWL_HINSTANCE -6 设置一个新的应用程序实例句柄。
      GWL_ID -12 设置一个新的窗口标识符。
      GWL_STYLE -16 设定一个新的窗口风格。
      GWL_USERDATA -21 设置与窗口有关的32位值。每个窗口均有一个由创建该窗口的应用程序使用的32位值。
      GWL_WNDPROC -4 为窗口过程设定一个新的地址。
      GWL_HWNDPARENT -8   改变子窗口的父窗口,应使用SetParent函数。
      当hWnd参数标识了一个对话框时,也可使用下列值:
      DWL_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT) (值:4) 设置对话框过程的新地址。
      DWL_MSGRESULT 0 设置在对话框过程中处理的消息的返回值。
      DWL_USER DWLP_DLGPROC + sizeof(DLGPROC) (值:8) 设置的应用程序私有的新的额外信息,例如一个句柄或指针。
      dwNewLong
      指定的替换值。dwNewLong中可以使用以下一些列表控件的专用风格:
      以下四种风格决定控件的外观,同时只可以选择其中一种:
      LVS_ICON 大图标显示
      LVS_SMALLICON 小图标显示
      LVS_LIST 列表显示
      LVS_REPORT 详细报表显示
      LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
      LVS_SINGLESEL 同时只能选中列表中一项
      返回值
      如果函数成功,返回值是指定的32位整数的原来的值。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。


      星座王
      点亮12星座印记,去领取
      活动截止:2100-01-01
      去徽章馆》
      IP属地:江西3楼2016-02-14 16:22
      回复
        使用GetwindowLong GWL_WNDPROC来获取窗口过程
        用IsWindowUnicode(hWnd)判断是不是Unicode的,如果是的,就用GetWindowLongW,不是Unicode就用GetWindowLongA
        对于其他进程,可以使用钩子植入dll,再调用GetwindowLong,参考
        http://blog.csdn.net/skyremember/article/details/3124381


        星座王
        点亮12星座印记,去领取
        活动截止:2100-01-01
        去徽章馆》
        IP属地:江西4楼2016-02-14 16:26
        回复