吃虫子的橙 发表于 2016-11-26 15:24:06

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

弄了个快捷上传图床FTP的小软件,但是在WIN10下面经常失效,比如在写代码按F5编译的时候,拖放根本不起作用。

以前还好,不过这两天貌似更新了补丁的关系,编译后的EXE业不能拖放了。文件往里面拖放只能听到“咚”的一声。。。

有没有好的解决办法?
;建立窗口
Global $Form1 = GUICreate("FTP图床", 305, 205, $confiPosX, $confiPosY,-1,$WS_EX_ACCEPTFILES)
Global $Group1 = GUICtrlCreateGroup("快到碗里来", 8, 8, 289, 161)
Global $Label1 = GUICtrlCreateLabel("创建新目录", 8, 184, 64, 17)
Global $ComboBox1 = GUICtrlCreateCombo("", 216, 180, 81, 25,BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $ES_CENTER))
GUICtrlSetData($ComboBox1, "Markdown|Dokuwiki|Link", $defaultCombox)
GUICtrlSetState($Group1,$GUI_DROPACCEPTED)
;Global $Button1 = GUICtrlCreateButton("测试连接", 216, 178, 81, 25)
Global $Input1 = GUICtrlCreateInput("", 80, 180, 129, 21)
GUISetIcon("D:\git\upPicture\upPicture\1.ico", -1)
GUISetFont(-1,$FW_BOLD = 700)
GUICtrlSetState($Input1, $GUI_FOCUS)
GUISetState(@SW_SHOW)

吃虫子的橙 发表于 2016-11-26 21:20:03

哪位朋友能帮看下么。。。同样编译的EXE程序,我放到WIN7和XP中正常

tubaba 发表于 2016-11-28 09:33:10

其实在论坛上是有答案的。

此种情况是因为UAC造成的,解决方法贴上

#CS 在Vista以上操作系统,由于UAC的限制,WM_DROPFILES只能由权限较低的APP拖拽到权限较高的APP,
        反之如果从权限较高的APP拖拽到低权限的APP上,WM_DROPFILES不会被发送到低权限的APP消息队列。
        所以,WM_DROPFILES会有时候变得不能响应。
        解决的办法,从用户界面特权隔离 (UIPI) 消息过滤器添加二个消息.使用ChangeWindowMessageFilter注册WM_DROPFILES和COPYGLOBALDATA。
        WM_DROPFILES = 0x0233,COPYGLOBALDATA=0x0049
        对于文件拖拽(Drag&Drop)消息,需要解除过滤的消息不仅仅是WM—DROPFILES这一个,还有一个MessageID为0x0049的消息。
        只有这两消息都添加到过滤器中,高权限下拖拽功能才可以正常使用。
        ChangeWindowMessageFilter是Vista以上的一个API,WinXP下并没有。
#CE
Global Const $MSGFLT_ADD = 1
DllCall('User32.dll', 'BOOL', 'ChangeWindowMessageFilter', 'UINT', 0x0233, 'DWORD', $MSGFLT_ADD)
DllCall('User32.dll', 'BOOL', 'ChangeWindowMessageFilter', 'UINT', 0x0049, 'DWORD', $MSGFLT_ADD)

吃虫子的橙 发表于 2016-11-28 18:24:31

感谢您的恢复.添加了这三行代码没什么用...不知道怎么回事.只能听到咚的一声
页: [1]
查看完整版本: 请教下各位,WIN10下$GUI_DROPACCEPTED经常失效怎么办?