Type
TRegisterServiceProcess = Function (dwProcessId: DWORD; dwType: DWORD): DWORD; StdCall;
Var
RegisterServiceProcess : TRegisterServiceProcess;
...
RegisterServiceProcess:= GetProcAddress(LoadLibrary('kernel32.dll'), 'RegisterServiceProcess');
If Not Assigned(RegisterServiceProcess) Then ShowMessage('RegisterServiceProcess NOT FOUND!!!') Else RegisterServiceProcess(<ProcID>, <dwType>);
Смешиваем системы
прога должна проверить win32platform
и если там win9x (а не NT)
обратиться к registerserviceprocess (которого в NT нет, походу)
тобишь если запустить под 9x/МЕ, то должна вызвать ф-цию, а если под
NT/XP то идти далше. Но, видимо, функция определяется при запуске
программы, посему ХР сразу кричит, что нет такой ф-ции в KERNEL32.dll
Как мне воплотить задуманное?
Пробовал создать дополнительный модуль, который запускается главной
прогой, если она обнаружила 9х/МЕ, ProcID передается в параметрах.
Первый релиз провалился, тк у МЕ ProcID невлезает в интегер. Знаю шо
надо прибавить, но уже лень, потому что использовать лишние ехе-хи
нежелательно!
Посоветуйте чего-нить, плиз!
Цитата:
Originally posted by kkip
Delphi:
прога должна проверить win32platform
и если там win9x (а не NT)
обратиться к registerserviceprocess (которого в NT нет, походу)
тобишь если запустить под 9x/МЕ, то должна вызвать ф-цию, а если под
NT/XP то идти далше. Но, видимо, функция определяется при запуске
программы, посему ХР сразу кричит, что нет такой ф-ции в KERNEL32.dll
Как мне воплотить задуманное?
Пробовал создать дополнительный модуль, который запускается главной
прогой, если она обнаружила 9х/МЕ, ProcID передается в параметрах.
Первый релиз провалился, тк у МЕ ProcID невлезает в интегер. Знаю шо
надо прибавить, но уже лень, потому что использовать лишние ехе-хи
нежелательно!
Посоветуйте чего-нить, плиз!
Delphi:
прога должна проверить win32platform
и если там win9x (а не NT)
обратиться к registerserviceprocess (которого в NT нет, походу)
тобишь если запустить под 9x/МЕ, то должна вызвать ф-цию, а если под
NT/XP то идти далше. Но, видимо, функция определяется при запуске
программы, посему ХР сразу кричит, что нет такой ф-ции в KERNEL32.dll
Как мне воплотить задуманное?
Пробовал создать дополнительный модуль, который запускается главной
прогой, если она обнаружила 9х/МЕ, ProcID передается в параметрах.
Первый релиз провалился, тк у МЕ ProcID невлезает в интегер. Знаю шо
надо прибавить, но уже лень, потому что использовать лишние ехе-хи
нежелательно!
Посоветуйте чего-нить, плиз!
Эх, молодой человек! Ведь DLL потому и DLL, что они Dynamic Linking! А ты небось функцию RegisterServiceProcess вяжешь с DLL статически, т.е. объявляя в коде что-то типа
Function RegisterServiceProcess(dwProcessId: DWORD; dwType: DWORD): DWORD; StdCall; External 'kernel32.dll';
Ссылка на эту функцию лежит в самом экзешнике (ее туды пихает компоновщик), и виндоза при загрузке модуля, не находя ентой функции, ессно матерится. В то время как можно сделать так:
Код: