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

VESA Commander 1.3
07.10.2020 | Категория: Мои программы | Автор: ManHunter

Скриншот программы VESA Commander
VESA Commander - консольная программа для получения различной технической информации и тестирования мониторов с поддержкой стандарта VESA DDC/CI. Она позволяет получить текущее значение и описание любого из поддерживаемых монитором VCP кодов, а также изменить это значение, если это возможно. Таким образом, например, вы можете включить или выключить монитор, поменять язык экранных подсказок, изменить яркость или контрастность, выбрать цветовой профиль, а также сделать со своим монитором еще много чего интересного. Список VCP кодов стандартизирован и описан в документе VESA Monitor Control Command Set (MCCS), там же приводится формат и описание большинства значений передаваемых и получаемых параметров.
Читать статью целиком »
Просмотров: 2147 | Комментариев: 25

Контекстное меню с использованием Advanced Query Syntax
09.09.2020 | Категория: Software | Автор: ManHunter

Контекстное меню с использованием Advanced Query Syntax
Система Windows предоставляет широчайшие возможности для поиска файлов, хранящихся на диске. Если посмотреть в официальной документации на Advanced Query Syntax, то там можно найти шаблоны для поиска файлов по фрагменту имени, дате создания, важности, локации, а также другим признакам, которые можно назначить файлу. Но мало кто знает, что эти же параметры фильтрации можно использовать не только для поиска, но и для контекстного меню.
Читать статью целиком »
Просмотров: 282 | Комментариев: 0

Получение списка удаленных файлов в Корзине
22.08.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Удалять файлы в Корзину мы уже научились, теперь давайте разберем, как можно получить список удаленных объектов, которые в этой Корзине находятся. С чего начнем? Ну конечно же с описания кучи структур, интерфейсов и констант, которые нам понадобятся.Code (Assembler) : Убрать нумерацию
- ; GUID {43826D1E-E718-42EE-BC55-A1E261C37BFE}
- IID_IShellItem dd 043826D1Eh
- dw 0E718h
- dw 042EEh
- db 0BCh, 055h, 0A1h, 0E2h, 061h, 0C3h, 07Bh, 0FEh
- ; GUID {93F2F68C-1D1B-11D3-A30E-00C04F79ABD1}
- IID_IShellFolder2 dd 093F2F68Ch
- dw 01D1Bh
- dw 011D3h
- db 0A3h, 00Eh, 000h, 0C0h, 04Fh, 079h, 0ABh, 0D1h
- ; IID_IShellFolder2 Interface
- struct IShellFolder2
- QueryInterface dd ?
- AddRef dd ?
- Release dd ?
- ; IShellFolder
- ParseDisplayName dd ?
- EnumObjects dd ?
- BindToObject dd ?
- BindToStorage dd ?
- CompareIDs dd ?
- CreateViewObject dd ?
- GetAttributesOf dd ?
- GetUIObjectOf dd ?
- GetDisplayNameOf dd ?
- SetNameOf dd ?
- ; IShellFolder2
- GetDefaultSearchGUID dd ?
- EnumSearches dd ?
- GetDefaultColumn dd ?
- GetDefaultColumnState dd ?
- GetDetailsEx dd ?
- GetDetailsOf dd ?
- MapColumnToSCID dd ?
- ends
- ; IID_IEnumIDList Interface
- struct IEnumIDList
- QueryInterface dd ?
- AddRef dd ?
- Release dd ?
- Next dd ?
- Skip dd ?
- Reset dd ?
- Clone dd ?
- ends
- struct STRRET
- uType dd ?
- union
- pOleStr dd ?
- uOffset dd ?
- cStr rb 260
- ends
- ends
- struct SHCOLUMNID
- fmtid rb 16
- pid dd ?
- ends
- S_OK = 0
- CSIDL_BITBUCKET = 0Ah
- SHCONTF_FOLDERS = 20h
- SHCONTF_NONFOLDERS = 40h
- SHGDN_NORMAL = 0
- SHGDN_INFOLDER = 1
- SHGDN_FOREDITING = 1000h
- SHGDN_FORPARSING = 8000h
- PID_DISPLACED_FROM = 2
- PID_DISPLACED_DATE = 3
- PKEY_SIZE = 12
- PSGUID_DISPLACED dd 09B174B33h
- dw 040FFh
- dw 011D2h
- db 0A2h, 07Eh, 000h, 0C0h, 04Fh, 0C3h, 008h, 071h
- PKEY_Size dd 0B725F130h
- dw 047EFh
- dw 0101Ah
- db 0A5h, 0F1h, 002h, 060h, 08Ch, 09Eh, 0EBh, 0ACh
Code (Assembler) : Убрать нумерацию
- ; Инициализировать COM-объект
- invoke CoInitialize,NULL
- invoke SHGetSpecialFolderLocation,NULL,CSIDL_BITBUCKET,pidl
- invoke SHGetDesktopFolder,psfDesktop
- ; Получить объект папки Корзины
- mov eax,[psfDesktop]
- mov eax,[eax]
- stdcall dword [eax+IShellFolder2.BindToObject],[psfDesktop],\
- [pidl],NULL,IID_IShellFolder2,psfRecycleBin
- ; Обработать содержимое Корзины
- mov eax,[psfRecycleBin]
- mov eax,[eax]
- stdcall dword [eax+IShellFolder2.EnumObjects],[psfRecycleBin],\
- NULL,SHCONTF_FOLDERS+SHCONTF_NONFOLDERS,peidl
- loc_next:
- ; Очередной элемент содержимого Корзины
- mov eax,[peidl]
- mov eax,[eax]
- stdcall dword [eax+IEnumIDList.Next],[peidl],1,pidlItem,NULL
- ; Больше ничего нет
- or eax,eax
- jnz loc_done
- ; Выполнить необходимые действия с объектом
- ...
- ...
- ...
- jmp loc_next
- loc_done:
- ; Прибраться за собой
- mov eax, [psfRecycleBin]
- mov eax, [eax]
- stdcall dword [eax+IShellFolder2.Release],[psfRecycleBin]
- mov eax, [psfDesktop]
- mov eax, [eax]
- stdcall dword [eax+IShellFolder2.Release],[psfDesktop]
- invoke CoTaskMemFree,[pidl]
- ; Удалить объект
- invoke CoUninitialize
Читать статью целиком »
Просмотров: 316 | Комментариев: 7

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

Скриншот программы Delayed Start
Программа для запуска других приложений с заданной задержкой. Кроме собственно запуска может автоматически прятать окно запущенного приложения, что особенно полезно для консольных программ. Дополнительно программа Delayed Start может быть использована, когда требуется выдержать нужную паузу в командных файлах. Для этого достаточно указать только время задержки без имени запускаемого приложения. Я использую Delayed Start в автозагрузке, чтобы "тяжелые" программы запускались не все одновременно, сильно нагружая систему, а по очереди и в нужной мне последовательности.
Для использования в командных файлах предусмотрены следующие коды возврата:
errorlevel = 1 - запуск произведен успешно или запуск вообще не выполнялся (пауза)
errorlevel = 0 - при запуске произошла ошибка
Для отладки запуска программ с разными параметрами в архиве прилагается файлик test.exe. Он просто выводит окно со своей командной строкой.
Читать статью целиком »
Просмотров: 15058 | Комментариев: 53

Программное удаление файла в Корзину
18.08.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Небольшой сниппет - удаление файла или группы файлов в Корзину. Делается это при помощи функции SHFileOperation, но сперва нам надо будет определить необходимую структуру SHFILEOPSTRUCT и несколько констант.Code (Assembler) : Убрать нумерацию
- struct SHFILEOPSTRUCT
- hwnd dd ?
- wFunc dd ?
- pFrom dd ?
- pTo dd ?
- fFlags dw ?
- fAnyOperationsAborted dd ?
- hNameMappings dd ?
- lpszProgressTitle dd ?
- ends
- FO_DELETE = 3h
- FOF_ALLOWUNDO = 40h
- FOF_NOCONFIRMATION = 10h
- FOF_SILENT = 4h
Code (Assembler) : Убрать нумерацию
- mov [fos.hwnd],HWND_DESKTOP
- mov [fos.wFunc],FO_DELETE
- mov [fos.pFrom],fname
- mov [fos.fFlags],FOF_ALLOWUNDO+FOF_NOCONFIRMATION+FOF_SILENT
- invoke SHFileOperation,fos
Читать статью целиком »
Просмотров: 216 | Комментариев: 1
