Natives Dateilisting

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Natives Dateilisting

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Declare Offset1%
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 16
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      32. IF NtFehler% = 0
      33. FileInformationLength& = 30000000
      34. Dim FileInformation#, FileInformationLength&
      35. Clear StatusBlock#
      36. PRIORITY& = External("kernel32", "GetPriorityClass", External("kernel32", "GetCurrentProcess"))
      37. Fehler% = External("kernel32", "SetPriorityClass", external("kernel32", "GetCurrentProcess"), $40)
      38. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, 0, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 0, 0, 1)
      39. Sleep 1
      40. Fehler% = External("kernel32", "SetPriorityClass", external("kernel32", "GetCurrentProcess"), PRIORITY&)
      41. Offset% = 0
      42. If (NtFehler% = 0) or (NtFehler% = 259)
      43. Repeat
      44. FileNameLength& = Long(FileInformation#, Offset% + 60)
      45. Attributes& = Long(FileInformation#, Offset% + 56)
      46. Clear Filename#
      47. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      48. If Attributes& | $10 = Attributes&
      49. AddString "[' + String$(Filename#, 0) + ']"
      50. else
      51. AddString String$(Filename#, 0)
      52. endif
      53. Offset1% = Long(FileInformation#, Offset%)
      54. Offset% = Offset% + Long(FileInformation#, Offset%)
      55. until Offset1% = 0
      56. endif
      57. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      58. Dispose FileInformation#
      59. endif
      60. EditBox("inhalt von " + Ordner2$, 0)
      61. Dispose Filename#
      62. Dispose StatusBlock#
      63. Dispose UNICODE#
      64. Dispose LSA_UNICODE#
      65. Dispose Object_Attrib#
      66. endif
      Alles anzeigen
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Möglichkeit 2

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      9. If Ordner$ <> ""
      10. If Len(Ordner$) > 3
      11. If Right$(Ordner$, 1) = "\"
      12. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      13. endif
      14. endif
      15. Ordner2$ = Ordner$
      16. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      17. DIM Object_Attrib#, 24
      18. DIM LSA_UNICODE#, 8
      19. Dim UNICODE#, len(Ordner$) * 2 + 4
      20. DIM StatusBlock#, 16
      21. Dim Filename#, 600
      22. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      23. Long Object_Attrib#, 0 = 24
      24. Long Object_Attrib#, 4 = 0
      25. Long Object_Attrib#, 12 = $40 | $80
      26. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      27. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      28. LONG LSA_UNICODE#, 4 = UNICODE#
      29. Long Object_Attrib#, 8 = LSA_UNICODE#
      30. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      31. IF NtFehler% = 0
      32. FileInformationLength& = 8000
      33. Dim FileInformation#, FileInformationLength&
      34. Clear StatusBlock#
      35. PRIORITY& = External("kernel32", "GetPriorityClass", External("kernel32", "GetCurrentProcess"))
      36. Fehler% = External("kernel32", "SetPriorityClass", external("kernel32", "GetCurrentProcess"), $40)
      37. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, 0, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 1)
      38. If Long(StatusBlock#, 4) <> 0
      39. Attributes& = Long(FileInformation#, Offset% + 56)
      40. FileNameLength& = Long(FileInformation#, Offset% + 60)
      41. Clear Filename#
      42. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      43. If Attributes& | $10 = Attributes&
      44. AddString "[' + String$(Filename#, 0) + ']"
      45. else
      46. AddString String$(Filename#, 0)
      47. endif
      48. While Long(StatusBlock#, 4) <> 0
      49. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, 0, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 0)
      50. If Long(StatusBlock#, 4) <> 0
      51. FileNameLength& = Long(FileInformation#, Offset% + 60)
      52. Attributes& = Long(FileInformation#, Offset% + 56)
      53. Clear Filename#
      54. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      55. If Attributes& | $10 = Attributes&
      56. AddString "[' + String$(Filename#, 0) + ']"
      57. else
      58. AddString String$(Filename#, 0)
      59. endif
      60. endif
      61. EndWhile
      62. endif
      63. Fehler% = External("kernel32", "SetPriorityClass", external("kernel32", "GetCurrentProcess"), PRIORITY&)
      64. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      65. Dispose FileInformation#
      66. endif
      67. EditBox("inhalt von " + Ordner2$, 0)
      68. Dispose Filename#
      69. Dispose StatusBlock#
      70. Dispose UNICODE#
      71. Dispose LSA_UNICODE#
      72. Dispose Object_Attrib#
      73. endif
      Alles anzeigen
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Fehler gefunden.
      Die Funktion gibt scheinbar die Aufgabe zum Füllen des Buffers an den Kernel weiter, kehrt aber zurück, bevor der Buffer gefüllt wurde. Auch wenn das in der Dokumentation nicht erwähnt wird, kommt man da wohl nicht ganz ohne Event aus. Neuer Versuch:

      Möglichkeit 1:

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Declare Offset1%, Event$, Event&, Wait&
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 16
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. Event$ = "Event a"+STR$(&Gettickcount)
      32. Event& = External("kernel32", "CreateEventA", 0,1,1,addr(Event$))
      33. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      34. IF NtFehler% = 0
      35. FileInformationLength& = 30000000
      36. Dim FileInformation#, FileInformationLength&
      37. Clear StatusBlock#
      38. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 0, 0, 1)
      39. Offset% = 0
      40. If (NtFehler% = 0) or (NtFehler% = 259)
      41. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      42. Repeat
      43. FileNameLength& = Long(FileInformation#, Offset% + 60)
      44. Attributes& = Long(FileInformation#, Offset% + 56)
      45. Clear Filename#
      46. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      47. If Attributes& | $10 = Attributes&
      48. AddString "[' + String$(Filename#, 0) + ']"
      49. else
      50. AddString String$(Filename#, 0)
      51. endif
      52. Offset1% = Long(FileInformation#, Offset%)
      53. Offset% = Offset% + Long(FileInformation#, Offset%)
      54. until Offset1% = 0
      55. endif
      56. External("kernel32", "CloseHandle", Event&)
      57. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      58. Dispose FileInformation#
      59. endif
      60. EditBox("inhalt von " + Ordner2$, 0)
      61. Dispose Filename#
      62. Dispose StatusBlock#
      63. Dispose UNICODE#
      64. Dispose LSA_UNICODE#
      65. Dispose Object_Attrib#
      66. endif
      Alles anzeigen




      Möglichkeit 2:

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Declare Event$, Event&, Wait&
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 16
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. Event$ = "Event b"+STR$(&Gettickcount)
      32. Event& = External("kernel32", "CreateEventA", 0,1,1,addr(Event$))
      33. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      34. IF NtFehler% = 0
      35. FileInformationLength& = 8000
      36. Dim FileInformation#, FileInformationLength&
      37. Clear StatusBlock#
      38. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 1)
      39. IF (NtFehler% = 0) or (NtFehler% = 259)
      40. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      41. External("kernel32", "ResetEvent", Event&)
      42. If Long(StatusBlock#, 4) <> 0
      43. Attributes& = Long(FileInformation#, Offset% + 56)
      44. FileNameLength& = Long(FileInformation#, Offset% + 60)
      45. Clear Filename#
      46. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      47. If Attributes& | $10 = Attributes&
      48. AddString "[' + String$(Filename#, 0) + ']"
      49. else
      50. AddString String$(Filename#, 0)
      51. endif
      52. While Long(StatusBlock#, 4) <> 0
      53. Clear StatusBlock#
      54. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 0)
      55. IF (NtFehler% = 0) or (NtFehler% = 259)
      56. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      57. External("kernel32", "ResetEvent", Event&)
      58. If Long(StatusBlock#, 4) <> 0
      59. FileNameLength& = Long(FileInformation#, Offset% + 60)
      60. Attributes& = Long(FileInformation#, Offset% + 56)
      61. Clear Filename#
      62. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      63. If Attributes& | $10 = Attributes&
      64. AddString "[' + String$(Filename#, 0) + ']"
      65. else
      66. AddString String$(Filename#, 0)
      67. endif
      68. endif
      69. endif
      70. EndWhile
      71. endif
      72. endif
      73. External("kernel32", "CloseHandle", Event&)
      74. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      75. Dispose FileInformation#
      76. endif
      77. EditBox("inhalt von " + Ordner2$, 0)
      78. Dispose Filename#
      79. Dispose StatusBlock#
      80. Dispose UNICODE#
      81. Dispose LSA_UNICODE#
      82. Dispose Object_Attrib#
      83. endif
      Alles anzeigen
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Im Prinzip wird da nichts anderes gemacht, als bei FindFirst$/ FindNext$.
      Ich brauch das als Grundlage für was spezielleres.
      Neuer Versuch:

      Möglichkeit 1:

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Declare Offset1%, Event%, Wait&
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 16
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. Event% = External("kernel32", "CreateEventA", 0, 1, 0, 0)
      32. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      33. IF NtFehler% = 0
      34. FileInformationLength& = 500000
      35. Dim FileInformation#, FileInformationLength&
      36. Clear StatusBlock#
      37. External("kernel32", "ResetEvent", Event%)
      38. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event%, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 0, 0, 1)
      39. Offset% = 0
      40. If (NtFehler% = 0) or (NtFehler% = 259)
      41. Wait& = External("kernel32", "WaitForSingleObject", Event%, 10000)
      42. Repeat
      43. FileNameLength& = Long(FileInformation#, Offset% + 60)
      44. Attributes& = Long(FileInformation#, Offset% + 56)
      45. Clear Filename#
      46. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      47. If Attributes& | $10 = Attributes&
      48. AddString "[' + String$(Filename#, 0) + ']"
      49. else
      50. AddString String$(Filename#, 0)
      51. endif
      52. Offset1% = Long(FileInformation#, Offset%)
      53. Offset% = Offset% + Long(FileInformation#, Offset%)
      54. until Offset1% = 0
      55. endif
      56. External("kernel32", "CloseHandle", Event%)
      57. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      58. Dispose FileInformation#
      59. endif
      60. EditBox("inhalt von " + Ordner2$, 0)
      61. Dispose Filename#
      62. Dispose StatusBlock#
      63. Dispose UNICODE#
      64. Dispose LSA_UNICODE#
      65. Dispose Object_Attrib#
      66. endif
      Alles anzeigen


      Möglichkeit 2:

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Declare Event&, Wait&
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 16
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. Event& = External("kernel32", "CreateEventA", 0, 1, 0, 0)
      32. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      33. IF NtFehler% = 0
      34. FileInformationLength& = 8000
      35. Dim FileInformation#, FileInformationLength&
      36. Clear StatusBlock#
      37. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 1)
      38. IF (NtFehler% = 0) or (NtFehler% = 259)
      39. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      40. External("kernel32", "ResetEvent", Event&)
      41. If Long(StatusBlock#, 4) <> 0
      42. Attributes& = Long(FileInformation#, Offset% + 56)
      43. FileNameLength& = Long(FileInformation#, Offset% + 60)
      44. Clear Filename#
      45. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      46. If Attributes& | $10 = Attributes&
      47. AddString "[' + String$(Filename#, 0) + ']"
      48. else
      49. AddString String$(Filename#, 0)
      50. endif
      51. While Long(StatusBlock#, 4) <> 0
      52. Clear StatusBlock#
      53. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 0)
      54. IF (NtFehler% = 0) or (NtFehler% = 259)
      55. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      56. External("kernel32", "ResetEvent", Event&)
      57. If Long(StatusBlock#, 4) <> 0
      58. FileNameLength& = Long(FileInformation#, Offset% + 60)
      59. Attributes& = Long(FileInformation#, Offset% + 56)
      60. Clear Filename#
      61. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      62. If Attributes& | $10 = Attributes&
      63. AddString "[' + String$(Filename#, 0) + ']"
      64. else
      65. AddString String$(Filename#, 0)
      66. endif
      67. endif
      68. endif
      69. EndWhile
      70. endif
      71. endif
      72. External("kernel32", "CloseHandle", Event&)
      73. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      74. Dispose FileInformation#
      75. endif
      76. EditBox("inhalt von " + Ordner2$, 0)
      77. Dispose Filename#
      78. Dispose StatusBlock#
      79. Dispose UNICODE#
      80. Dispose LSA_UNICODE#
      81. Dispose Object_Attrib#
      82. endif
      Alles anzeigen
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Scheint an der 9.1 Version von XProfan zu liegen.
      Mit X2 läuft die Sache:

      Möglichkeit 1:

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&, PRIORITY&
      8. Declare Offset1%, Event%, Wait&
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 16
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. Event% = External("kernel32", "CreateEventA", 0, 0, 0, 0)
      32. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      33. IF NtFehler% = 0
      34. FileInformationLength& = 30000000
      35. Dim FileInformation#, FileInformationLength&
      36. Clear StatusBlock#
      37. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event%, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 0, 0, 1)
      38. Offset% = 0
      39. If (NtFehler% = 0) or (NtFehler% = 259)
      40. Wait& = External("kernel32", "WaitForSingleObject", Event%, 10000)
      41. Repeat
      42. FileNameLength& = Long(FileInformation#, Offset% + 60)
      43. Attributes& = Long(FileInformation#, Offset% + 56)
      44. Clear Filename#
      45. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      46. If Attributes& | $10 = Attributes&
      47. AddString "[' + String$(Filename#, 0) + ']"
      48. else
      49. AddString String$(Filename#, 0)
      50. endif
      51. Offset1% = Long(FileInformation#, Offset%)
      52. Offset% = Offset% + Long(FileInformation#, Offset%)
      53. until Offset1% = 0
      54. endif
      55. External("kernel32", "CloseHandle", Event%)
      56. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      57. Dispose FileInformation#
      58. endif
      59. EditBox("inhalt von " + Ordner2$, 0)
      60. Dispose Filename#
      61. Dispose StatusBlock#
      62. Dispose UNICODE#
      63. Dispose LSA_UNICODE#
      64. Dispose Object_Attrib#
      65. endif
      Alles anzeigen



      Möglichkeit 2:

      Quellcode

      1. '#####################################################################################
      2. '######### Native XProfan Code von AHT #########
      3. '######### erstellt für [URL]http://www.paules-pc-forum.de[/URL] #########
      4. '#####################################################################################
      5. Declare Ordner$, NtFehler%, Object_Attrib#, LSA_UNICODE#, Fehler%, IOStatus%, StatusBlock#
      6. Declare UNICODE#, FileHandle%, FileInformation#, FileInformationLength&
      7. Declare Offset%, FileNameLength&, Filename#, Ordner2$, Attributes&
      8. Declare Event&, Wait&
      9. Ordner$ = ChooseDir$("Bitte Ordner auswählen:")
      10. If Ordner$ <> ""
      11. If Len(Ordner$) > 3
      12. If Right$(Ordner$, 1) = "\"
      13. Ordner$ = Left$(Ordner$, len(Ordner$)-1)
      14. endif
      15. endif
      16. Ordner2$ = Ordner$
      17. Ordner$ = "[URL='file://\\??\\']\\??\\[/URL]" + Ordner$
      18. DIM Object_Attrib#, 24
      19. DIM LSA_UNICODE#, 8
      20. Dim UNICODE#, len(Ordner$) * 2 + 4
      21. DIM StatusBlock#, 24
      22. Dim Filename#, 600
      23. Fehler% = External("kernel32", "MultiByteToWideChar", 0, 0, addr(Ordner$), -1, UNICODE#, int(len(Ordner$) + 2))
      24. Long Object_Attrib#, 0 = 24
      25. Long Object_Attrib#, 4 = 0
      26. Long Object_Attrib#, 12 = $40 | $80
      27. WORD LSA_UNICODE#, 0 = len(Ordner$) * 2
      28. WORD LSA_UNICODE#, 2 = len(Ordner$) * 2 + 2
      29. LONG LSA_UNICODE#, 4 = UNICODE#
      30. Long Object_Attrib#, 8 = LSA_UNICODE#
      31. Event& = External("kernel32", "CreateEventA", 0, 0, 0, 0)
      32. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      33. NtFehler% = External("ntdll", "NtOpenFile", addr(FileHandle%), $1, Object_Attrib#, StatusBlock#, $4 | $2 | $1, $1)
      34. IF NtFehler% = 0
      35. FileInformationLength& = 10000
      36. Dim FileInformation#, FileInformationLength&
      37. Clear StatusBlock#
      38. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 1)
      39. IF (NtFehler% = 0) or (NtFehler% = 259)
      40. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      41. If Long(StatusBlock#, 0) <> -2147483642
      42. Attributes& = Long(FileInformation#, Offset% + 56)
      43. FileNameLength& = Long(FileInformation#, Offset% + 60)
      44. Clear Filename#
      45. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      46. If Attributes& | $10 = Attributes&
      47. AddString "[' + String$(Filename#, 0) + ']"
      48. else
      49. AddString String$(Filename#, 0)
      50. endif
      51. While Long(StatusBlock#, 0) <> -2147483642
      52. Clear StatusBlock#
      53. NtFehler% = External("ntdll", "NtQueryDirectoryFile", FileHandle%, Event&, 0, 0, StatusBlock#, FileInformation#, FileInformationLength&, 2, 1, 0, 0)
      54. IF (NtFehler% = 0) or (NtFehler% = 259)
      55. Wait& = External("kernel32", "WaitForSingleObject", Event&, 10000)
      56. If Long(StatusBlock#, 4) <> 0
      57. FileNameLength& = Long(FileInformation#, Offset% + 60)
      58. Attributes& = Long(FileInformation#, Offset% + 56)
      59. Clear Filename#
      60. Fehler% = External("kernel32", "WideCharToMultiByte", 0, 0, FileInformation# + Offset% + 68, int(FileNameLength& / 2), Filename#, 500 , 0, 0)
      61. If Attributes& | $10 = Attributes&
      62. AddString "[' + String$(Filename#, 0) + ']"
      63. else
      64. AddString String$(Filename#, 0)
      65. endif
      66. endif
      67. endif
      68. EndWhile
      69. endif
      70. endif
      71. External("kernel32", "CloseHandle", Event&)
      72. NtFehler% = External("ntdll", "NtClose", FileHandle%)
      73. Dispose FileInformation#
      74. endif
      75. EditBox("inhalt von " + Ordner2$, 0)
      76. Dispose Filename#
      77. Dispose StatusBlock#
      78. Dispose UNICODE#
      79. Dispose LSA_UNICODE#
      80. Dispose Object_Attrib#
      81. endif
      Alles anzeigen
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • ..tritt bei mir bislang nur unter Windows7 64Bit auf - da in XProfan 9.1 in der EXE und im Interpreter. In der EXE passiert das aber häufiger.
      Mit X2 passiert nirgendwo mit dem gleichen Code ein Fehler - ich schau da noch mal auf meinen anderen Maschinen...
      Unter
      • Vista 32Bit
      • Windows8 64Bit
      • Windows XP Pro 32Bit
      passiert auch mit XProfan 9.1 bei mir kein Fehler und der Buffer wird korrekt gefüllt. Merkwürdige Sache...
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • ((( Verdacht meiner Reinigungsfachkraft: Sperrt vielleicht irgend ein Antivirusprogramm gerade das Verzeichnis, weil ein verdächtiger Lesevorgang erst von der Heuristik geklärt werden muss, - und da gibt's halt manchmal einen timeout? )))
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • AHT;976498 schrieb:

      Nein, das auf keinen Fall. Es ist entweder ein Fehler im Code oder es passt was mit XProfan nicht. Da es mit X2 fast immer funktioniert (bei mir geht es bislang immer mit X2), befürchte ich im Augenblick, das etwas mit XProfan nicht stimmt.


      Also bei mir hier im Büro (Windows 7/64, XProfan 2.1) gibt es keine Probleme. Wieso sollt mit XProfan was nicht stimmen, wenn es nach Deiner Aussage mit X2 immer geht?

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • AHT;976504 schrieb:

      Ich habe hier nicht 1000 Rechner zur Verfügung, um Sachen testen zu können - sind nur an die 20.


      Da hast Du schon etwa das fünffache von dem, was mir zur Verfügung steht.

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • ...ich bekomme immer mehr den Eindruck, dass das an XProfan liegt. Kann es sein, dass da zu einem Zeitpunkt lesend oder schreibend auf den Buffer FileInformation# zugegriffen wird, am dem Windows den noch füllt und deshalb damit nicht zurechtkommt?
      Die Funktion läuft ja scheinbar asynchron ab.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT