المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيفية فتح ملف chm وبمعنى أصح أريد فتح أحد مكوناتة


عبود عبود
23-10-2013, 02:26 PM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

سؤالى هو كيفية فتح ملف chm وبمعنى أصح أريد فتح أحد مكوناتة حيث من المعروف أن ملف الـــ chm مكون من ملف أو عدة ملفات htm

أريد طريقة للوصول لفتح أى مكون من مكونات ملف الـــ chm غير طريقة فك ضغطة لأن الحجم سيكبر فى هذة الحالة

مثال لما أريدة هو عند إضافة أى سكريبت من الأكشن وفى حالة تعديلة يتم الوصول مباشرة إلى الجزء الخاص المراد الإستفسار عنة من خلال ملف الهلب الخاص بالبرنامج والذى هو صيغتة chm

طبعا لفتح ملف الـــ chm يكون عن طريق الدالة File.Run لمن لا يعرف !!!!! أما المطلوب هو الفتح المباشر أو إختيار مباشر لأحد مكوناتة .

طبعــــا السؤال للمحترفيـــــــن

http://imageshack.us/a/img823/1600/14wzrwkjpg.gif

abohmam
23-10-2013, 06:40 PM
وعليكم السلام ورحمة الله وبركاته

حياك الله أخى عبود

بعيد عن برمجة الأوتوبلاي هناك برامج كثيرة تقوم بفك محتوى ملف CHM مثل

http://gridinsoft.com/chm.php

رابط مباشر

http://www.gridinsoft.com/downloads/chm.zip

وبعد تحميله تستطيع استخدام ملفات HTML

ان شاء الله الأخوة المتخصصين يفيدوك حول سؤالك التخصصي :abc_022:

عبود عبود
23-10-2013, 07:06 PM
تحية تقدير لك أخى أبوهمام

لكن العيب الذى أريد تجنبة هو إذا تم الفك سيكون الحجم حوالى 30 ميجا بايت أما إذا تم معرفة أى طريقة سوف أوفر الكثير من الحجم
حيث الحجم قبل الفك هو حوالى 10 ميجا فقط .............. أريد تقليل حجم المشروع قدر الإمكان .

مع العلم أن الأتوبلاى كبرنامج أساسى يعمل ذلك حيث يعمل على الإستدعاء من ملف الهلب بهذة الطريقة
فأنا أحاول قدر الإمكان تقليد عمل البرنامج بالبرنامج نفســـــة

http://www.abc4web.net/vb/images/icons/icon6.png إذا لم أوفق فى إيجاد حل من السادة الزملاء سوف أعمل على ضغطة بـــــ Zip وأتعامل معة .

ثامر أبو بلقيس
23-10-2013, 08:04 PM
السلام عليكم
لا أعرف قد يكون هو المطلوب أم لا
على كل هذا ملف بصيغة chm
http://www.gulfup.com/?lJgD2z

بعد فك يوضع في المجلد "Docs"
في الــ global function
function CloseHelp()
windows = Window.EnumerateTitles();
window_name = "Test";
-- Loop through the table of windows.
for handle, title in windows do
result = String.Find(title, window_name, 1, false);
if (result ~= -1) then
Window.Close(handle, CLOSEWND_SENDMESSAGE);
end
end
end

بعدها لو أردنا فتح ملف chm في الصفحة الأولى
CloseHelp()
File.Run("HH.EXE -mapid 1001 ms-its:".._SourceFolder.."\\AutoPlay\\Docs\\Test.chm", "", _SourceFolder.."\\Autoplay\\Docs", SW_MAXIMIZE, false);


استدعاء محتوى الصفحة الثانية
CloseHelp()
File.Run("HH.EXE -mapid 1002 ms-its:".._SourceFolder.."\\AutoPlay\\Docs\\Test.chm", "", _SourceFolder.."\\Autoplay\\Docs", SW_SHOWNORMAL, false);


الصفحة الثالثة
CloseHelp()
File.Run("HH.EXE -mapid 1003 ms-its:".._SourceFolder.."\\AutoPlay\\Docs\\Test.chm", "", _SourceFolder.."\\Autoplay\\Docs", SW_SHOWNORMAL, false);


هذا ماوجدت حاليا
موفق :abc_152:

عبود عبود
23-10-2013, 08:38 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية

ممتـــــــاز

نعــــــــم بالفعـــــــل هو المطلـــــــوب ........... ولكن كيف أعرف أرقام الصفحات من أى رقم ستبدأ ؟ هل هناك طريقة لمعرفة أرقام الصفحات ؟

وهل هذة " mapid 1003 ms-its " كانت أرقام صفحات كما أظن أم هاندل أم ماذا ؟

النصل القاطع
23-10-2013, 09:45 PM
هى بارامترات تمرر للتنفيذى hh.exe
12030 is the help context id to pull up.
ms-its: is a literal string (protocol handler)

يوجد هذا الكوماند لاين الذى يستخدم hh.exe لكن ببارامترات أخرى لفتح صفحة محددة بالإسم
سأتركك لمحاولت إمراره عبر الأوتوبلاى
و سأحاول من تاحيتى
C:\>HH.EXE mk:@MSITStore:C:/xTemp/XMLconvert.chm::/Bekannte_Fehler/errxml3.htm

فى كل الحالات أنصحك بمراجعة هذه الصفحة
http://www.help-info.de/en/Help_Info_HTMLHelp/hh_command.htm

عبود عبود
23-10-2013, 09:58 PM
فى مثال أبوبلقيس فهو ناجح 100% .............. ولكن لا ينطبق أو لا تنطبق الأرقام مع ملف الأتوبلاى " ملف الهلب العام "

فقط أريد أن اعرف كيف يمكن معرفة هذة البارامترات

عبود عبود
23-10-2013, 10:53 PM
شكـــــــرا أبو بلقيس مليـــــــــون شكـــــــــــر

شكـــــــــرا خالد 999 ألف شكـــــــــــر فقط :abc_065:

تم الوصول إلى كتابة البارامتر على هيئة HH.EXE ms-its: ثم يكون موصول مع مسار الملف المراد فتحة الذى صيغتة chm ثم موصول مع المسار الكامل لملف htm المراد فتحة

فيكون الشكل النهائى لفتح الهلب الخاص بــ Application.GetDialogProperties فقط يكون كالتالى :

File.Run("HH.EXE ms-its:".._SourceFolder.."\\AutoPlay\\Docs\\amshelp.chm::/Program_Reference/Actions/Application.GetDialogProperties.htm", "", _SourceFolder.."\\Autoplay\\Docs", SW_SHOWNORMAL, false);

:abc_012: أو يوضـــع البارامتر فى مكانة المخصص لة كالتالى :

File.Run("HH.EXE", "ms-its:".._SourceFolder.."\\AutoPlay\\Docs\\amshelp.chm::/Program_Reference/Actions/Application.GetDialogProperties.htm", _SourceFolder.."\\Autoplay\\Docs", SW_SHOWNORMAL, false);


:abc_138: أشكركــــــم على حســـــــن التعاون :abc_138:

وبهذا تم الحصـــــــول على الإجـــابة بشكل سليـــــــــم

النصل القاطع
23-10-2013, 11:12 PM
و أنا أشكرك ضعف ما ذكرت
لمشاركتنا بالحل
الذى قد يتطور فى وقت لاحق لبلجن

الملف hhctrl.ocx الموجود بالويندوز قد يخضع لجراحة قريبا

عبود عبود
23-10-2013, 11:39 PM
الملف hhctrl.ocx الموجود بالويندوز قد يخضع لجراحة قريبا

فى الإنتظـــــــار ولكن ما هو وظيفتة قبل الجراحة ؟

النصل القاطع
23-10-2013, 11:47 PM
ملفات ocx هى ملفات تحكم
و طالما التنفيذى ملحق معه ملف تحكم
فهذا يعطى الفرصة للتحكم عن طريقه فى التنفيذى و ليس عبر الكوماند لاين

ocx و dll يتشابهون كثيرا
لكن ocx يتم إستدعاؤها عن طريق luacom
غالبا بطريقة create object

عبود عبود
23-10-2013, 11:52 PM
حســــــنا أشركنــــــا معــــــك فى الجـــــديد لديك دوما ولا تنسانا .......... تحيـــــاتى :abc_022:

ثامر أبو بلقيس
25-10-2013, 01:41 PM
موفق أخي عبود في مسعاك النبيل :abc_152:

ثامر أبو بلقيس
15-03-2014, 06:55 PM
:abc_152::abc_152:

أبو فارس
15-03-2014, 08:13 PM
مناقشة بفائدة عظيمة

جزيل الشكر لكم جميعا لتحقيق الفائدة