本帖最后由 tubaba 于 2016-10-27 20:13 编辑
回复 1# afan
发现二处无法访问变量的错误导致退出,直接运行程序后,(默认进入配置界面),然后在菜单管理list里,右键点击任一项,不选择,再左键点击空白处发生错误.或者右键点击无备注信息的按钮这里,也会发生同一行错误
进入过JUI界面返回后再执行上面操作,没有错误发生.
另:能不能让JUI界面有置项功能?既然要拖入,那要放置程序在系统资源管理器上方才更方便拖入操作啊,不然一点资源管理器就被遮挡了
又试了一下,拖放运行在WIN10不起作用.应该是#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)
1266行
|