تخطي رسالة Unregistered skin has been loaded.
#1
بعد التحية والسلام
في الاونة الاخيرة اضافت مركبات AlphaControls ستايلات مدفوعة ويمكن تجربتها مجانا لاكن ستظهر رسالة  في بداية التشغيل محتواها
كود :
Unregistered skin has been loaded.
If you have a key for this skin, please insert it in the KeyList.

.png   2017-05-15_193454.png (الحجم : 16.86 ك ب / التحميلات : 31)

فقمت بالبحث في قوقل ووجدت  هذا الحل المبدئ الذي يقوم بالغاء الرسالة المزعجة
PHP كود :
program Project1;
 
uses
  Windows
FormsUnit1;
 
var
  OrigAddrPointer nil;
 
{$R *.res}
 
function InterceptedMessageBoxA(WndHWNDlpTextlpCaptionPAnsiCharuTypeUINT): Integerstdcall;
type
  TOrigMessageBoxA 
= function(WndHWNDlpTextlpCaptionPAnsiCharuTypeUINT): Integerstdcall;
begin
  
if lpCaption <> 'Unregistered skin' then
    Result 
:= TOrigMessageBoxA(OrigAddr)(WndlpTextlpCaptionuType);
end;
 
function Intercept(const OldProcNewProcFARPROC): Boolean;
var
  ImportEntryPImageImportDescriptor;
  ThunkPImageThunkData;
  ProtectDWORD;
  ImageBaseCardinal;
  DOSHeaderPImageDosHeader;
  NTHeaderPImageNtHeaders;
begin
  Result 
:= False;
  if OldProc nil then Exit;
  if NewProc nil then Exit;
  ImageBase := GetModuleHandle(nil);
  DOSHeader := PImageDosHeader(ImageBase);
  NTHeader := PImageNtHeaders(DWORD(DOSHeader) + DWORD(DOSHeader^._lfanew));
  ImportEntry := PImageImportDescriptor(
    DWORD(ImageBase)+
    DWORD(NTHeader^.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress)
  );
  while ImportEntry^.Name <> do begin
    Thunk 
:= PImageThunkData(DWORD(ImageBase) + DWORD(ImportEntry^.FirstThunk));
    while Pointer(Thunk^._function) <> nil do begin
      
if Pointer(Thunk^._function) = OldProc then begin
        
if VirtualProtect(@Thunk^._functionSizeOf(DWORD), PAGE_EXECUTE_READWRITEProtectthen
        
try
          InterlockedExchange(Integer(Thunk^._function), Integer(NewProc));
          Result := True;
        finally
          VirtualProtect(@Thunk^._functionSizeOf(DWORD), ProtectProtect);
          FlushInstructionCache(GetCurrentProcess, @Thunk^._functionSizeOf(DWORD));
        end;
      end else Inc(PAnsiChar(Thunk), SizeOf(TImageThunkData32));
    end;
    ImportEntry := Pointer(Integer(ImportEntry) + SizeOf(TImageImportDescriptor));
  end;
end;
 
begin
  OrigAddr
:=GetProcAddress(GetModuleHandle(user32), 'MessageBoxA');
  Intercept(OrigAddr, @InterceptedMessageBoxA);
 
  Application
.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1Form1);
  Application.Run;
end
[-] كل من 2 users say قال شكرا ل onexite على المشاركة المفيدة
  • bassem_43, محمد عبد العزيز
الرد
#2
جميل جدا ،
عند تنفيذ البرنامج للتوافق مع بيئة 64 بت ينشأ الخطأ التالي :




إقتباس :un objet constante ne peut etre passé comme parametre var


تحديدا في هذا السطر :
كود :
InterlockedExchange(Integer(Thunk^._function), Integer(NewProc));
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم