Как Вы помещаете, файл в корзине вместо удаляют?

Я закончил создание пользовательской функции двойного щелчка, которая будет работать как на мобильном, так и на рабочем столе:

var touchtime = 0;
$(".target").on("click", function() {
    if (touchtime == 0) {
        // set first click
        touchtime = new Date().getTime();
    } else {
        // compare first click to this click and see if they occurred within double click threshold
        if (((new Date().getTime()) - touchtime) < 800) {
            // double click occurred
            alert("double clicked");
            touchtime = 0;
        } else {
            // not a double click so set as a new first click
            touchtime = new Date().getTime();
        }
    }
});

Double click me

Альтернативно, здесь JSfiddle Demo .

29
задан Patrick D'Souza 28 April 2013 в 03:27
поделиться

3 ответа

http://www.daveamenta.com/2008-05/c-delete-a-file-to-the-recycle-bin/

Сверху:

using Microsoft.VisualBasic;

string path = @"c:\myfile.txt";
FileIO.FileSystem.DeleteDirectory(path, 
    FileIO.UIOption.OnlyErrorDialogs, 
    RecycleOption.SendToRecycleBin);
38
ответ дан Jeff Atwood 28 November 2019 в 01:12
поделиться

Необходимо копаться в неуправляемом коде. Вот статический класс, который я использовал:

public static class Recycle
{
    private const int FO_DELETE = 3;
    private const int FOF_ALLOWUNDO = 0x40;
    private const int FOF_NOCONFIRMATION = 0x0010;

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1)]
    public struct SHFILEOPSTRUCT
    {
        public IntPtr hwnd;
        [MarshalAs(UnmanagedType.U4)]
        public int wFunc;
        public string pFrom;
        public string pTo;
        public short fFlags;
        [MarshalAs(UnmanagedType.Bool)]
        public bool fAnyOperationsAborted;
        public IntPtr hNameMappings;
        public string lpszProgressTitle;
    }

    [DllImport("shell32.dll", CharSet = CharSet.Auto)]
    static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);

    public static void DeleteFileOperation(string filePath)
    {
        SHFILEOPSTRUCT fileop = new SHFILEOPSTRUCT();
        fileop.wFunc = FO_DELETE;
        fileop.pFrom = filePath + '\0' + '\0';
        fileop.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;

        SHFileOperation(ref fileop);
    }
}

Приложение:

  • Tsk tsk Jeff для "использования Microsoft. VisualBasic" в коде C#.
  • Tsk tsk MS для помещения всех положительных героев в пространстве имен VisualBasic.
16
ответ дан Ishmaeel 28 November 2019 в 01:12
поделиться

Лучшим способом я нашел, должен использовать функцию VB FileSystem.DeleteFile.

Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(file.FullName,
    Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
    Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);

Это требует добавления Microsoft.VisualBasic как ссылка, но это - часть платформы.NET и так не является дополнительной зависимостью.

Альтернативные решения требуют P/Invoke к SHFileOperation, а также определяющий все различные структуры/константы. Включая Microsoft.VisualBasic намного более опрятно для сравнения.

13
ответ дан Zooba 28 November 2019 в 01:12
поделиться