استخراج الأيقونات من الملفات التنفيذية - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : مكتبة أكواد المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=111) +---- قسم : مكتبة أكواد .net (http://vb4arb.com/vb/forumdisplay.php?fid=117) +---- الموضوع : استخراج الأيقونات من الملفات التنفيذية (/showthread.php?tid=6382) |
استخراج الأيقونات من الملفات التنفيذية - RaggiTech - 17-10-12 كاتب الموضوع : نجيب المجيدي
تستطيع شراء قرص مضغوط يحتوي عدداً من الأيقونات لاستخدامها في برامجك وكذلك تستطيع الإبحار في الوب بحثاً عنها ومن الممكن أن تستعين بأحد الأصدقاء قائلاً: "يا منعاه أخوك في الله محتاج أيقونة , لاتردنا خائب لي منعك" (حلوه اللهجة الصنعانية !!! ) , ولكن هل تعلم أن ما تبحث عنه قد يكون بين يديك و أنت لا تعلم , نعم أنا أتحدث عن الأيقونات الموجودة داخل الملفات التنفيذية وموضوعنا اليوم سيكون حول كيفية استخراج هذه الأيقونات من الملفات التنفيذية , فإلى الموضوع... في البداية سنقوم بالتصريح عن دوال API التالية: كود : Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" _ الدالة ExtractIconEx تحتوي على خمسة ممررات عى النحو التالي: lpszFile يستخدم لتمرير مسار الملف التنفيذي. nIconIndex يستخدم لتمرير رقم فهرس المصدر المراد استخراجه , وإذا مررنا هنا -1 فستعيد الدالة العدد الكلي للأيقونات المحتواه في الملف. phiconLarge مؤشر لمصفوفة من المقابض (handles) للأيقونات الكبيرة. phiconSmall مؤشر لمصفوفة من المقابض (handles) للأيقونات الصغيرة. nIcons يستخدم لتمرير عدد الأيقونات المراد استخراجها من الملف. الدالة ExtractIcon تحتوي على ثلاثة ممررات على النحو التالي: hInst يستخدم لتمرير مقبض التطبيق الذي قام باستدعاء الدالة. lpszExeFileName يستخدم لتمرير مسار الملف التنفيذي. nIconIndex يستخدم لتمرير رقم فهرس المصدر المراد استخراجه , وكما في الدالة السابقة إذا مررنا -1 فستعيد الدالة العدد الكلي للأيقونات المحتواه في الملف. الدالة DestroyIcon تحتوي على ممرر واحد لتمرير رقم مقبض الأيقونة لتحريرها من الذاكرة. ملاحظة: المعلومات أعلاه مختصرة , يرجى الرجوع لمكتبة MSDN للحصول على معلومات تفصيلية. في المثال المرفق قمت باستخدام الدالة ExtractIconEx للحصول على عدد الأيقونات في الملف بالشكل التالي: كود : Private Function GetIconsCount(ByVal strFilePath As String) As Integer و في الكود التالي جملة دوران من الصفر إلى العدد الذي أعادته الدالة السابقة , حيث يتم استخراج الأيقونات واحدة تلو الأخرى باستخدام الدالة ExtractIcon ثم كتابتها إلى المجلد الهدف , الذي يقوم المستخدم بتحديده , و أخيراً بعد حفظ كل أيقونة يجب استدعاء الدالة DestroyIcon مع تمرير مقبض الأيقونة لها و الذي أعادته الدالة ExtractIcon , كود : Private Sub ExtractFromExec(ByVal fiSourceFile As IO.FileInfo) |