Я использую Lazarus/FPC, и я ищу способ получить список указывающих устройств в Windows, а затем, в конечном счете, возможность отключить и включить определенные устройства ,Получение списка указывающих устройств в Windows (pascal)
Немного о Googling появилось this на MSDN и this на вики FreePascal.
Они выглядят как хорошая отправная точка, но, к сожалению, я падаю на первое препятствие ... Я не могу понять, как создать объект manager
, о котором говорится в примере.
Пример MSDN является (С #):
private void PopulatePointers(TreeView tvDevices)
{
//Add "Pointer Devices" node to TreeView
TreeNode pointerNode = new TreeNode("Pointer Devices");
tvInputDevices.Nodes.Add(pointerNode);
//Populate Attached Mouse/Pointing Devices
foreach(DeviceInstance di in
Manager.GetDevices(DeviceClass.Pointer,EnumDevicesFlags.AttachedOnly))
{
//Get device name
TreeNode nameNode = new TreeNode(di.InstanceName);
nameNode.Tag = di;
TreeNode guidNode = new TreeNode(
"Guid = " + di.InstanceGuid);
//Add nodes
nameNode.Nodes.Add(guidNode);
pointerNode.Nodes.Add(nameNode);
}
}
который я частично переведены на Паскаль, как:
uses windows, DirectInput;
procedure getPointingDevices();
begin
for pointingDevice in Manager.GetDevices(DeviceType.Keyboard,EnumDevicesFlags.AttachedOnly) do
begin
devicesTree.Items.AddChild(devicesTree.Items.TopLvlItems[0],pointingDevice.InstanceName);
end;
devicesTree.Items.TopLvlItems[0].Expand(true);
end;
и я включил DirectInput.pas
, DirectX.inc
, DXTypes.pas
, Jedi.inc
, Xinput.pas
(некоторые из которых на самом деле может не понадобиться, я буду работать позже) в проекте.
Очевидно, мне нужно создать объект Manager, чтобы иметь доступ к его методам, но я понятия не имею, как это сделать из документации, которую я прочитал до сих пор.
.net код не переводится непосредственно в код fpx. Вам нужно будет начать с образца C++ и перевести это. –
@ Давид Хеффернан - где код .net в моем примере? Пример в MSDN - это код C#, но это просто подсказывает мне, что мне, вероятно, понадобится использовать DirectX 'DirectInput', чтобы добраться до мышки/указательных устройств. Библиотеки/модули DirectX уже переведены для использования Lazarus/FPC, и это модули, которые я добавил в свой проект. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как создать или создать объект Manager как ... какой тип объекта является Менеджером? –
Er, C# является языком .net. Я думаю, вам нужно будет понять вещи немного лучше, чтобы добиться успеха. Кажется, вы хотите конвертировать код, не понимая его. Это вряд ли будет плодотворным. –