Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.08.2023, 09:17
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Вопрос по CreateComObject

Как создать ComObj используя CreateComObject?

LIBID_Scaner: TGUID = '{30BDCD3D-FF71-46DD-931F-0C85D2FD6BFE}';

IID_IStandart: TGUID = '{9EE812C6-E98F-11D2-AF3E-0000E8DBEDCE}';
DIID_IScanerEvents: TGUID = '{691870D6-592F-11D3-B029-0000E8DBEDCE}';
IID_IScaner3: TGUID = '{691870D5-592F-11D3-B029-0000E8DBEDCE}';
CLASS_Scaner45: TGUID = '{691870D7-592F-11D3-B029-0000E8DBEDCE}';
делал :
Код:
 ComObj:=CreateComObject(LIBID_Scaner);
/// Далее хочу получить свойство 
ShowMessage( ComObj.Version);
// и тут ошибка не является объектом автоматизации
Ответить с цитированием
  #2  
Старый 26.08.2023, 10:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Для начала, а какого типа у тебя переменная ConObj. Случаем не OleVariant?
Кстати, CreateComObject ожидает CLSID на входе.

Вообще, я бы сказал, что твой код должен выглядеть как то так:
Код:
var
  scaner : IScaner3;
begin
  scaner := CreateComObject(CLASS_Scaner45) as IScaner3;
  ShowMessage(scaner.Version);
Может вместо IScaner3 надо использовать IStandart, но это ты уже по документации смотри. Я не знаю что за либу ты пытаешься использовать.

Последний раз редактировалось lmikle, 26.08.2023 в 10:18.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
infopol (26.08.2023)
  #3  
Старый 26.08.2023, 13:05
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Спасибо.

Попробую.Просто я не спец в Delphi
Ответить с цитированием
  #4  
Старый 27.08.2023, 20:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да тут не Делфи. Фактически тут голый COM API, просто в синтаксисе паскаля.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
infopol (28.08.2023)
  #5  
Старый 28.08.2023, 06:16
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Может подскажешь как отключать и включать события Клавиатуры?

Приветствую! Нужно программно отключать и включать события клавиатуры,да любого HID устройства.

Последний раз редактировалось infopol, 28.08.2023 в 06:28.
Ответить с цитированием
  #6  
Старый 30.08.2023, 21:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну глянь вот это:
https://stackoverflow.com/questions/...keyboard-mouse
Может подойдет

И вот тут глянь тоже:
https://stackoverflow.com/questions/...hi-application
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
infopol (31.08.2023)
  #7  
Старый 31.08.2023, 07:04
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Я так понял

Это отключение клавиатуры

Код:
function KBHookHandler(ACode: Integer; WParam: WParam; LParam: LParam)
  : LResult; stdcall;
begin
  if ACode < 0 then
    // Immediately pass the event to next hook
    Result := CallNextHookEx(Hook, ACode, WParam, LParam)
  else
    // by setting Result to values other than 0 means we drop/erase the event
    Result := 1;
end;

function DisableKeyboard : boolean;
begin
  if Hook = 0 then
    // install the hook
    // Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, HINSTANCE, 0);
    Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, 0, 0);
  Result := Hook <> 0;
end;
а включение будет так?
Код:
function EnableKeyboard : boolean;
begin
  if Hook = 0 then
    // install the hook
    // Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, HINSTANCE, 0);
    Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, 1, 0);
  Result := Hook <> 0;
end;
Попробовал.Не отключается.
Может использовать JvHidControllerClass.pas? Только выдается ошибка при использовании данной библиотеки.Не могу корректно установить компоненты JEDI

Последний раз редактировалось infopol, 31.08.2023 в 12:16. Причина: оооо11
Ответить с цитированием
  #8  
Старый 31.08.2023, 23:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Enable - просто убери свой хук и все должно работать.
Установка JEDI - ну это не всегда простой процесс. Для начала надо убедиться, что поддерживается твоя версия компилятора. Потом надо смотреть в какой последовательности надо компилить и устанавливать пакеты. Я вообще с JEDI не стал связываться, но есть подобный опыть для DevExpress.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
infopol (01.09.2023)
  #9  
Старый 01.09.2023, 07:13
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Я нашел hid.dll

Цитата:
Сообщение от lmikle
Enable - просто убери свой хук и все должно работать.
Установка JEDI - ну это не всегда простой процесс. Для начала надо убедиться, что поддерживается твоя версия компилятора. Потом надо смотреть в какой последовательности надо компилить и устанавливать пакеты. Я вообще с JEDI не стал связываться, но есть подобный опыть для DevExpress.
Код:
function DisableKeyboard : boolean;
begin
  if Hook = 0 then
    // install the hook
    // Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, HINSTANCE, 0);
    Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, 0, 0);
  Result := Hook <> 0;
  //ShowMessage(IntToStr(Hook));
end;

function EnableKeyboard : boolean;
begin
  if Hook = 0 then
    // install the hook
    // Hook := SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, HINSTANCE, 0);
    //Hook :=
     SetWindowsHookEx(WH_KEYBOARD, @KBHookHandler, 1, 0);
  Result := true;
end;
Disable не работает дает False.
Может ее использовать?
Вложения
Тип файла: zip hid.zip (14.1 Кбайт, 2 просмотров)

Последний раз редактировалось infopol, 01.09.2023 в 07:28. Причина: 112
Ответить с цитированием
  #10  
Старый 03.09.2023, 10:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, если возвращает False, то GetLastError тебе в руки. Получай код ошибки и смотри что не так.

По поводу dll - а я знаю что это за библиотека, ты бы написал что это и для чего...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter