Announcement

Collapse
No announcement yet.

Move a folder to the recycle bin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Michael Mattias
    replied
    >Maybe Michael can answer - why [he used RESET]

    I gave one answer in post#12 but if you don't like that one, you can use this:

    "To give you something to keep you awake at night, wondering."

    Leave a comment:


  • Trento Castricone
    replied
    Gary

    My problem was the trailing back slash on the path to delete folders.

    As far as the RESET instruction goes:
    Michael had it in his code, I read the documentation and then used it.
    It seems to work just fine with or without RESET.

    Maybe Michael can answer - why.

    Leave a comment:


  • Michael Mattias
    replied
    >you shouldn't open yourself up like that

    Over the years I have acknowledged other personal history and attributes a lot worse than being a control freak.

    I'll live.

    (Curious? Go find 'em yourself using the search. That ought to keep you busy for a couple of hours).

    MCM

    Leave a comment:


  • Mel Bishop
    replied
    Originally posted by Michael Mattias View Post
    ...As a rule I'm a control freak...
    As a rule MM, you shouldn't open yourself up like that.

    Leave a comment:


  • Michael Mattias
    replied
    Is Reset necessary in your code? Since both variables that it's applied to are local and not STATIC, why did you reset them
    No, and force of habit.

    As a rule I'm a control freak and don't like putting total faith in defaults.

    I also use a lot of 'unnecessary' parentheses, eschewing the operator precedence rules which should result in the order I want. Of course this also is as mich for my own benefit, so I can look at code six months later and know what I did without the need to look up those operator precedence rules.
    Last edited by Michael Mattias; 23 Aug 2009, 08:43 AM.

    Leave a comment:


  • Gary Beene
    replied
    Mel,

    Thanks for the link. I had looked a few weeks ago and didn't see your post. Now that you point it out - there it is in plain sight.

    I've said before that finding the right keywords can be troublesome, but in this case I don't see how I'd have missed it (except that it showed up off the first page of search results) - there are only a few ways to type "recycle bin".

    ... updated ... Wow, and now I see that it wasn't in PBWin. I've been guilty of thinking console forum stuff is not useful to PBWin apps, but now I know better. I'll need to go browse around that forum to see what I missed that I might find useful.

    Thanks!
    Last edited by Gary Beene; 22 Aug 2009, 11:12 PM.

    Leave a comment:


  • Mel Bishop
    replied

    Leave a comment:


  • Gary Beene
    replied
    Trento,

    Is Reset necessary in your code? Since both variables that it's applied to are local and not STATIC, why did you reset them?

    Just wondering.

    Also, I just noticed from MCM's response that the file name must be the complete pathname. I ran your code with something like "myfile.txt" but until I used exe.path$ + "myfile.txt", the deleted file did not show in the recycle bin. It took me a minute to realize the his/your codes were the same (flags different) and applied to both files/folders.

    Also I see that when a folder is deleted, it need not be empty - useful and dangerous.

    Thanks to both of your for posting the code. I had been wanting just that snippet!
    Last edited by Gary Beene; 22 Aug 2009, 11:02 PM.

    Leave a comment:


  • Roger Garstang
    replied
    Originally posted by Michael Mattias View Post
    B. Windows NEVER wants a trailing backslash when supplying a folder name.

    MCM

    That's like saying "There are no absolutes"...just in saying it makes an absolute. You also forgot about the root "Folder" which is a \. I too forgot about it a couple times and now always remember to handle its special case.

    Leave a comment:


  • Trento Castricone
    replied
    This is the code I am using for "FILES".
    I had NO code for "DIRECTORIES"


    Code:
    FUNCTION RecycleBinSilent(BYVAL FileName AS STRING) AS LONG
      LOCAL shfo AS SHFILEOPSTRUCT
      LOCAL szSource AS ASCIIZ * %MAX_PATH
      LOCAL lResult AS LONG
      RESET        szSource
      szSource     = FileName
      RESET        SHFO
      SHFO.hWnd    =  GetDesktopWindow()
      shfo.wFunc   = %FO_DELETE
      shfo.pFrom   = VARPTR(szSource)
      shfo.fFlags  = %FOF_ALLOWUNDO OR %FOF_NOCONFIRMATION 'OR %FOF_SIMPLEPROGRESS
      lResult = SHFileOperation(shfo)
      FUNCTION = shfo.fAnyOperationsAborted
    END FUNCTION

    Leave a comment:


  • Michael Mattias
    replied
    >I guess I just didn't understand the above verbiage

    I didn't either. But at least I showed my code.....

    ...which includes in the comments a "hint" that FOF_WANTNUKEWARNING is NOT the important flag here!!!!

    MCM

    Leave a comment:


  • Trento Castricone
    replied
    Michael
    FOF_WANTNUKEWARNINGVersion 5.0. Send a warning if a file is being permanently destroyed during a delete operation rather than recycled. This flag partially overrides FOF_NOCONFIRMATION.
    I guess I just didn't understand the above verbiage.

    Thanks again

    Leave a comment:


  • Michael Mattias
    replied
    >I don't think I would have ever accomplished this one on my own.

    Oh, come on.

    All you would have had to do was try a couple of different flags and see what happened. Hell, that's how I did it. Took me maybe ten minutes, tops.

    Or, if your problem was really...
    >Requires no trailing backslash

    .. then....
    A. You didn't check the return code from ShFileOperation, did you? (code not shown)
    B. Windows NEVER wants a trailing backslash when supplying a folder name.

    MCM
    Last edited by Michael Mattias; 22 Aug 2009, 11:21 AM.

    Leave a comment:


  • Trento Castricone
    replied
    Move folder to recycle bin

    Michael

    Thanks - works!
    I don't think I would have ever accomplished this one on my own.

    (Requires no trailing backslash)

    Leave a comment:


  • Michael Mattias
    replied
    My code works fine. (Yes I had to tweak the flags)
    Code:
    ' Test_deletefolder_rb
    ' 08.22.09
    ' ShFileOperation does not handle delete of folders to recycle bin?
    ' I don't believe that. I should have, it's true,
    ' Using FOF_WANTNUKEWARNING (when requested)  does come up
    ' what if... FOF_ALLOWUNDO is used?  Goes to recycle bin!
    
    #COMPILE EXE
    #DIM     ALL
    
    
    #INCLUDE "WIN32API.INC"
    
    
    FUNCTION PBMAIN () AS LONG
        
      LOCAL  szFolder AS ASCIIZ * %MAX_PATH
      LOCAL  SHFO  AS SHFILEOPSTRUCT
      LOCAL  iRet AS LONG
    
    
      RESET            szFolder
      szFolder      =  "D:\Testdata\DeleteMe"
      RESET            SHFO
      SHFO.hWnd     =  GetDesktopWindow()
      SHFO.wFunc    =  %FO_DELETE
      SHFO.pFrom    =  VARPTR(szFolder)
      SHFO.fFlags   =  %FOF_WANTNUKEWARNING OR %FOF_ALLOWUNDO
    
    ' SDK doc:
    ' " If pFrom is set to a file name, deleting the file with FO_DELETE will not move it to the Recycle Bin,
    ' " even if the FOF_ALLOWUNDO flag is set. You must use a full path.
    
      iRet = SHFileOperation (SHFO)
      MSGBOX  USING$ ("SHFO returns #   &", iRet, IIF$ (iRet, "Error", "Success"))
      
    END FUNCTION

    Leave a comment:


  • Trento Castricone
    started a topic Move a folder to the recycle bin

    Move a folder to the recycle bin

    I can programmatically move files to the recycle bin.
    I would like to programmatically move folders to the recycle bin.
    The "SHFILEOPSTRUCT structure" seems to be for files only.

    Any help would be appreciated.
Working...
X