获得一程序窗口句柄 想用setwindowpos使窗口置于最上端
然后用sendkeys发送ctrl+w我这样做
hw = FindWindow("IEFrame", vbNullString) '获得句柄
SetWindowPos hw, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
SendKeys "^W", True但那个hw好像传不到SetWindowPos那 啊 
该怎么做那????请写下完整的实现代码 谢谢谢谢!!!

解决方案 »

  1.   

    你先得确认,hw值,是正确.再之后就是,SetWindowPOS()是否得窗体得到了聚集.
      

  2.   

    你这个问题跟前面你发过的两帖应该是有联系的,首先搞清楚ctrl+w作用是什么,它是一个关闭窗体的热键,就是要去实现“关闭”,关闭功能我已经在你领一贴里有回帖。
    那么现在要做的不是发送ctrl+w,而是做个keyPress事件过程,检查是否有ctrl+w事件发生。没必要把你的目标窗口置上置下的。
      

  3.   

    Const SC_CLOSE = &HF060
    Const WM_SYSCOMMAND = &H112Private Sub CloseLabel()
        Dim HandLabel As Long
        dim hw as long
        hw = FindWindow("IEFrame", vbNullString) '获得句柄
        HandLabel = PostMessage(hw, WM_SYSCOMMAND, SC_CLOSE, 0&)    
    End Sub假如你的程序存在一个窗体
    Private Sub Form_KeyPress(KeyAscii As Integer)
        if KeyAscii=23 then CloseLabel
    End Sub
      

  4.   

    因为你sendkeys发送ctrl+w,哪怕目标窗口收到了,它也不知道干啥,你们之间没有要它干啥的协议。
      

  5.   

    mmyyxx88() ( ) 信誉:100  2007-8-6 23:32:21  得分: 0  
     
     
       
    Const SC_CLOSE = &HF060
    Const WM_SYSCOMMAND = &H112Private Sub CloseLabel()
        Dim HandLabel As Long
        dim hw as long
        hw = FindWindow("IEFrame", vbNullString) '获得句柄
        HandLabel = PostMessage(hw, WM_SYSCOMMAND, SC_CLOSE, 0&)    
    End Sub假如你的程序存在一个窗体
    Private Sub Form_KeyPress(KeyAscii As Integer)
        if KeyAscii=23 then CloseLabel
    End Sub
    ---------------------------
    为什么不直接用 postmessage hw,WM_CLOSE,0&,0&
     
      

  6.   

    还是哪个傲游吧?
    给你个例子,调试通过
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPrivate Sub Command1_Click()
    Dim title As String * 255, hw As Long, ret As Long
    hw = FindWindow("IEFrame", vbNullString) '获得句柄
    ret = GetWindowText(hw, title, 255)
    AppActivate Left(title, ret)
    DoEvents
    SendKeys "^w", TrueAppActivate Me.Caption
    End Sub
      

  7.   

    非常感谢大家! 问题我已经解决 是这样的Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Const HWND_TOPMOST = -1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOSIZE = &H1
    Dim hw_hwnd As LongPrivate Sub Command1_Click()
    hw_hwnd = FindWindow("IEFrame", vbNullString)SetWindowPos hw_hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    SendKeys "^W", True
    End Subhw_hwnd声明成这样就能传了 可能大家没理解我的意思 呵呵
    我很奇怪为什么那么多人不用傲游 傲游不是用的最多的吗?那么大家都用什么呢 是firefox吗?还有就是能否说下你们的学vb的过程 都是怎样学的 是学校教? 还是自学?
    我是自学 买了vb编程的两本书 感觉很困难!!!尤其是现在学的vb api编程 更是找不到教程大家都是怎么学成现在的水平啊?? 我也想成老鸟!!mmyyxx88 我给你发站内信了
      

  8.   

    我很奇怪为什么那么多人不用傲游 傲游不是用的最多的吗?那么大家都用什么呢 是firefox吗?