Вы можете использовать Service for foreground или NotificationListenerService.
Есть ли способ сделать это?
blockquote>Ответ прост: нет, вы не можете этого сделать. Когда вы объявляете функцию, вы должны включить ее полный список аргументов, тип возвращаемого значения и т. Д.
ЭТО неверно:
type
TMyFunc = function(inP : Integer): outP : Boolean;
функция не может иметь два типа возврата (как outP, так и Boolean)!
INSTEAD:
type
outP = Longint; // or whatever you want outP to be.
TMyFunc1 = function (inP : Integer): outP;
TMyFunc2 = function (inP : Integer): Boolean;
теперь вы можете определить переменную функции, скажем, doit1, и заставить ее определение иметь тип TMyFunc1. аналогично: doit2 имеет тип TMyFunc2.
var
doit1 : TMyFunc1;
doit2 : TMyFunc2;
если у вас есть функции:
const
DllName1 = 'MyFirstDLL.DLL';
DllName2 = 'MySecondDLL.DLL';
function TestFunc1(inP : Integer): outP; external DllName1;
function TestFunc2(inP : Integer): Boolean; external DllName2;
, тогда вы можете назначить эти функции заполнителям doit1, doit2:
procedure AssignPlaceholders;
begin
doit1 := TestFunc1;
doit2 := TestFunc2;
end;
ПРИМЕЧАНИЕ. Вы должны объявить типы заполнителей (TMyFunc1, TMyFunc2) Точно так же, как и реальные функции, включая спецификаторы, такие как stdcall, cdecl и т. Д.
После вызова AssignPlaceholder вы можете вызывать doit1 и / или doit2 точно так же, как и любую другую функцию.