superflq 发表于 2017-8-26 22:01:29

请教下各位,WIN10下$GUI_DROPACCEPTED经常失效怎么办?

本帖最后由 superflq 于 2017-8-26 22:02 编辑

很久没玩AUTOIT了,最近调试的时候发现,WIN10下$GUI_DROPACCEPTED经常失效怎么办?
我用了自带的实例脚本也没用,同样在WIN7和WIN8下就没有问题

搜索过论坛,很多方法无效,有没有好的解决办法?#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    ; 创建一个 GUI 及其各种控件.
    Local $hGUI = GUICreate("内置函数示例", 420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES)

    ; 创建一个文本标签. 并设置其状态为接受拖放.
    Local $idLabel = GUICtrlCreateLabel("拖放文件到此标签.", 10, 10, 400, 40, $WS_BORDER)
    GUICtrlSetState($idLabel, $GUI_DROPACCEPTED)

    ; 创建一个输入框. 并设置其状态为接受拖放.
    Local $idInput = GUICtrlCreateInput("", 10, 60, 400, 22)
    GUICtrlSetState($idInput, $GUI_DROPACCEPTED)

    Local $idOK = GUICtrlCreateButton("确定", 310, 170, 85, 25)

    ; 显示 GUI.
    GUISetState(@SW_SHOW, $hGUI)

    While 1
      Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idOK
                ExitLoop

            Case $GUI_EVENT_DROPPED
                ; 如果 @GUI_DropId = $iLabel, 则设置文本标签接受拖放文件.
                If @GUI_DropId = $idLabel Then GUICtrlSetData($idLabel, @GUI_DragFile)

      EndSwitch
    WEnd

    ; 删除先前创建的 GUI 和所有控件.
    GUIDelete($hGUI)
EndFunc   ;==>Example

afan 发表于 2017-8-26 23:07:44

tubaba 曾经提示过我,你加上这两句试试,我没测试环境
DllCall('User32.dll', 'BOOL', 'ChangeWindowMessageFilter', 'UINT', 0x0233, 'DWORD', 1)
DllCall('User32.dll', 'BOOL', 'ChangeWindowMessageFilter', 'UINT', 0x0049, 'DWORD', 1)

superflq 发表于 2017-8-26 23:41:22

回复 2# afan


    大大,这2句 在别的帖子里看到过,试了无效
还有有别的招吗

afan 发表于 2017-8-27 00:04:12

回复 3# superflq


    我连那两句都没测试过,没环境,遇不到 …

heroxianf 发表于 2017-8-27 07:34:12

WIN10一直没用过。没法试了

yamakawa 发表于 2017-8-27 10:51:02

嗯,我也遇到过这种问题。。最开始我还以为是代码问题。。。。。然后最后才发现。他喵的,是win10的问题。。。暂时没找到解决方法。

superflq 发表于 2017-8-27 20:13:57

回复 4# afan


    大大还在WIN7吗,赶紧升10了

yamakawa 发表于 2017-8-27 21:47:10

回复 7# superflq


    行业的很多还停留在xp呢。。。。不是每个人都适合升10的

superflq 发表于 2017-8-27 22:42:44

回复superflq


    行业的很多还停留在xp呢。。。。不是每个人都适合升10的
yamakawa 发表于 2017-8-27 21:47 http://www.autoitx.com/images/common/back.gif


    哎,这个问题咋整呢

lpxx 发表于 2017-8-27 23:03:26

tubaba 曾经提示过我,你加上这两句试试,我没测试环境
DllCall('User32.dll', 'BOOL', 'ChangeWindowMess ...
afan 发表于 2017-8-26 23:07 http://www.autoitx.com/images/common/back.gif

tubaba,用过他那个迷惑工具,就想A版一样,技术牛人,太膜拜了。

yamakawa 发表于 2017-8-28 10:51:05

回复 9# superflq


    这样可以么?我这里可以#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#RequireAdmin

DllCall('User32.dll', 'BOOL', 'ChangeWindowMessageFilter', 'UINT', 0x0233, 'DWORD', 1)
DllCall('User32.dll', 'BOOL', 'ChangeWindowMessageFilter', 'UINT', 0x0049, 'DWORD', 1)

Example()

Func Example()
    ; 创建一个 GUI 及其各种控件.
    Local $hGUI = GUICreate("内置函数示例", 420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES)

    ; 创建一个文本标签. 并设置其状态为接受拖放.
    Local $idLabel = GUICtrlCreateLabel("拖放文件到此标签.", 10, 10, 400, 40, $WS_BORDER)
    GUICtrlSetState($idLabel, $GUI_DROPACCEPTED)

    ; 创建一个输入框. 并设置其状态为接受拖放.
    Local $idInput = GUICtrlCreateInput("", 10, 60, 400, 22)
    GUICtrlSetState($idInput, $GUI_DROPACCEPTED)

    Local $idOK = GUICtrlCreateButton("确定", 310, 170, 85, 25)

    ; 显示 GUI.
    GUISetState(@SW_SHOW, $hGUI)

    While 1
      Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idOK
                ExitLoop

            Case $GUI_EVENT_DROPPED
                ; 如果 @GUI_DropId = $iLabel, 则设置文本标签接受拖放文件.
                If @GUI_DropId = $idLabel Then GUICtrlSetData($idLabel, @GUI_DragFile)

      EndSwitch
    WEnd

    ; 删除先前创建的 GUI 和所有控件.
    GUIDelete($hGUI)
EndFunc   ;==>Example

水木子 发表于 2017-8-28 11:25:15

回复afan


    大大还在WIN7吗,赶紧升10了
superflq 发表于 2017-8-27 20:13 http://www.autoitx.com/images/common/back.gif

基本上每隔一段时间,我都会把我电脑的操作系统从WIN7升级到WIN10,但是基本上过不了两三天,又从WIN10换回到WIN7,如此反复已经很多次了。

yamakawa 发表于 2017-8-28 12:07:05

回复 12# 水木子


    {:face (394):}为嘛不双启啊???

zzwwdd 发表于 2017-8-29 06:24:24

win10 基本都要加 #RequireAdmin   才正常
页: [1]
查看完整版本: 请教下各位,WIN10下$GUI_DROPACCEPTED经常失效怎么办?