请教下各位,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)
哪位朋友能帮看下么。。。同样编译的EXE程序,我放到WIN7和XP中正常 其实在论坛上是有答案的。
此种情况是因为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) 感谢您的恢复.添加了这三行代码没什么用...不知道怎么回事.只能听到咚的一声
页:
[1]