Announcement

Collapse
No announcement yet.

Papierkorb

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

  • Papierkorb

    Hi!<br>
    k&ouml;nnt ihr mir sagen wie ich eine Datei in den Papierkorb bekomme?<br>
    Löschen weiß ich, aber dan ist die datei weg und die soll noch wiederhestellbar bleiben...<br>
    f&uuml;r ein st&uuml;ck code oder ein link w&auml;re ich sehr dankbar!<br>

  • #2
    hi Daniel W.,<p>
    dafuer schau dir mal die funktion SHFileOperation() an:<p>
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrfshfileoperation.asp<p>
    an sie wird ein pointer vom typ SHFILEOPSTRUCT uebergeben:<p>
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrfshfileopstruct.asp<p>
    gruss roy

    Comment


    • #3
      Danke!<br>
      FO_DELETE haut die dann in Korb?? oder anders?<br>bestimmt ne doofe frage..<br>
      nochmal danke, in der msn find ich nie was..

      Comment


      • #4
        Super, Danke!<br>
        in der msn find ich nie was!<br>
        aber was mach ich falsch?<br><br>
        SHFILEOPSTRUCT Object;<br>
        Object.pFrom=m_list.GetItemText(nSelected, 0);//pfad<br>
        Object.lpszProgressTitle="Löschen..";<br>
        Object.wFunc=FO_DELETE;<br>
        Object.fFlags=FOF_ALLOWUNDO|FOF_SIMPLEPROGRESS;<br >
        SHFileOperation(&Object);//in korb
        <br>
        Programm st&uuml;rzt ab.

        Comment


        • #5
          hi Daniel W.,<p>
          das hast du richtig erkannt.<br>
          und essentiell ist das fFlags FOF_ALLOWUNDO. es ist fuer die abspeicherung des ursprungs-pfades verantwortlich.<br>
          wenn du nicht klarkommst, meld dich nochmal. ich haette dann schon was vorbereitet.<br>
          aber versuch selber erstmal.<p>
          gruss roy.<p>
          edit: du hast ja noch was hinzugefuegt <br&gt

          Comment


          • #6
            versuch mal:<p>
            SHFILEOPSTRUCT Object = {0};<p>
            gruss roy

            Comment


            • #7
              danke! ^_^<br>das hinzufügen hab ich gemacht nachdem ich es ausprobiert hab,<br>weil mir die frage dafor etwas d&auml;hmlich erschien..<br>zu gleichen zeit ein kommentar geschrieben.. dass musss man auch ers mal hinbekommen :

              Comment


              • #8
                nochmal danke f&uuml;r die hilfe bei meinen (reichlich vorhandenen) kleinen Problemen..<br>wo w&auml;r ich ohne dich ;

                Comment


                • #9
                  Es geht immer noch nicht!! was will das ding eigentlich von mir?!

                  Comment


                  • #10
                    hi Daniel W.,<p>
                    ich les grad, das m_list.GetItemText(nSelected, 0) keinen null-terminierten string zurueckgibt.<br>
                    laut dokumentation ist der rueckgabe-wert der funktion ein CString.<br>
                    das struct-element SHFILEOPSTRUCT.pFrom erwartet aber einen nullterminierten string und bei verwendung mehrerer files, <br>
                    als trennung eine null und als abschluss eine doppel-null.<br>
                    hier findest du eine beschreibung zum umwandeln von CString in einen null-terminierten string:<p>
                    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_strings.3a_.cstring_operations_relating_to_c .2d.style_strings.asp<p>
                    es gibt vor- und nachteile der mfc.<br>
                    und einen nachteil kennst jetzt schon mal. <p>
                    wenn es immer noch probleme geben sollte, bei mir hat das verschieben mit den flags FOF_SILENT | FOF_NOERRORUI |FOF_NOCONFIRMATION |FOF_ALLOWUNDO super geklappt.<br>
                    und lpszProgressTitle kannst dann auf NULL setzen.<p>
                    gruss roy

                    Comment


                    • #11
                      Macht der dann so ein Statusfenster auf?? solte oder?<br>MFC ist halt microsoft, und die denken sich manchmal:wiso einfach wenns auch kompliziert geht?<br>&auml;hm..
                      Das:<br><br>
                      CString bf=m_list.GetItemText(nSelected, 0);<br>
                      <br>
                      LPTSTR dateien = new TCHAR[bf.GetLength()+1];<br>
                      _tcscpy(dateien, bf);<br>
                      <br>
                      SHFILEOPSTRUCT Object={0};<br>
                      Object.pFrom=dateien;//pfad<br>
                      Object.lpszProgressTitle="Löschen..";<br>
                      Object.wFunc=FO_DELETE;<br>
                      Object.fFlags=FOF_ALLOWUNDO|FOF_SIMPLEPROGRESS;<br >
                      SHFileOperation(&Object);//in korb<br><br>
                      geht irgendwie.. der sagt der kann die datei nicht lesen, das kann aber eigentlich nicht sein..<br>
                      ein null-term ist doch '\0' oder?<br>
                      dann geht doch:<br>
                      <br>bf.empty();<br>
                      while (datenlesen){<br>
                      bf+=datei+'\0';<br>
                      }<br>
                      bf+='\0\0'//doppelnull???<br>
                      Object.pFrom=bf;<br>
                      geht das

                      Comment


                      • #12
                        hi Daniel W.,<p>
                        hehe, der untere teil wird so nicht gehen.<br>
                        du bist von CString-klasse bisher zu verwoehnt worden. die CString klasse bringt eigens definierte operatoren mit sich.<br>
                        bisher konntest du an CString's mit dem plus-operator weitere zeichen oder strings anhaengen.<br>
                        das ist in einem array nicht moeglich.<p>
                        aber ich wuesste wo das problem sein koennte.<br>
                        pfad-angaben werden pro sub-ordner mit einem doppelten backslash angegeben.<br>
                        also muesste aus deiner liste ein aehnlicher string kommen:<p>
                        "C:\\temp\\daniel.txt"<p>
                        liegt da evtl. der fehler?<p>
                        gruss ro

                        Comment


                        • #13
                          hi Daniel,<p>
                          so ich hab jetzt auch mal ein mfc-project geoeffnet.<br>
                          folgende umwandlung klappt bei mir:<br>
                          <PRE><CODE>
                          CString inp;<p>

                          inp = "C:\\temp\\test1.txt";
                          LPTSTR fileName = new TCHAR[inp.GetLength()+2];
                          memset(fileName, '\0', inp.GetLength()+2);//belegt alle zeichen mit einem '\0' vor
                          _tcscpy(fileName, inp);<p>

                          SHFILEOPSTRUCT shfos = {0};
                          shfos.pFrom = fileName;
                          shfos.lpszProgressTitle = "löschen...";
                          shfos.wFunc = FO_DELETE;
                          shfos.fFlags = FOF_ALLOWUNDO|FOF_SIMPLEPROGRESS;
                          SHFileOperation(&shfos);<p>

                          delete [] fileName;//gibt allokierung wieder frei
                          </CODE></PRE>
                          gruss roy

                          Comment


                          • #14
                            Nein, das Programm durchsucht die Festplatte und speichert die pf&auml;de der Daten und meine angaben sind mit \\..<br>Das problem hatte ich als ich mit c++ angefangen hab mal..<br>CString ist schon pracktisch, aber daran sols nicht liegen..<br><br>
                            <br>
                            //strcat()<br>
                            //erste datei per strcpy()<br>
                            <br>
                            LPTSTR bf;//oder char? welche gr&ouml;ße?<br>
                            while (datenlesen){<br>
                            strcat(bf,datei);<br>
                            strcat(bf,'\0');<br>
                            }<br>
                            strcat(bf,'\0\0');//doppelnull???<br>
                            Object.pFrom=bf;<br>
                            geht das?<br&gt

                            Comment


                            • #15
                              aha!!! ich hab die doppelnull vergessen...<br>
                              schon wieder ein kommentar fast gleichzeitig..<br>na dann ist das problem gelöst! Danke f&uuml;r all die hilfe!<br>aber ist mei bsp f&uuml;r mehrere daten koreckt

                              Comment

                              Working...
                              X