FASM Прикрутить кнопку на стандартное окно...

Тема в разделе "WASM.BEGINNERS", создана пользователем rococo795, 16 дек 2016.

  1. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Что скажете насчет дефрагментаторов? Как они работают в многозадачной среде?
     
    Последнее редактирование: 29 мар 2017
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    В текущих реалиях дефрагментация не нужна. а на SSD так вообще противопоказана.
     
  3. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Ну насколько мне известно как раз для дефрагментации существуют специальные IOCTL-коды. Процесс дефрагментации подробно описан тут.
     
  4. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Почему не выводит в конце программы в окошке два параметра titl и text = ! и the end?

    Код (ASM):
    1.  
    2. format PE GUI 4.0               ; PE EXE файл
    3. entry start                ; Точка входа
    4.  
    5. include 'C:\fasmw17160\INCLUDE\WIN32A.INC'
    6.  
    7. section '.bss' data readable writeable ; секция неинициализированных данных
    8.   fd  WIN32_FIND_DATA     ; структура WIN32_FIND_DATA
    9.   find_h dd ?             ; и хэндл поиска
    10.   sizeBuf dd ?
    11.   sizeFileName dd ?
    12.  
    13. section '.text' code readable executable ; секция кода
    14.   start:                 ; Начало основной   Программы
    15. ;----------------------------------------------------------------
    16. .tre:
    17.         lea    eax,[fd]             ; Вычисляем и кладем в стек
    18.         push   eax                 ; указатель на стуктуру find data
    19.         push   buf                 ; Указатель на имя директории, где искать
    20.         call   [FindFirstFile]     ; Ищем
    21.         inc    eax                 ; Если ничего
    22.         je       .exit             ; не нашли - выходим
    23.         dec    eax                 ; Иначе, сохраним
    24.         mov    [find_h],eax      ; хэндл поиска
    25. ;-----------------------------------------------------------------
    26. .find_next:
    27.         mov    eax,[fd.dwFileAttributes] ; Проверяем, нашли
    28.         and    eax,10h                 ; папку (директорию)?  FILE_ATTRIBUTE_DIRECTORY=10h
    29.         jne    .next                     ; Если ДА - прыгаем на .next , если НЕТ то нашли файл
    30. ;------------------------------------------------------------------                  
    31. .found:      
    32.         lea    eax,[buf]     ; ложим адрес начала пути директории без файла в регистр
    33.         push   eax             ; сохраняем для функции
    34.         call   [lstrlen]     ; вычисляем длину строки буфера в байтах, без нуля
    35.         sub    eax,3h         ; отнимаем от этой длины *.*
    36.         mov       [sizeBuf],eax ; ложим размер директории в память
    37. ;-------------------------------------------------------------------
    38.         lea    eax,[fd.cFileName]; ложим адрес начала имени файла в регистр
    39.         push   eax                 ; сохраняем для функции
    40.         call   [lstrlen]         ; вычисляем длину имени файла в байтах, без нуля
    41.         cmp eax,0ffffffffh         ; Если ничего
    42.         je        .exit             ; не нашли - выходим
    43.         mov [sizeFileName],eax     ; Иначе, сохраним длину имени файла в память
    44. ;--------------------------------------------------------------------
    45.         mov esi,[sizeBuf]
    46.         mov ecx,[sizeFileName]
    47.         xor eax,eax
    48. ;--------------------------------------------------------------------
    49. .cikl:
    50.         xor edi,edi
    51.         mov dl,byte[fd.cFileName+eax]
    52.         mov byte[buf+esi],dl
    53.         inc esi
    54.         inc eax
    55.         dec ecx
    56.         jnz .cikl
    57.         inc esi
    58.         xor edi,edi
    59.         mov dl,2ch
    60.         mov byte[buf+esi],dl
    61.         inc esi
    62.         xor edi,edi
    63.         mov byte[buf+esi],dl
    64. ;--------------------------------------------------------------------
    65. ;        lea    eax,[buf];
    66. ;        push 0 eax eax 0     ; Покажем MessageBox с
    67. ;        call [MessageBox]     ; названием файла
    68. ;--------------------------------------------------------------------
    69.         push buf
    70.         call [DeleteFileA]
    71. ;--------------------------------------------------------------------
    72.         mov esi,[sizeBuf]
    73.         mov ecx,[sizeFileName]
    74.         mov byte[buf+esi],2ah
    75.         inc esi
    76.         mov byte[buf+esi],2eh
    77.         inc esi
    78.         mov byte[buf+esi],2ah
    79.         sub ecx,1h
    80.     .cikl2:
    81.         inc esi
    82.         mov byte[buf+esi],0h
    83.         dec ecx
    84.         jnz .cikl2
    85. ;--------------------------------------------------------------------
    86. .next:
    87.         lea    eax,[fd]             ; Кладем в стек указатель
    88.         push   eax                 ; на структуру find_data
    89.         push   [find_h]             ; Хэндл текущего поиска
    90.         call   [FindNextFile]     ; Ищем следующий файл
    91.         test   eax,eax             ;
    92.         jne    .find_next         ; Если ничего не нашли,
    93.  
    94.         push   [find_h]             ; то закрываем
    95.         call   [FindClose]         ; хэндл поиска
    96. ;--------------------------------------------------------------------
    97. .exit:            
    98.         push 0 titl text 0     ; Покажем MessageBox с
    99.         call [MessageBox]     ; текстом  the end
    100.  
    101.         push    0                 ; Выходим из
    102.         call    [ExitProcess]     ; программы
    103.  
    104. section '.data' data readable writeable ; секция инициализированных данных
    105.   buf db 'C:\Documents and Settings\2\Local Settings\Temp\*.*',0 ;имя директории поиска
    106.  
    107.   titl    db  '!',0
    108.   text    db  'the end',0
    109.  
    110. section '.idata' import data readable ; секция импорта необходимых API-функций
    111.   library kernel32,'KERNEL32.DLL',\
    112.       user32,'USER32.DLL'
    113.  
    114.   include 'C:\fasmw17160\INCLUDE\API\KERNEL32.INC'
    115.   include 'C:\fasmw17160\INCLUDE\API\USER32.INC'
    116.  
    На***рен мне такие программы? :blush2:
     
    Последнее редактирование: 4 апр 2017
  5. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    потому что в стек параметры класть надо правильно. Учите ассемблер

    Код (ASM):
    1.  
    2. push 0
    3. push text
    4. push titl
    5. push 0
    6.  
     
  6. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Учим учим! :boast: Только почему тогда этот многоуважаемый ассемблер в ста местах и программах срабатывает как надо, а когда захочет - не срабатывает?
     
  7. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    TermoSINteZ,

    Кстати. Оно опять не кажет!:acute:
     
  8. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    rococo795,

    если явно указать каталог,

    buf db '.\rococo\*.*',0 ;имя директории поиска

    ( то есть здесь в папке с EXE есть папка Rococo, в которой лежат файлы на удаление )

    все ок.

    оно находит файлы, пишет их имена, и удаляет

    upload_2017-4-4_20-52-54.png


    - но вот лови другой багрепорт )

    если поменять маску удаления на

    buf db '.\rococo\*.del',0 ;имя директории поиска

    то программа будет вместо 1.del "рисовать" вот такое


    upload_2017-4-4_20-54-42.png

    и, разумеется, ничего не удалять.
     
    rococo795 нравится это.
  9. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.328
    Очевидно же, что твой буфер имеет размер маски для поиска и когда ты дописываешь к нему имя файла, ты переписываешь все, что идет в памяти после него. Тебе нужно выделить еще один буфер размером MAX_PATH и при каждом найденном файле в этом втором буфере склеивать его имя с путем.
     
    rococo795 нравится это.
  10. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.328
    rococo795,
    И раз уж ты используешь lstrlen(), почему бы не использовать также lstrcat, lstrcpy, etc, вместо склеивания имен побайтно? Думаешь, библиотечные функции плохо оптимизированы и на асме ты получишь большую производительность? Ну-ну :)
     
    rococo795 нравится это.
  11. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Для конкатенации путей проще юзать функцию PathCombine.
     
    rococo795 нравится это.
  12. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Понял. Поправлю. Спасибо. :boast:

    Спасибо. Использую этот манёвр. :good3:
     
  13. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
  14. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Спасибо. Своевременно. Чё то .bak не удаляет. Но это было на старом кодесе. Ща новый сделаю, посмотрю.
     
  15. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Трям. Всё работает.

    Код (ASM):
    1.  
    2. format PE GUI 4.0               ; PE EXE файл  
    3. entry start                ; Точка входа  
    4.  
    5. include 'C:\fasmw17160\INCLUDE\WIN32A.INC'  
    6.  
    7. section '.bss' data readable writeable ; секция неинициализированных данных
    8.   buf  rb  500h          ; Буффер для имени директории с файлом
    9.   fd  WIN32_FIND_DATA     ; структура WIN32_FIND_DATA  
    10.   find_h dd ?             ; и хэндл поиска  
    11.   sizeBuff dd ?
    12.   sizeFileName dd ?
    13.   schotchik dd ?
    14.  
    15. section '.text' code readable executable ; секция кода
    16.   start:                 ; Начало основной   Программы
    17. ;----------------------------------------------------------------
    18. .tre:
    19.         lea    eax,[fd]             ; Вычисляем и кладем в стек  
    20.         push   eax                 ; указатель на стуктуру find data    
    21.         push   buff          ; Указатель на имя директории, где искать
    22.         call   [FindFirstFile]     ; Ищем  
    23.         inc    eax                 ; Если ничего  
    24.         je       .exit             ; не нашли - выходим  
    25.         dec    eax                 ; Иначе, сохраним    
    26.         mov    [find_h],eax      ; хэндл поиска  
    27. ;-----------------------------------------------------------------
    28. .find_next:  
    29.         mov    eax,[fd.dwFileAttributes] ; Проверяем, нашли  
    30.         and    eax,10h             ; папку (директорию)?  FILE_ATTRIBUTE_DIRECTORY=10h    
    31.         jne    .next                     ; Если ДА - прыгаем на .next , если НЕТ то нашли файл    
    32. ;------------------------------------------------------------------                    
    33. .found:        
    34.         lea    eax,[buff]     ; ложим адрес начала пути директории без файла в регистр
    35.         push   eax             ; сохраняем для функции
    36.         call   [lstrlen]     ; вычисляем длину строки буфера в байтах, без нуля
    37.         sub    eax,3h         ; отнимаем от этой длины *.*
    38.         mov       [sizeBuff],eax ; ложим размер директории в память
    39. ;-------------------------------------------------------------------
    40.         lea    eax,[fd.cFileName]; ложим адрес начала имени файла в регистр
    41.         push   eax                 ; сохраняем для функции
    42.         call   [lstrlen]         ; вычисляем длину имени файла в байтах, без нуля
    43.         cmp eax,0ffffffffh         ; Если ничего
    44.         je        .exit             ; не нашли - выходим
    45.         mov [sizeFileName],eax     ; Иначе, сохраним длину имени файла в память
    46. ;--------------------------------------------------------------------
    47.         mov esi,[sizeBuff]
    48.         xor eax,eax
    49. ;-----------склеиваем путь и имя файла-------------------------------
    50. .cikl:
    51.         xor edx,edx
    52.         mov dl,byte[buff+eax]
    53.         mov byte[buf+eax],dl
    54.         inc eax
    55.         dec esi
    56.         jnz .cikl
    57.         xor esi,esi
    58.         mov esi,[sizeFileName]
    59.         xor ecx,ecx
    60. .cikl2:
    61.         xor edx,edx
    62.         mov dl,byte[fd.cFileName+ecx]
    63.         mov byte[buf+eax],dl
    64.         inc eax
    65.         inc ecx
    66.         dec esi
    67.         jnz .cikl2
    68.         xor edx,edx
    69.         mov byte[buf+eax],dl
    70. ;--------------------------------------------------------------------
    71.         lea    eax,[buf];
    72.         push 0 eax eax 0     ; Покажем MessageBox с
    73.         call [MessageBox]     ; названием файла
    74. ;--------------------------------------------------------------------
    75.         push buf
    76.         call [DeleteFileA]
    77. ;--------------------------------------------------------------------
    78. .next:    
    79.         lea    eax,[fd]             ; Кладем в стек указатель    
    80.         push   eax                 ; на структуру find_data  
    81.         push   [find_h]             ; Хэндл текущего поиска  
    82.         call   [FindNextFile]     ; Ищем следующий файл    
    83.         test   eax,eax             ;  
    84.         jne    .find_next         ; Если ничего не нашли,  
    85.  
    86.         push   [find_h]             ; то закрываем  
    87.         call   [FindClose]         ; хэндл поиска  
    88. ;--------------------------------------------------------------------
    89. .exit:              
    90.         push 0 titl text 0   ; Покажем MessageBox с
    91.         call [MessageBox]     ; текстом  the end
    92.  
    93.         push    0                 ; Выходим из  
    94.         call    [ExitProcess]     ; программы  
    95.  
    96. section '.data' data readable writeable ; секция инициализированных данных
    97.   buff db 'C:\Documents and Settings\2\Local Settings\Temp\*.*',0 ;имя директории поиска
    98.  
    99.   titl    db  '!',0
    100.   text    db  'the end',0
    101.  
    102. section '.idata' import data readable ; секция импорта необходимых API-функций
    103.   library kernel32,'KERNEL32.DLL',\  
    104.       user32,'USER32.DLL'  
    105.  
    106.   include 'C:\fasmw17160\INCLUDE\API\KERNEL32.INC'
    107.   include 'C:\fasmw17160\INCLUDE\API\USER32.INC'
    108.  
     
    _edge нравится это.
  16. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.328
    rococo795,
    Не нужно 0x500 байт для буфера. Ни одно имя файла в винде не может быть больше 260 символов.
     
  17. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Понял. Буду знать.
     
  18. rococo795

    rococo795 Active Member

    Публикаций:
    0
    Регистрация:
    1 дек 2016
    Сообщения:
    236
    Код (ASM):
    1.  
    2. format PE GUI 4.0               ; PE EXE файл  
    3. entry start                ; Точка входа  
    4.  
    5. include 'C:\fasmw17160\INCLUDE\WIN32A.INC'  
    6.  
    7. section '.main' code readable writeable executable    ; Секция кода и данных
    8.         buf     rb 110h             ; Буффер для имени директории    
    9.  
    10.         fake1   dd '.',0             ; Дирекории, которые  
    11.         fake2   dd '..',0             ; НЕ надо сканировать  
    12.  
    13.   sizeBuf dd ?             ; размер в байтах пути до файла, заканчивается \
    14.   buff    rb 110h          ; буффер для склеивания пути и имени файла
    15.   sizeFileName dd ?         ; размер в байтах имени файла с расширением (без нуля в конце)
    16.   titl db '!',0
    17.   text db 'OK',0
    18.  
    19. start:                 ; Начало основной программы
    20.         push    1h                 ; SEM_FAILCRITICALERRORS  
    21.         call    [SetErrorMode]     ; Установим error mode что бы в случае обращения к недоступному диску не вываливалось сообщение
    22.  
    23.         call    [GetLogicalDrives]        ; Получаем список дисков, существующих в системе
    24.         mov     ecx,19h                    ; Будем проверять, начиная с Z:\    
    25. ;------------------------------------------------------------------
    26. .find_drives:  
    27.         mov     ebx,1h             ; Нехитрые опрерации в  
    28.         shl     ebx,cl             ; ходе которых мы выясняем  
    29.         and     ebx,eax             ; присутствует диск в  
    30.         je        .no_disk         ; системе или нет  
    31.  
    32.         add     cl,41h             ; Если да, то добавим  
    33.         mov     byte [buf],cl     ; букву диска в  
    34.         sub     cl,41h             ; буффер  
    35.  
    36.         mov     dword [buf+1],':\*.'     ; Сформируем строку  
    37.         mov     byte [buf+5],'*'         ; для поиска, вида,  
    38.         mov     byte [buf+6],0             ; например, C:\*.*  
    39.  
    40.         push    eax              ; Сохраняем в стеке  
    41.         push    ecx              ; нужные регистры  
    42.  
    43.         call    find_files         ; Вызываем процедуру поиска  
    44.  
    45.         pop     ecx              ; Восстанавливаем  
    46.         pop     eax              ; регистры  
    47. ;------------------------------------------------------------------
    48. .no_disk:                     ; Если диска нет,    
    49.         dec     ecx              ; то проверяем следующий  
    50.         jge     .find_drives     ; пока ecx>0  
    51.  
    52.         push   0 titl text 0                
    53.         call [MessageBox]         ; Покажем MessageBox с полным путём и именем файла
    54.  
    55.         push    0                 ; Выходим из  
    56.         call    [ExitProcess]     ; программы  
    57. ;------------------------------------------------------------------
    58.     proc find_files              ; Рекурсивная процедура поиска файлов
    59.  
    60.       locals             ; Локальные переменные:  
    61.         fd       WIN32_FIND_DATA    ; структура WIN32_FIND_DATA  
    62.         find_h dd ?             ; хэндл поиска  
    63.       endl    
    64.  
    65.         lea    eax,[fd]             ; Вычисляем и кладем в стек  
    66.         push   eax                 ; указатель на стуктуру find data  
    67.         push   buf                 ; Указатель на имя директории, где искать  
    68.         call   [FindFirstFile]     ; Ищем  
    69.         inc    eax                 ; Если ничего  
    70.         je       .exit             ; не нашли - выходим  
    71.         dec    eax                 ; Иначе, сохраним  
    72.         mov    [find_h],eax      ; хэндл поиска  
    73. ;-------------------------------------------------------------------
    74. .find_next:  
    75.         mov    eax,[fd.dwFileAttributes]     ; Проверяем, нашли  
    76.         and    eax,FILE_ATTRIBUTE_DIRECTORY  ; директорию?  
    77.         je       .found                 ; Если нет - прыгаем на .found  
    78.  
    79.         lea    eax,[fd.cFileName]; Проверяем,  
    80.         push   eax                 ; вдруг это  
    81.         push   fake1             ; "."  
    82.         call   [lstrcmp]         ;  
    83.         test   eax,eax             ; Если да,  
    84.         je       .next             ; ищем следующий файл  
    85.  
    86.         lea    eax,[fd.cFileName]; Проверяем,  
    87.         push   eax                 ; вдруг это  
    88.         push   fake2             ; ".."  
    89.         call   [lstrcmp]         ;  
    90.         test   eax,eax             ; Если да  
    91.         je       .next             ; ищем следующий файл  
    92.  
    93.         push   buf                 ; Вычислим  
    94.         call   [lstrlen]         ; длину строки  
    95.         sub    eax,3             ; вычтем *.*  
    96.         push   eax                 ; сохраним полученную длину  
    97.  
    98.         mov    byte [buf+eax],0     ; Если мы всё-таки  
    99.         lea    eax,[fd.cFileName]; нашли директорию    
    100.         push   eax                 ; то прибавляем  
    101.         push   buf                 ; её имя к текущей  
    102.         call   [lstrcat]         ; папке  
    103.  
    104.         push   buf                 ; Опять вычислим  
    105.         call   [lstrlen]         ; длину получившейся строки  
    106.         mov       [sizeBuf],eax     ; запоминаем размер пути до файла (без *.*), заканчивается "\"
    107.         inc    [sizeBuf]
    108.  
    109.         mov    dword [buf+eax],'\*.*'         ; и прибавим  
    110.         mov    byte [buf+eax+4],0             ; \*.* для поиска  
    111.  
    112.         call   find_files             ; Вызываем процедуру поиска для найденной директории    
    113.  
    114.         pop    eax                     ; Восстановим  
    115.         mov    dword [buf+eax-1],'\*.*'     ; имя прежней  
    116.         mov    byte [buf+eax+3],0         ; директории  
    117.  
    118.         jmp    .next             ; Ищем следующий файл  
    119. ;------------------------------------------------------------------
    120. .found:  
    121.         lea    eax,[fd.cFileName]  
    122.         push   eax    
    123.         call   [lstrlen]  
    124.         mov       [sizeFileName],eax      ; запоминаем размер пути до файла (без *.*), заканчивается "\"
    125.         cmp    dword [fd.cFileName+eax-4],'.iso'        ; Проверим расширение файла    
    126.         jne    .next                                ; Если не совпадает ищем дальше  
    127. ;-------------------------------------------------------------------
    128.         mov esi,[sizeBuf]; Записываем путь к файлу
    129.         xor eax,eax         ; из buf
    130. .cikl:                     ; в
    131.         xor edx,edx         ; buff
    132.         mov dl,byte[buf+eax]    
    133.         mov byte[buff+eax],dl    
    134.         inc eax        
    135.         dec esi        
    136.         jnz .cikl        
    137.  
    138.         xor esi,esi
    139.         mov esi,[sizeFileName]
    140.         xor ecx,ecx
    141. .cikl2:
    142.         xor edx,edx
    143.         mov dl,byte[fd.cFileName+ecx]
    144.         mov byte[buff+eax],dl
    145.         inc eax
    146.         inc ecx
    147.         dec esi
    148.         jnz .cikl2
    149.         xor edx,edx
    150.         mov byte[buff+eax],dl
    151. ;----------------------------------------------------------------
    152.         lea    eax,[buff]  
    153.         push   0 eax eax 0                
    154.         call [MessageBox]         ; Покажем MessageBox с полным путём и именем файла
    155. ;-----------------------------------------------------------------
    156. ;-------Обнуляем buff---------------------------------------------
    157.         cld ;снять флаг DF = обнулить его = массив обрабатывается слево-направо
    158.         mov edi,buff ; адрес на начало buff
    159.         mov ecx, 110h ; размер buff
    160.         xor eax,eax ;обнуляем записываемый байт
    161.         rep stosb ;обнуляем массив байтов
    162. ;-----------------------------------------------------------------
    163. ;-----------------------------------------------------------------
    164. .next:    
    165.         lea    eax,[fd]             ; Кладем в стек указатель    
    166.         push   eax                 ; на структуру find_data  
    167.         push   [find_h]             ; Хэндл текущего поиска  
    168.         call   [FindNextFile]     ; Ищем следующий файл  
    169.         test   eax,eax             ;  
    170.         jne    .find_next         ; Если ничего не нашли,  
    171.  
    172.         push   [find_h]             ; то закрываем  
    173.         call   [FindClose]         ; хэндл поиска  
    174. ;-----------------------------------------------------------------
    175. .exit:              
    176.         ret              ; Выход  
    177.     endp  
    178.  
    179. data import                ; Импорт нужных API-функций  
    180.  
    181.     library kernel32,'KERNEL32.DLL',\  
    182.         user32,'USER32.DLL'  
    183.  
    184.     include 'C:\fasmw17160\INCLUDE\API\KERNEL32.INC'
    185.     include 'C:\fasmw17160\INCLUDE\API\USER32.INC'
    186.  
    187. end data  
    188.  
    Рекурсивно ищет файлы на всех дисках по маске. Но. Если файл в скрытой папке то показывает не имя файла а *.*, если далее в скрытой папке находиться вложенная Не скрытая папка - то в этой папке файл и путь к нему отображаются корректно. Что где подправить?
     
  19. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.328
    Вот бы кто-нибудь изобрел программу, где можно код пошагово исполнять и после каждого шага смотреть, что находится в буферах. Так бы вообще просто было обнаружить момент, когда в буфере оказывается не то, что ожидается.
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    rmn,
    OllyDbg вам в помощь.
    И вообще любой отладчик это умеет