Вот пробовал создать свой плагин.
Подключаю функцию из своего DLL.
Я так понимаю, что когда дело доходит до вызова этой функции, DLL грузится, функция выполняется и DLL выгружается. Так?
Моя функция (в DLL которая) создает поток, в котором создает
таймер (Timer := CreateWaitableTimer(NIL, FALSE, NIL);) и затем
ожидает его срабатывания (WaitForSingleObject(Timer, INFINITE);
). После срабатывания таймера поток уничтожается.
Все это я "заморочил" для того, чтобы сделать WakeUp из спящего режима.
Использую эту DLL в своей программке (которая не выгружает DLL пока работает). Комп просыпается. Программка продолжает нормально работать дальше. Пробовал на разных машинах.
Подключаю DLL к xStarter ( в плагине). Создаю задачу, которая по горячим клавишам запускает действие, описанное в плагине (т.е. устанавливает таймер на включение), запускаю ее и усыпляю компьютер.
В заданное время комп просыпается, но xStarterа в памяти больше нет. Вылетает
Вот такая "беда":) Что ж делать-то?
Плагины и DLL
- Alex
- Ас
- Сообщения: 2833
- Зарегистрирован: Вт апр 05, 2005 3:28 pm
- Откуда: Kaliningrad City
- Благодарил (а): 2 раза
- Поблагодарили: 91 раз
- Контактная информация:
При создании плагинов функции из DLL берутся по некоторому аналогу статической линковки в Delphi. Для каждой задачи создается программа-скрипт, по завершении которой все библиотеки осовбождаются...
Могу попробовать сделать динамическую линковку, именно так в Delphi явно загружаются/высвобождаются библиотеки, под полным контролем . Но только не получится полный аналог Delphi, нельзя будет вызывать функции с параметрами.
Пример:
Второй вариант по использованию функций сторонних библиотек/проограмм - вызов методов COM серверов. Например, как в действии ExcelMacro.
Ну и третий - я могу включить Ваш код в состав программы. Для меня желательно конечно иметь именно исходный код, а не DLL. Или и то и другое . Не для себя лично радею, а для безопасности ... Готов даже за полезный исходный код высылать лицензии на программу. Или деньгами .
Могу попробовать сделать динамическую линковку, именно так в Delphi явно загружаются/высвобождаются библиотеки, под полным контролем . Но только не получится полный аналог Delphi, нельзя будет вызывать функции с параметрами.
Пример:
Код: Выделить всё
DllHandle: DWORD;
begin
DllHandle:=LoadLibrary('mydll.dll');
try
ExecuteDllProcedure(DllHandle, 'MyProcedure');
finally
FreeLibrary(DllHandle);
end;
end;
Ну и третий - я могу включить Ваш код в состав программы. Для меня желательно конечно иметь именно исходный код, а не DLL. Или и то и другое . Не для себя лично радею, а для безопасности ... Готов даже за полезный исходный код высылать лицензии на программу. Или деньгами .
- Alex
- Ас
- Сообщения: 2833
- Зарегистрирован: Вт апр 05, 2005 3:28 pm
- Откуда: Kaliningrad City
- Благодарил (а): 2 раза
- Поблагодарили: 91 раз
- Контактная информация:
Судя по исходникам, все эти функции в xStarter уже есть . Ваша программа ведь может пробудить систему только из состояния Suspended?
В xStarter тоже можно сделать задачу, которая в определенное время покажется сообщение и этим разбудит систему. Но только из состояния Suspended, не Hibernate, когда питание компьютера отключено.
В xStarter тоже можно сделать задачу, которая в определенное время покажется сообщение и этим разбудит систему. Но только из состояния Suspended, не Hibernate, когда питание компьютера отключено.
- Romik©
- Авиаконструктор
- Сообщения: 263
- Зарегистрирован: Пн май 16, 2005 10:05 pm
- Откуда: Кольчугино
- Благодарил (а): 0
- Поблагодарили: 9 раз
- Контактная информация:
Привет, Алекс!
Подскажи пожалуйста. У меня функция в Run Script возвращает некую структуру, назовём её TObjectInfo
Type
TObjectInfo = record
FindWnd: Boolean;
WHandle: LongWord;
WWidth: Integer;
WHeight: Integer;
WTop: Integer;
WLeft: Integer;
WIsIconic: Boolean;
WIsWindowEnabled: Boolean;
WIsWindowVisible: Boolean;
WIsZoomed: Boolean;
WIsTOPMOST: Boolean;
end;
Иногда данные возвращаются, а иногда "Out Of Stack Range". Писать функции, которые будут по отдельности возвращать мне нужные параметры - не есть гуд... Что посоветуешь?
Подскажи пожалуйста. У меня функция в Run Script возвращает некую структуру, назовём её TObjectInfo
Type
TObjectInfo = record
FindWnd: Boolean;
WHandle: LongWord;
WWidth: Integer;
WHeight: Integer;
WTop: Integer;
WLeft: Integer;
WIsIconic: Boolean;
WIsWindowEnabled: Boolean;
WIsWindowVisible: Boolean;
WIsZoomed: Boolean;
WIsTOPMOST: Boolean;
end;
Иногда данные возвращаются, а иногда "Out Of Stack Range". Писать функции, которые будут по отдельности возвращать мне нужные параметры - не есть гуд... Что посоветуешь?
Экономте электроэнергию, выключайте Num Lock!