def WndProc(hwnd, msg, wParam, lParam): if msg == WM_PAINT: hdc, ps = win32gui.BeginPaint(hwnd) rect = win32gui.GetClientRect(hwnd) _str = u'请把【工作日志】目录拖拽到这!' win32gui.DrawText(hdc, _str, len(_str) * 2, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) win32gui.EndPaint(hwnd, ps) win32gui.DragAcceptFiles(hwnd, 1) elif msg == WM_DESTROY: win32gui.PostQuitMessage(0) elif msg == WM_DROPFILES: hDropInfo = wParam filescount = win32api.DragQueryFile(hDropInfo) for i in range(filescount): filename = win32api.DragQueryFile(hDropInfo, i) files = get_files_list(filename) for _f in files: if not isSpecialDir(_f): fileHandler(_f) win32api.DragFinish(hDropInfo) return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
def WndProc(hwnd, msg, wParam, lParam): if msg == WM_PAINT: hdc, ps = win32gui.BeginPaint(hwnd) rect = win32gui.GetClientRect(hwnd) _str = u'请把【星任务】文件拖拽到这!' win32gui.DrawText(hdc, _str, len(_str) * 2, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) win32gui.EndPaint(hwnd, ps) win32gui.DragAcceptFiles(hwnd, 1) elif msg == WM_DESTROY: win32gui.PostQuitMessage(0) elif msg == WM_DROPFILES: hDropInfo = wParam filescount = win32api.DragQueryFile(hDropInfo) for i in range(filescount): filename = win32api.DragQueryFile(hDropInfo, i) if os.path.isdir(filename): _files = scan_files(filename) else: _files = [filename] if len(_files) > 0: for _f in _files: fileHandler(_f) win32api.DragFinish(hDropInfo) return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
def WndProc(hwnd, msg, wParam, lParam): """ 视窗处理 :param hwnd: 句柄 :param msg: 消息 :param wParam: 参数1 :param lParam: 参数2 :return: 下一个消息处理器 """ if msg == WM_PAINT: hdc, ps = win32gui.BeginPaint(hwnd) rect = win32gui.GetClientRect(hwnd) _str = u'请把【项目经理:日报】文件拖拽到这!' win32gui.DrawText(hdc, _str, len(_str) * 2 - 4, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) win32gui.EndPaint(hwnd, ps) win32gui.DragAcceptFiles(hwnd, 1) elif msg == WM_DESTROY: win32gui.PostQuitMessage(0) elif msg == WM_DROPFILES: """文件拖拉消息 """ hDropInfo = wParam filescount = win32api.DragQueryFile(hDropInfo) for i in range(filescount): """获取文件名""" filename = win32api.DragQueryFile(hDropInfo, i) """处理文件""" fileHandler(hwnd, filename) win32api.DragFinish(hDropInfo) return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
def OnDropFiles(self, msg): " Handle a file being dropped from file manager " hDropInfo = msg[2] self.frame.SetActiveWindow() # active us nFiles = win32api.DragQueryFile(hDropInfo) try: for iFile in range(0, nFiles): fileName = win32api.DragQueryFile(hDropInfo, iFile) win32ui.GetApp().OpenDocumentFile(fileName) finally: win32api.DragFinish(hDropInfo) return 0
def onDropFiles(self, params): msg = win32mu.Win32Msg(params) hDrop = msg._wParam inclient, point = Sdk.DragQueryPoint(hDrop) # convert from client to canvas pixel coordinates # for the benefit of scrolling views x, y = self._DPtoLP(point) # accept only drops in client area if inclient: numfiles = win32api.DragQueryFile(hDrop, -1) for ix in range(numfiles): filename = win32api.DragQueryFile(hDrop, ix) self.onDropEvent(DropFile, (x, y, filename)) win32api.DragFinish(hDrop)
def _getDropFileList(self, stgMedium): rval = [] hDropInfo = stgMedium.data_handle nFiles = win32api.DragQueryFile(hDropInfo) try: for iFile in range(0, nFiles): filepath = shell.DragQueryFileW(hDropInfo, iFile) filepath = os.path.abspath(filepath) fileExists = os.path.exists(filepath) if fileExists: rval.append(filepath) finally: win32api.DragFinish(hDropInfo) return rval
def get_dropped_files(self): kernel32 = windll.kernel32 handle = self.get_data_handle(ClipboardFormats.drop_handle) GlobalSize = kernel32.GlobalSize GlobalSize.restype = c_uint32 size = GlobalSize(handle) if handle == c_void_p(0) and get_last_error() != 0: raise WindowsError() data = create_string_buffer(size) # '\0'������������ GlobalLock = kernel32.GlobalLock GlobalLock.restype = c_void_p GlobalUnlock = kernel32.GlobalUnlock pointer = GlobalLock(handle) if pointer == c_void_p(0) and get_last_error() != 0: GlobalUnlock(pointer) raise WindowsError() #end if error num = win32api.DragQueryFile(pointer) lst = [] for i in range(num): lst.append(win32api.DragQueryFile(pointer, i)) #end for GlobalUnlock(pointer) return lst