Private Sub Command3_Click()
   Dim a As Long
   Dim b As Long
   Dim c As Long
   Dim d As Long
   a = FindWindow("DFX_WINDOW", "DFX 7.5 Winamp")
   SendMessage a, WM_CLOSE, 0, 0              ’发送关闭指令 
   b = FindWindow("#32770", "关闭")          ‘这句是查找关闭窗体的句柄
   c = FindWindowEx(b, 0, "Button", "确定")  ‘关闭窗体时提示,弹出一关闭窗体,有“确认”和“取消”按钮
   SendMessage c, WM_CLICK, 0, 0             ‘发送关闭指令
End Sub第一关闭主窗体,并关闭了提示窗体
第二次关闭主窗体,但没有关闭提示窗体,这是为啥了

解决方案 »

  1.   

    针对你多了个关闭框的问题Private Sub Command3_Click()
       Dim a As Long
       Dim b As Long
       Dim c As Long
       Dim d As Long
       dim i
       a = FindWindow("DFX_WINDOW", "DFX 7.5 Winamp")
       SendMessage a, WM_CLOSE, 0, 0              '发送关闭指令 
       b = FindWindow("#32770", "关闭")            '这句是查找关闭窗体的句柄
     for i=1 to b
       c = FindWindowEx(b, 0, "Button", "确定")    '关闭窗体时提示,弹出一关闭窗体,有“确认”和“取消”按钮
       SendMessage c, WM_CLICK, 0, 0               '发送关闭指令
     next i
    End Sub其实不是很明白你想实现什么功能
    如果你要关闭一个窗口的话,可以用getwindows找到窗口然后直接关闭他。。
    如果要关闭程序的话,可以通过关闭进程来实现,先EnumWindowsProc遍历出进程,GetWindowThreadProcessId得到进程,最后关闭他。
      

  2.   

    就拿记事本来说,
    我新建一个记事本,输入内容,然后直接点关闭按钮,他就会提示是否保存,我要实现的就是点关闭直接保存,即要实现
    既要关闭记事本对话框,又要关闭提示保存的对话框你的WM_CLOSE是怎么定义的?
    =======================Const WM_CLOSE = &H10
      

  3.   

    算了,这个只能yon 静态变量判判=1 那个按钮就不能用了
      

  4.   

    在 SendMessage 之后要加一点的延时。
    你不能保证对方收到 WM_CLOSE 就是马上出对话框,也许它需要停止当前播放的媒体、也许要检查一下上次保存的配置等等,这些都需要花时间的。
      

  5.   

    就记事本来说:
    你要不保存的话,可以通过时钟来判断那个窗口有没有出现,出现了就 SendMessage 关闭窗口。。
    但是你如果要保存的话,,你点了保存之后,还会出现保存对话框,你也可以继续添加时钟来判断保存对话框有没有出现,出现了就输入文件路径,然后 SendMessage 点保存。。保存后跳出时钟。。
    但是这样就太麻烦了。。如果要保存成文件的话不是这样做的。我相信你也不会是用在记事本的保存上吧?