Вверх ↑
Этот топик читают: Гость
Ответов: 284
Рейтинг: 23
#1: 2021-12-21 19:32:15 ЛС | профиль | цитата
Есть программа работает через dll для включения на ноутбуке вентилятора на 100%
Есть компонент CallDllEx.
С его помощью нахожу в это dll две команды.
_off@0
_on@0
а вот как ими пользоваться не знаю.
andrestudio помогите если есть время (это ваш компонент)
ну или кто хорошо разбирается.

Программа
https://forum.hiasm.com/getfile/39332

Драйвер
https://yadi.sk/d/xt98Hs1N3GLVJJ

Редактировалось 6 раз(а), последний 2021-12-21 21:16:41
карма: 2
0
vip
#1.1контекстная реклама от партнеров
Ответов: 5227
Рейтинг: 586
#2: 2021-12-22 09:49:33 ЛС | профиль | цитата
envoy_sky, это сишная библиотека. Судя по этому там оперсанды в конце имени должны быть и вызывать их cdecl
Сорцы её есть гитхабе. проще IC сделать и не парится...
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2059
Рейтинг: 131
#3: 2021-12-22 10:52:22 ЛС | профиль | цитата
envoy_sky, эти библиотеки сделаны в C++ и в CallDllEx их запихнуть нельзя. Для адаптации под delphi надо избавится от артефактов в названии функций _off@0=off таким образом:
function RiGetRenderWindow():Pointer; stdcall; external RiBox3D.dll name 'RiGetRenderWindow@0';
Вполне возможно, раз это C++ dll, вместо stdcall надо поставить cdecl, но это критично для функций. Просто это надо знать, какой интерфейс у функций, или методом тыка. В твоём случае не критично, у тебя процедуры.
HiAsm я снёс, по этому нарисовал IC по памяти и проверить не могу. Должно работать.
unit HiAsmUnit;

interface

uses kol,Share,Debug;

type
THiAsmClass = class(TDebug)
private

public
onFanon: THI_Event;
onFanoff: THI_Event;

Procedure doFanOn(var _Data:TData; Index:Word);
Procedure doFanOff(var _Data:TData; Index:Word);
end;
Procedure on(); stdcall; external AcerFanControlLib.dll name '_on@0';
Procedure off(); stdcall; external AcerFanControlLib.dll name '_off@0';

implementation

Procedure THiAsmClass.doFanOn;
begin
on;
_hi_OnEvent(onFanon,'Yes') ;
end;

Procedure THiAsmClass.doFanOff;
begin
off;
_hi_OnEvent(onFanoff,'Yes') ;
end;
end.

Редактировалось 3 раз(а), последний 2021-12-22 11:20:06
карма: 6

0
Ответов: 284
Рейтинг: 23
#4: 2021-12-22 11:54:01 ЛС | профиль | цитата
Вот так?

Add(MainForm,2953706,21,105)
{
Width=585
Height=442
}
Add(InlineCode,11553839,280,301)
{
WorkPoints=#7:doFanOn|8:doFanOff|
Code=#0:|15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|8: |10: public|20: onFanon: THI_Event;|21: onFanoff: THI_Event;|3: |50: Procedure doFanOn(var _Data:TData; Index:Word); |50: Procedure doFanOff(var _Data:TData; Index:Word);|5: end;|69:Procedure on(); stdcall; external AcerFanControlLib.dll name '_on@0';|71:Procedure off(); stdcall; external AcerFanControlLib.dll name '_off@0';|2: |15: implementation|3: |30:Procedure THiAsmClass.doFanOn;|5:begin|4: on;|32: _hi_OnEvent(onFanon,'Yes') ;|4:end;|0:|31:Procedure THiAsmClass.doFanOff;|5:begin|5: off;|33: _hi_OnEvent(onFanoff,'Yes') ;|4:end;|4:end.|
}
Add(Button,5892096,203,294)
{
Left=200
Top=290
link(onClick,11553839:doFanOn,[(257,300)(257,307)])
}
Add(Button,9461849,196,350)
{
Left=195
Top=350
link(onClick,11553839:doFanOff,[(254,356)(254,314)])
}

карма: 2
0
Ответов: 2059
Рейтинг: 131
#5: 2021-12-22 12:16:50 ЛС | профиль | цитата
envoy_sky, я не могу посмотреть. У меня HiAsm нет. Пусть ещё кто нибудь посмотрит.
P.S. dll и все зависимые надо положить с exe.
карма: 6

0
Ответов: 284
Рейтинг: 23
#6: 2021-12-22 12:34:24 ЛС | профиль | цитата
Лежат рядом.
не запускается

Редактировалось 1 раз(а), последний 2021-12-22 13:07:28
карма: 2
0
Ответов: 2059
Рейтинг: 131
#7: 2021-12-22 13:44:46 ЛС | профиль | цитата
envoy_sky писал(а):
Лежат рядом.
не запускается

1. Там надо AcerFanControlLib.dll взять в кавычки, вот так 'AcerFanControlLib.dll'.
2. Надо поставить точки onFanon и onFanoff, а у тебя только doFanOn и doFanOff или убрать их вообще.
Знаешь как?
onFanon: THI_Event;
onFanoff: THI_Event;
и
_hi_OnEvent(onFanon,'Yes') ;
_hi_OnEvent(onFanoff,'Yes') ;
убрать.
А это точно процедуры? Может это функции и туда чего-то передать надо?
Есть описание API? Может эта библиотека импортируется другой dll и запускать надо другую?
Слишком много неизвестных.
Если компилируется без ошибок, то я написал всё правильно, а уже почему не работает это уже другой вопрос, разбираться надо.
Я просто показал, как СИ-шные библиотеки подключать.

Редактировалось 2 раз(а), последний 2021-12-22 14:09:42
карма: 6

0
Ответов: 284
Рейтинг: 23
#8: 2021-12-22 14:08:42 ЛС | профиль | цитата
flint2 писал(а):
Если компилируется без ошибок

Не компилируется
Ладно, я это в целях саморазвития.
Не хочу напрягать народ.
Я не программист много не понимаю.

Редактировалось 5 раз(а), последний 2021-12-22 14:12:02
карма: 2
0
Ответов: 2059
Рейтинг: 131
#9: 2021-12-22 14:10:24 ЛС | профиль | цитата
Читай лучше пост выше!!!
карма: 6

0
Ответов: 284
Рейтинг: 23
#10: 2021-12-22 14:16:17 ЛС | профиль | цитата
flint2 писал(а):
Читай лучше пост выше!!!

ЗАРАБОТАЛО!!!

--- Добавлено в 2021-12-22 14:17:26

Спасибо ОГРОМНОЕ!

Редактировалось 1 раз(а), последний 2021-12-22 14:17:26
карма: 2
0
Ответов: 284
Рейтинг: 23
#11: 2021-12-23 08:24:12 ЛС | профиль | цитата
Можно с этим компонентом использовать
https://forum.hiasm.com/getfile/39334

Редактировалось 2 раз(а), последний 2021-12-23 08:28:17
карма: 2
0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)