Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
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)
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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