
Быстрый поиск
Введите фрагмент названия статьи для поиска
Программное удаление файла в Корзину
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
Читать статью целиком »
Просмотров: 1455 | Комментариев: 6
Использование мультимедийного таймера
16.08.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter

Использование мультимедийного таймера
Интересная разновидность системных событий - высокоточный мультимедийный таймер. Гарантированный интервал срабатывания мультимедийных таймеров - около 10 миллисекунд против 50 миллисекунд обычных таймеров, устанавливаемых при помощи функции SetTimer. Кроме того, мультимедийные таймеры позволяют использовать обработчики, которые будут срабатывать в нужные интервалы, тогда как сообщения WM_TIMER от обычных таймеров идут через общую очередь. Если главный поток подвис, заснул или продолжительное время реагирует на какое-нибудь тяжелое сообщение, то таймеру придется ожидать, пока обработчик дойдет до него. Таким образом, добиться предсказуемой периодичности таймера будет очень сложно. Мультимедийные таймеры выполняются в собственном потоке, поэтому лишены перечисленных недостатков.
Читать статью целиком »
Просмотров: 1473 | Комментариев: 4
Передача данных приложению с помощью WM_DROPFILES
09.07.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Обрабатывать перетаскивание файлов в окно программы мы уже умеем, а сегодня узнаем, как сэмулировать это действие, то есть передать стороннему приложению список файлов через отправку сообщения WM_DROPFILES.Начинаем с описания структуры DROPFILES, потому что FASM про нее ничего не знает. Так часто приходится писать подобное, что впору уже вводить какую-нибудь аббревиатуру, типа "Самостоятельно Описываем Структуры, Недостающие Интерфейсы, Константы Ассемблера" - "С.О.С.Н.И.К.А". Шутка.
Code (Assembler) : Убрать нумерацию
- struct DROPFILES
- pFiles dd ?
- pt POINT
- fNC dd ?
- fWide dd ?
- ends
Ну и сам код. Определяем размер и выделяем память, заполняем структуру и имена файлов, отправляем сообщение целевому окну.
Code (Assembler) : Убрать нумерацию
- ; Размер структуры DROPFILES
- mov ebx,sizeof.DROPFILES
- inc ebx
- ; Длина имени первого файла
- invoke lstrlen,file1
- add ebx,eax
- inc ebx
- ; Длина имени второго файла
- invoke lstrlen,file2
- add ebx,eax
- inc ebx
- ; Выделить память
- invoke GlobalAlloc,GMEM_SHARE+GMEM_MOVEABLE+GMEM_ZEROINIT,ebx
- mov [mem],eax
- invoke GlobalLock,eax
- mov [dfiles],eax
- ; Заполнить структуру DROPFILES
- mov edi,[dfiles]
- mov [edi+DROPFILES.pFiles],sizeof.DROPFILES
- mov [edi+DROPFILES.pt.x],0
- mov [edi+DROPFILES.pt.y],0
- mov [edi+DROPFILES.fNC],FALSE
- mov [edi+DROPFILES.fWide],FALSE
- add edi,sizeof.DROPFILES
- ; Дописать к ней передаваемые файлы
- mov esi,file1
- @@:
- lodsb
- stosb
- or al,al
- jnz @b
- mov esi,file2
- @@:
- lodsb
- stosb
- or al,al
- jnz @b
- ; Завершающий нулевой байт
- xor eax,eax
- stosb
- ; Отправить сообщение WM_DROPFILES
- invoke GlobalUnlock,[mem]
- invoke PostMessage,[destination_window],WM_DROPFILES,[mem],0
- invoke GlobalFree,[mem]
Читать статью целиком »
Просмотров: 1353 | Комментариев: 1
Как в Windows 7 установить разные обои на разные мониторы
04.07.2020 | Категория: Software | Автор: ManHunter

Как в Windows 7 установить разные обои на разные мониторы
Посмотрел как-то на свои два монитора с одинаковыми обоями и подумал: а можно ли поставить на каждый из мониторов свой рисунок? Как оказалось, официальный ответ - в Windows 7 это сделать нельзя. На более новых системах это делается штатными средствами, но это ни в коем случае не их преимущество, а всего лишь небольшая недоработка Windows 7. И сегодня я расскажу, как эту недоработку можно устранить.
Читать статью целиком »
Просмотров: 10711 | Комментариев: 5
Анимированные обои для рабочего стола Windows 7
22.06.2020 | Категория: Software | Автор: ManHunter

Анимированные обои для рабочего стола Windows 7
Одним из новшеств в Windows Vista стала возможность устанавливать видеофайлы в качестве обоев рабочего стола. Но в Windows 7 эту возможность по какой-то причине убрали. Тут я полностью соглашусь, что есть более интересные направления для применения мощностей компьютера, чем крутить видяшки на рабочем столе. Но спрос родил предложение, нашлись энтузиасты, которые выделили из Windows Vista необходимые компоненты для анимации и портировали их на Windows 7. Я знаю как минимум две программы, которые это делают.
Читать статью целиком »
Просмотров: 1704 | Комментариев: 0


