Винно-исторический музей
Программа, которая ничего не делает.
Да, понадобилась мне такая программа под Win32, которая совсем ничего не делает. Запускается, и сразу завершает работу, не открывая окна консоли и не создавая окно GUI. Для чего, расскажу в другой раз. Встал вопрос, на чем писать. .NET не подходит — слишком уж за такой программой Framework таскать, был Lasarus, но, если честно, не понял, как там все правильно сделать. И тут осенило, есть же TASM, идеально подходящий для такой задачи, будет максимально маленький экзешник, требующий только одну функцию из WinAPI — ExitProcess
. Самое то! Правда, на ассемблере я кодил в лохматых годах, так что пришлось немного повспоминать.
.386
.MODEL FLAT
extrn ExitProcess:proc
.DATA
szHelp DB 'This program start and end'
.CODE
Start:
nop
nop
nop
push 0
call ExitProcess
end Start
.386
— директива, позволяющая ассемблировать инструкции i386-го процессора, нам хватит.
.MODEL FLAT
— выбор стандартной в Win32 модели памяти (FLAT
)
extrn ExitProcess:proc
— директива extrn
позволяет использовать в программе функцию (тут ExitProcess
) из внешней библиотеки, которую подключим на этапе линковки.
Библиотека IMPORT32.LIB
, содержащая основные функции WinAPI должна быть в комплекте TASM.
.DATA
— начало сегмента данных, в принципе, в этой программе можно его просто определить и не заполнять, но я определю в нем строку, которая будет храниться прямо в в экзешнике, как его описание. Можно открыть экзешник по F3 в Far’е, например, и увидеть ее. При работе программы строка использоваться не будет.
szHelp DB 'This program start and end'
— та самая строчка.
.CODE
— Сегмент кода.
Start:
— метка, обозначающая точку входа в программу. Можно назвать хоть как (Start
, Main
и т.д.).
nop
— пустая операция, процессор в буквальном смысле делает ничего. Можно пропустить, но пусть будет.
push 0
— кладем в стек код возврата, который будет использован функцией ExitProcess
.
end Start
— конец основной функции программы.
Компиляция:
tasm32 /m simple.asm
где:
/ml
— учитывать регистр символов при компиляции.
simple.asm
— имя файла с исходником.
Получилось:
Assembling file: simple.asm Error messages: None Warning messages: None Passes: 1
Будет создан файл simple.OBJ
Линковка:
tlink32 /Tpe /aa simple.OBJ,,,IMPORT32.LIB
где:
/Tpe
— создать на выходе Win32 PE-файл (Стандартный формат 32-х битного экзешника, начиная с Windows 95).
/aa
— Использовать WinAPI
Примечание: Библиотека IMPORT32.LIB
должна лежать в том же каталоге, где и simple.OBJ
, или прописывайте полный путь к файлам
Writing Win32 programs in assembly language using TASM:
— Читать на tolik-punkoff.com
— Читать на lj.rossia.org
— Скачать с Mega.NZ
— Скачать с Google.Drive
Writing Win32 programs in assembly language using TASM
Переключение раскладки на экранной клавиатуре Windows 7
По-прежнему, чиним деньгополдощательные терминалы и всякие прочие АРМ, потому понадобилось, заметка от склероза, чтоб не забыть, да и другим полезно будет.
Рассматриваем способы, как ее вызвать, если доступа к физической клавиатуре нет совсем.
1. ПУСК —> Все программы —> Стандартные —> Специальные возможности —> Экранная клавиатура
2. Добираемся мышекликом до экзешника: %windir%\system32\osk.exe
Где %windir%
— каталог с установленной Windows (обычно C:\Windows
).
Если надо вызвать программу с командной строки (для справки), то соответственно, команда: osk
Примечание: Экранная клавиатура, как и физическая, поддерживает только раскладки клавиатуры (языки ввода) установленные в системе, т.е., если русский язык, например, в системе не установлен совсем, то и переключиться на наго нельзя.
Самый простой. Не пользоваться для переключения языка ввода и раскладки экранной клавиатурой, все спокойно можно делать мышью, с помощью значка индикатора клавиатуры в системном трее.
Щелкаем те же клавиши, которые установлены для переключения клавиатуры в системе, и не задерживаясь, нажимаем ту, с которой начали. Т.е. если переключение клавиатуры настроено на Alt+Shift, то на экранной клавиатуре жмем Alt, потом Shift (или наоборот, сначала Shift потом Alt), а потом возвращаемся к первой клавише, если первой нажимали Alt — нажимаем Alt второй раз, если первый раз нажимали Shift — второй раз нажимаем Shift.
Если в системе установлена комбинация Ctrl+Shift, действия аналогичны, только нажимаем соответствующие клавиши на экранной клавиатуре
Переключение раскладки:
Раскладка переключилась:
ТЕЛЕМАРКЕТ!
Если Windows XP внезапно упала в синий экран на более-менее современном компьютере.
Что делать, и как это порешать. AHCI —> IDE. Инструкция для и по просьбе заводского эникейщика.
На многих старых и надежных аппаратах (АРМ станков с ЧПУ, терминалах) вполне может быть установлена Windows XP, свои функции она выполняет, а специализированный софт, например, может не подо что другое не работать. Если вдруг ломается насмерть машина, обычно покупают компьютер, который совместим с XP, но рассчитан на более современную систему.
Но при некоторых условиях, совместимые с XP машины, могут все равно отправить при некоторых ситуациях XP в синий экран. Впрочем, восстановить запуск XP в некоторых случаях возможно без переустановки Windows, подправив настройки BIOS (UEFI).
Первое, что надлежит в таком случае проверить, это не слетел ли BIOS АРМ или встроенного компьютера к начальным настройкам. Если это так, то при загрузке на экране может появиться что-то типа:
CMOS Checkum error
...
Press F1 to Run SETUP
...
Крупный вариант
В данном случае сначала следует заменить батарейку CMOS, располагающуюся на материнской плате. Как это сделать для стандартного PC есть, например, в этом видео.
Примечание: На некоторых материнских платах батарейка BIOS может оказаться под внешней видеокартой, тогда, перед заменой батарейки, нужно сначала изъять видеокарту из слота.
Примечание: Не забываем про ТБ! Все операции с разборкой системного блока и заменой батареи выполняем при отключенном от сети системном блоке! Видел в некоторых видео, что можно так не делать, так вот отключать от сети нужно всегда! Если случайно закоротите контакты, можно получить или BIOS, требующий перепрошивки, или вообще горелую материнку. Электричество, какое маленькое оно бы не казалось, безалаберности не терпит!
Если у более новых компьютеров обнулился BIOS/UEFI и возвратился к заводским настройкам, то, скорее всего, произошло переключение режима работы контроллера жесткого диска с IDE-совместимого в AHCI, AHCI в XP поддерживается с большим бубном, потому им обычно никто не заморачивается, если особо не надо, переключают контроллер в режим IDE-совместимости и телемаркет. А вот если контроллер переключится обратно сам, после возврата BIOS к заводским настройкам, то XP упадет в синий экран.
1. Заходим в BIOS, на главной странице выбираем Advanced Mode (или нажимаем клавишу F7)
2. В появившемся окне отвечаем OK:
3. Переходим на вкладку Advanced:
4. Выбираем SATA configuration:
5. Нажимаем ENTER и в появившемся меню выбираем IDE:
6. Сохраняем настройки и перезагружаемся (F10)
ТЕЛЕМАРКЕТ!