Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука?
Здравствуйте, Marty, Вы писали:
M>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву?
Вряд ли есть универсальный рецепт. Можно сказать, что на большинстве ноутбуков и на меньшинстве компьютеров есть подключенная батарея, которую ОС видит.
Встроенная клавиатура вряд ли отличается от невстроенной, можно составить базу данных клавиатур, если у тебя есть возможность тестировать свою программу на всех моделях ноутбуков.
M>Ну, и как узнать модель устройства/название ноутбука?
В БИОСе есть product id. Не знаю, как в винапи его прочитать, https://www.baeldung.com/linux/get-bios-data тут есть про линукс информация, полагаю, существенных отличий не будет. Ну и дальше так же — через базу данных.
Re[2]: Как определить, я работаю на ноутбуке или нет?
Здравствуйте, vsb, Вы писали:
vsb>Вряд ли есть универсальный рецепт. Можно сказать, что на большинстве ноутбуков и на меньшинстве компьютеров есть подключенная батарея, которую ОС видит.
Ну, в принципе, детектить по наличию батареи — как вариант
vsb>Встроенная клавиатура вряд ли отличается от невстроенной, можно составить базу данных клавиатур, если у тебя есть возможность тестировать свою программу на всех моделях ноутбуков.
M>>Ну, и как узнать модель устройства/название ноутбука?
vsb>В БИОСе есть product id. Не знаю, как в винапи его прочитать, https://www.baeldung.com/linux/get-bios-data тут есть про линукс информация, полагаю, существенных отличий не будет. Ну и дальше так же — через базу данных.
M>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука?
SYSTEM_POWER_STATUS, and check the value of ACLineStatus field.
ACLineStatus = 0 => The system is not using AC power > Laptop + battery
ACLineStatus = 1 => The system is using AC power => Laptop + AC
ACLineStatus = 255 => AC power status is unknown => Desktop
Здравствуйте, Marty, Вы писали:
M>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука?
В линухе есть утилита dmidecode, и она умеет печатать, помимо всего прочего, следущее:
Handle 0x0004, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Micro-Star International Co., Ltd.
Type: Notebook
Lock: Not Present
Version: N/A
Serial Number: 21PN041565
Asset Tag: No Asset Tag
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: Default string
По-моему, это очень близко к тому, что ты хочешь. Ключевое слово: "DMI".
По наличию батарейки, я не уверен. Не знаю, как в венде, в линухе встроенная батарейка ноутбука выглядит примерно так же, как подключенный к конпьютеру UPS.
Скорее уж, судить по модели процессора, если не придумаешь, как до DMI добраться. В ноутбуки обычно ноутбучные процессоры кладут (в неттопы, впрочем, тоже).
Re: Как определить, я работаю на ноутбуке или нет?
Здравствуйте, Marty, Вы писали:
M>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука?
Здравствуйте, Pzz, Вы писали:
M>>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука?
Pzz>В линухе есть утилита dmidecode, и она умеет печатать, помимо всего прочего, следущее:
Проблема в том, что мне нужно под винду. Форум вроде намекает на это
Здравствуйте, Marty, Вы писали:
Pzz>>В линухе есть утилита dmidecode, и она умеет печатать, помимо всего прочего, следущее:
M>Проблема в том, что мне нужно под винду. Форум вроде намекает на это
Ну вот Женя Музыченко сказал слово Win32_SystemEnclosure...
Re: Как определить, я работаю на ноутбуке или нет?
Здравствуйте, Marty, Вы писали:
M>Здравствуйте!
M>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука?
Шпионить? вот https://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
или нужно физическое присутствие? тогда через вебку только с фэйслетектед. хотя тоже можно обойти.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Как определить, я работаю на ноутбуке или нет?
Здравствуйте, Разраб, Вы писали:
M>>Как определить, я работаю на ноутбуке или нет? Ну, или на нетбуке, или ещё на каком-то устройстве, которое содержит встроенную клаву? Ну, и как узнать модель устройства/название ноутбука? Р>Шпионить? вот Р>https://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook Р>или нужно физическое присутствие? тогда через вебку только с фэйслетектед. хотя тоже можно обойти.
Нет. Мне не нужны low level хуки. Пофлеймить пройдите в сад