Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Мидии в сливочном соусе

30.08.2020 | Категория: А еще я туда ем! | Автор: ManHunter

Мидии в сливочном соусе

Мидии - вкусный и полезный продукт, впрочем, как и все морепродукты. В них содержатся необходимые для человеческого организма витамины, минералы и аминокислоты. Мидии в сливочно-чесночном соусе очень просты в приготовлении, а результат обязательно порадует ваших близких.

Читать статью целиком »
Просмотров: 155 | Комментариев: 1

Исследование защиты программы Advanced Find and Replace

28.08.2020 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы Advanced Find and Replace

Advanced Find and Replace, как можно догадаться из названия, предназначена для поиска и пакетной замены строк в текстовых файлах и документах. Работает шустро, поддерживает различные опции поиска, в том числе и регулярки. Только расценки за всю эту красоту вообще зашкаливают. Если отстегивать деньги за каждую хорошую программу, то можно остаться без штанов.

Читать статью целиком »
Просмотров: 816 | Комментариев: 4

Эффект покачивания изображения при наведении мыши

24.08.2020 | Категория: Web-мастеру и не только | Автор: ManHunter

Эффект покачивания изображения при наведении мыши

Красивый эффект для оформления сайтов на случай какой-нибудь акции или распродажи. При наведении курсора мышки на бейджик, он начинает покачиваться. Никаких скриптов, вся анимация реализована исключительно средствами CSS.

Читать статью целиком »
Просмотров: 421 | Комментариев: 0

Получение списка удаленных файлов в Корзине

22.08.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Удалять файлы в Корзину мы уже научились, теперь давайте разберем, как можно получить список удаленных объектов, которые в этой Корзине находятся. С чего начнем? Ну конечно же с описания кучи структур, интерфейсов и констант, которые нам понадобятся.
  1. ; GUID {43826D1E-E718-42EE-BC55-A1E261C37BFE}
  2. IID_IShellItem      dd 043826D1Eh
  3.                     dw 0E718h
  4.                     dw 042EEh
  5.                     db 0BCh, 055h, 0A1h, 0E2h, 061h, 0C3h, 07Bh, 0FEh
  6.  
  7. ; GUID {93F2F68C-1D1B-11D3-A30E-00C04F79ABD1}
  8. IID_IShellFolder2   dd 093F2F68Ch
  9.                     dw 01D1Bh
  10.                     dw 011D3h
  11.                     db 0A3h, 00Eh, 000h, 0C0h, 04Fh, 079h, 0ABh, 0D1h
  12.  
  13. ; IID_IShellFolder2 Interface
  14. struct IShellFolder2
  15.     QueryInterface      dd ?
  16.     AddRef              dd ?
  17.     Release             dd ?
  18.  
  19.     ; IShellFolder
  20.     ParseDisplayName    dd ?
  21.     EnumObjects         dd ?
  22.     BindToObject        dd ?
  23.     BindToStorage       dd ?
  24.     CompareIDs          dd ?
  25.     CreateViewObject    dd ?
  26.     GetAttributesOf     dd ?
  27.     GetUIObjectOf       dd ?
  28.     GetDisplayNameOf    dd ?
  29.     SetNameOf           dd ?
  30.  
  31.     ; IShellFolder2
  32.     GetDefaultSearchGUID  dd ?
  33.     EnumSearches          dd ?
  34.     GetDefaultColumn      dd ?
  35.     GetDefaultColumnState dd ?
  36.     GetDetailsEx          dd ?
  37.     GetDetailsOf          dd ?
  38.     MapColumnToSCID       dd ?
  39. ends
  40.  
  41. ; IID_IEnumIDList Interface
  42. struct IEnumIDList
  43.     QueryInterface      dd ?
  44.     AddRef              dd ?
  45.     Release             dd ?
  46.  
  47.     Next                dd ?
  48.     Skip                dd ?
  49.     Reset               dd ?
  50.     Clone               dd ?
  51. ends
  52.  
  53. struct STRRET
  54.     uType dd ?
  55.     union
  56.         pOleStr dd ?
  57.         uOffset dd ?
  58.         cStr    rb 260
  59.     ends
  60. ends
  61.  
  62. struct SHCOLUMNID
  63.      fmtid rb 16
  64.      pid   dd ?
  65. ends
  66.  
  67. S_OK               = 0
  68. CSIDL_BITBUCKET    = 0Ah
  69. SHCONTF_FOLDERS    = 20h
  70. SHCONTF_NONFOLDERS = 40h
  71. SHGDN_NORMAL       = 0
  72. SHGDN_INFOLDER     = 1
  73. SHGDN_FOREDITING   = 1000h
  74. SHGDN_FORPARSING   = 8000h
  75. PID_DISPLACED_FROM = 2
  76. PID_DISPLACED_DATE = 3
  77. PKEY_SIZE          = 12
  78.  
  79. PSGUID_DISPLACED   dd 09B174B33h
  80.                    dw 040FFh
  81.                    dw 011D2h
  82.                    db 0A2h, 07Eh, 000h, 0C0h, 04Fh, 0C3h, 008h, 071h
  83.  
  84. PKEY_Size dd 0B725F130h
  85.           dw 047EFh
  86.           dw 0101Ah
  87.           db 0A5h, 0F1h, 002h, 060h, 08Ch, 09Eh, 0EBh, 0ACh
Для доступа к Корзине сперва надо получить объект рабочего стола, а уже через него определить объект Корзины. После этого поочередно получаем объекты ее содержимого и выполняем с ними нужные действия.
  1.         ; Инициализировать COM-объект
  2.         invoke  CoInitialize,NULL
  3.         invoke  SHGetSpecialFolderLocation,NULL,CSIDL_BITBUCKET,pidl
  4.         invoke  SHGetDesktopFolder,psfDesktop
  5.  
  6.         ; Получить объект папки Корзины
  7.         mov     eax,[psfDesktop]
  8.         mov     eax,[eax]
  9.         stdcall dword [eax+IShellFolder2.BindToObject],[psfDesktop],\
  10.                 [pidl],NULL,IID_IShellFolder2,psfRecycleBin
  11.  
  12.         ; Обработать содержимое Корзины
  13.         mov     eax,[psfRecycleBin]
  14.         mov     eax,[eax]
  15.         stdcall dword [eax+IShellFolder2.EnumObjects],[psfRecycleBin],\
  16.                 NULL,SHCONTF_FOLDERS+SHCONTF_NONFOLDERS,peidl
  17.  
  18. loc_next:
  19.         ; Очередной элемент содержимого Корзины
  20.         mov     eax,[peidl]
  21.         mov     eax,[eax]
  22.         stdcall dword [eax+IEnumIDList.Next],[peidl],1,pidlItem,NULL
  23.         ; Больше ничего нет
  24.         or      eax,eax
  25.         jnz     loc_done
  26.  
  27.         ; Выполнить необходимые действия с объектом
  28.         ...
  29.         ...
  30.         ...
  31.  
  32.         jmp     loc_next
  33.  
  34. loc_done:
  35.         ; Прибраться за собой
  36.         mov     eax, [psfRecycleBin]
  37.         mov     eax, [eax]
  38.         stdcall dword [eax+IShellFolder2.Release],[psfRecycleBin]
  39.  
  40.         mov     eax, [psfDesktop]
  41.         mov     eax, [eax]
  42.         stdcall dword [eax+IShellFolder2.Release],[psfDesktop]
  43.  
  44.         invoke  CoTaskMemFree,[pidl]
  45.  
  46.         ; Удалить объект
  47.         invoke  CoUninitialize
Получив очередной объект, можно узнать его свойства. Это может быть имя файла, его исходное месторасположение, нынешнее имя в Корзине, дата удаления, размер файла.

Читать статью целиком »
Просмотров: 268 | Комментариев: 7

Delayed Start 1.6

20.08.2020 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Delayed Start

Программа для запуска других приложений с заданной задержкой. Кроме собственно запуска может автоматически прятать окно запущенного приложения, что особенно полезно для консольных программ. Дополнительно программа Delayed Start может быть использована, когда требуется выдержать нужную паузу в командных файлах. Для этого достаточно указать только время задержки без имени запускаемого приложения. Я использую Delayed Start в автозагрузке, чтобы "тяжелые" программы запускались не все одновременно, сильно нагружая систему, а по очереди и в нужной мне последовательности.

Для использования в командных файлах предусмотрены следующие коды возврата:
errorlevel = 1 - запуск произведен успешно или запуск вообще не выполнялся (пауза)
errorlevel = 0 - при запуске произошла ошибка

Для отладки запуска программ с разными параметрами в архиве прилагается файлик test.exe. Он просто выводит окно со своей командной строкой.

Читать статью целиком »
Просмотров: 14879 | Комментариев: 53

01 ... 05 06 07 08 09 10 11 ... 316
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2020
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0188 сек.) / Память: 4.75 Mb
Наверх