
Быстрый поиск
Введите фрагмент названия статьи для поиска
Delayed Start 1.6
20.08.2020 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Delayed Start
Программа для запуска других приложений с заданной задержкой. Кроме собственно запуска может автоматически прятать окно запущенного приложения, что особенно полезно для консольных программ. Дополнительно программа Delayed Start может быть использована, когда требуется выдержать нужную паузу в командных файлах. Для этого достаточно указать только время задержки без имени запускаемого приложения. Я использую Delayed Start в автозагрузке, чтобы "тяжелые" программы запускались не все одновременно, сильно нагружая систему, а по очереди и в нужной мне последовательности.
Для использования в командных файлах предусмотрены следующие коды возврата:
errorlevel = 1 - запуск произведен успешно или запуск вообще не выполнялся (пауза)
errorlevel = 0 - при запуске произошла ошибка
Для отладки запуска программ с разными параметрами в архиве прилагается файлик test.exe. Он просто выводит окно со своей командной строкой.
Читать статью целиком »
Просмотров: 17830 | Комментариев: 58
Программное удаление файла в Корзину
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
Читать статью целиком »
Просмотров: 1623 | Комментариев: 6
Использование мультимедийного таймера
16.08.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter

Использование мультимедийного таймера
Интересная разновидность системных событий - высокоточный мультимедийный таймер. Гарантированный интервал срабатывания мультимедийных таймеров - около 10 миллисекунд против 50 миллисекунд обычных таймеров, устанавливаемых при помощи функции SetTimer. Кроме того, мультимедийные таймеры позволяют использовать обработчики, которые будут срабатывать в нужные интервалы, тогда как сообщения WM_TIMER от обычных таймеров идут через общую очередь. Если главный поток подвис, заснул или продолжительное время реагирует на какое-нибудь тяжелое сообщение, то таймеру придется ожидать, пока обработчик дойдет до него. Таким образом, добиться предсказуемой периодичности таймера будет очень сложно. Мультимедийные таймеры выполняются в собственном потоке, поэтому лишены перечисленных недостатков.
Читать статью целиком »
Просмотров: 1602 | Комментариев: 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]
Читать статью целиком »
Просмотров: 1464 | Комментариев: 1
Как в Windows 7 установить разные обои на разные мониторы
04.07.2020 | Категория: Software | Автор: ManHunter

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


