wxpython 拖拽

从本地拖拽到窗口比较简单没有太大问题,

但是从窗口中拖拽带 资源管理器中搞了半天

由于文件全部在远程,从窗口拖拽到桌面中,需要使用com 比较麻烦,先简单实现吧

使用windowfrompoint获取窗口句柄来获取拖拽结束路径

[python]  view plain copy
  1. from win32com.shell import shell, shellcon  
  2.     def BeginDragFile(self):  
  3.         data = wx.FileDataObject()  
  4.         dropSource = wx.DropSource(self)  
  5.         dropSource.SetData(data)  
  6.         result= dropSource.DoDragDrop(0)  
  7.         if not result:return  
  8.         h=win32gui.WindowFromPoint(win32api.GetCursorPos())  
  9.         #结束是鼠标在文件资源管理器上  
  10.         if win32gui.GetWindowText(h)=='FolderView':  
  11.             f=win32gui.GetForegroundWindow()  
  12.             #获取文件资源管理器title就是路径  
  13.             path=win32gui.GetWindowText(f)  
  14.             #是否为桌面  
  15.             if path=='Program Manager':  
  16.                 path=shell.SHGetPathFromIDList(shell.SHGetSpecialFolderLocation(0, shellcon.CSIDL_DESKTOP))  
  17.             if os.path.isdir(path):return path  


最后获取的就是拖拽结束的路径,直接使用该路径执行下载操作


2012 12 24 更新 添加win7支持

[python]  view plain copy
  1. def RawDragPath(self):  
  2.     data = wx.FileDataObject()  
  3.     dropSource = wx.DropSource(self)  
  4.     dropSource.SetData(data)  
  5.     result= dropSource.DoDragDrop(0)  
  6.     h=win32gui.WindowFromPoint(win32api.GetCursorPos())  
  7.     f=win32gui.GetForegroundWindow()  
  8.     if not result:return  
  9.     path=''  
  10.     #结束是鼠标在文件资源管理器上  
  11.     if f==windll.user32.GetAncestor(h,2):  
  12.         path=shell.SHGetPathFromIDList(shell.SHGetSpecialFolderLocation(0, shellcon.CSIDL_DESKTOP))  
  13.     else:  
  14.         s = win32com.client.Dispatch("Shell.Application")  
  15.         for w in s.Windows():  
  16.             if int(w.Hwnd) == f:  
  17.                 path = w.LocationURL.split('///')[1]  
  18.                 path=urllib2.unquote(path)  
  19.                 break  
  20.   
  21.     if os.path.isdir(path):return path  
  22. 转载地址:http://blog.csdn.net/xugangjava/article/details/8350101

你可能感兴趣的:(wxpython 拖拽)