Форум » [x]Harbour » device detected » Ответить

device detected

Dima: Как узнать, прога запущена на ноуте или стационарном компе ?

Ответов - 13

Avf: Может проверить наличие Bluetooth или Wifi ?

rvu: Avf пишет: Может проверить наличие Bluetooth или Wifi ? В некоторых случаях (редко) в комп могут быть вставлены соответствующие девайсы.

fil: Может это поможет function FW_IsTouchScreen(); return ( GetSysMetrics( SM_DIGITIZER ) > 0 )


ММК: rvu пишет: В некоторых случаях (редко) в комп могут быть вставлены соответствующие девайсы. Сейчас уже редко CD ROM , а вайфай как и сетевая карта ..... fil пишет: function FW_IsTouchScreen() Это вряд ли , точнее- нет:). Скорее для планшета или телефона, а вот тачьПад может и помог бы.

Петр: Dima пишет: Как узнать, прога запущена на ноуте или стационарном компе ? Как правило в ноутбуке есть батарейка Узнать можно с помощью WinAPI CallNtPowerInformation(SystemBatteryState, ... ) «[pre] #pragma BEGINDUMP #include <windows.h> #include "powrprof.h" #include "ntdef.h" #include "hbapi.h" HB_FUNC( BATTERYPRESENT ) { NTSTATUS status; SYSTEM_BATTERY_STATE state; status = CallNtPowerInformation( SystemBatteryState, NULL, 0, &state, sizeof( SYSTEM_BATTERY_STATE ) ); if( NT_SUCCESS( status ) ) hb_retl( state.BatteryPresent ? HB_TRUE : HB_FALSE ); else hb_retl( HB_FALSE ); } #pragma ENDDUMP [/pre]»

Dima: Петр Спасибо за идею ! Пример собрать не удалось (MINGW) , при сборке вывалило undefined reference to `CallNtPowerInformation@20'

Dima: Упс , погуглил... Прицепил -lPowrProf , собралось , работает PS Под BCC55 , это похоже и не собрать

ММК: Dima пишет: собралось , работает Интересно, а когда батарея вынута работает?

Haz: Dima пишет: Под BCC55 , это похоже и не собрать Да и не надо Есть универсальный способ получения информации от винды, это wmi. Про батарейки к примеру будет Win32_Battery class Конкретно про тип корпуса это Win32_SystemEnclosure Как говориться все в одном, от железа до учеток пользователей в домене, все живет в этом вимиай

Петр: Dima пишет: Под BCC55 , это похоже и не собрать Почему же, но выглядеть будет не так изящно [pre2] #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #ifndef NT_SUCCESS #define NTSTATUS LONG #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) typedef struct { BOOLEAN AcOnLine; BOOLEAN BatteryPresent; BOOLEAN Charging; BOOLEAN Discharging; BOOLEAN Spare1[4]; DWORD MaxCapacity; DWORD RemainingCapacity; DWORD Rate; DWORD EstimatedTime; DWORD DefaultAlert1; DWORD DefaultAlert2; } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE; #endif typedef NTSTATUS WINAPI ( * CallNtPowerInformationPtr)( int, void *, ULONG, void *, ULONG ); HB_FUNC( BATTERYPRESENT ) { HMODULE hDll = LoadLibraryEx( "powrprof.dll", NULL, 0 ); hb_retl( HB_FALSE ); if( hDll ) { CallNtPowerInformationPtr fn_CallNtPowerInformation; fn_CallNtPowerInformation = ( CallNtPowerInformationPtr ) GetProcAddress( hDll, "CallNtPowerInformation" ); if( fn_CallNtPowerInformation ) { NTSTATUS status; SYSTEM_BATTERY_STATE state; int SystemBatteryState = 5; status = fn_CallNtPowerInformation( SystemBatteryState, NULL, 0, &state, sizeof( SYSTEM_BATTERY_STATE ) ); if( NT_SUCCESS( status ) ) hb_retl( state.BatteryPresent ? HB_TRUE : HB_FALSE ); } } } #pragma ENDDUMP [/pre2]

Dima: ММК пишет: Интересно, а когда батарея вынута работает? Пока не было возможности пробнуть. Haz пишет: Есть универсальный способ получения информации от винды, это wmi. Точно , даже не подумал о нем сразу.

Haz: Dima пишет: даже не подумал о нем сразу. С ним вообще мало кто работает, а инструмент позволяет многое. Пример в MG есть, единственное что нужно для понимания так это чтото похожее на wmi Explorer чтоб тыкаться не в слепую. PS. Когда-то делал на нем инвентаризацию железа в сети, и установленного софта на рабочих местах - работало однако PPS. Причём то что предложил Петр как альтернативу - отличное решение, выгодно отличающееся по скорости исполнения т.к. Wmi несколько тормозит.

Dima: Haz пишет: Когда-то делал на нем инвентаризацию железа в сети, и установленного софта на рабочих местах Да я помню , ты писал.



полная версия страницы