PDA

View Full Version : مشکل با acropdf



rasoulasaltala
دوشنبه 02 آذر 1388, 08:52 صبح
سلام
من میخوام تو برنامه pdf اجرا کنم برای این کار از activex acropdf استفاده کردم مشکل اینجاست که تو هر سیستمی که میخوای برنامه رو اجرا کنی باید این activex رو نصب کنی
راهی وجود نداره که این activex مثل بقیه object ها ثابت باشه
ممنون

دلفــي
دوشنبه 02 آذر 1388, 09:29 صبح
لطفا از ارسال تایپیک مشابه خودداری کنید !

شما قبلا همین سوال رو تو یه تایپیک مطرح کرده بودید !!!

به هر حال شما می تونید فایل ضمیمه که شامل ActiveX آکروبات هست رو بردارید و در کنار برنامه خودتون قرار داده و هنگام اجرای برنامه تون اون رو هم در سیستم کاربر رجیستر کنید ، مثلا در رویداد OnShow فرمتون !
این هم روش رجیستر کردن :



function ExecAndWait(const ExecuteFile, ParamString : string): boolean;
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
lpParameters := PChar(ParamString);
nShow := SW_HIDE;
end;
if ShellExecuteEx(@SEInfo) then
begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
Result:=True;
end
else Result:=False;
end;

procedure RegisterOCX(ocxPath: string);
type
TRegFunc = function : HResult; stdcall;
var
ARegFunc : TRegFunc;
aHandle : THandle;
begin
try
aHandle := LoadLibrary(PChar(ocxPath));
if aHandle <> 0 then
begin
ARegFunc := GetProcAddress(aHandle,'DllRegisterServer');
if Assigned(ARegFunc) then
begin
ExecAndWait('regsvr32','/s ' + ocxPath);
end;
FreeLibrary(aHandle);
end;
except
ShowMessage(Format('Unable to register %s', [ocxPath]));
end;
end;