البرنامج النصي لربط ملحق لبرنامج
-
03-07-2019 - |
سؤال
يقوم عميلي باستبدال MS Office بـ OpenOffice في بعض محطات العمل.يقوم برنامجي بتصدير ملف إلى Excel باستخدام الامتداد .xml (باستخدام التنسيق المفتوح) ويفتحه باستخدام البرنامج المرتبط الحالي (باستخدام ShellExecute)
تكمن المشكلة في أن OpenOffice لا يسجل الامتداد .xml المرتبط به.
يعمل الارتباط يدويًا بشكل جيد، ولكنني أرغب في إنشاء .reg أو شيء من هذا القبيل لتغيير الإعداد بسهولة.
أنا أبحث في التسجيل في جهاز الكمبيوتر مع التغيير الذي تم إجراؤه بالفعل، ولكن
"HKEY_CLASSES_ROOT\.xml"
لا يحتوي المفتاح على أي شيء يشير إلى OpenOffice.
أين يتم تخزين الجمعية؟كيف يمكنني عمل برنامج نصي للقيام بهذا العمل؟
المحلول
يتم تخزين الارتباط الحقيقي في المفتاح الذي "HKEY_CLASSES_ROOT\.xml"
نقاط ل.
على جهازي، القيمة الافتراضية لهذا المفتاح تقول "xmlfile"
, ، على الأرجح أن هذا هو نفسه بالنسبة لك.
لذلك دعونا نذهب إلى "HKEY_CLASSES_ROOT\xmlfile"
.هناك يمكنك رؤية (وتغيير) الأمر الذي سيتم استخدامه لتشغيل هذا النوع من الملفات:
HKEY_CLASSES_ROOT\xmlfile\shell\open\command
يستخدم Windows هذا النوع من إعادة التوجيه لتعيين امتدادات ملفات متعددة لنفس نوع الملف، وبالتالي لنفس التطبيق.
تحت "HKEY_CLASSES_ROOT\xmlfile\shell"
هناك العديد من المفاتيح الفرعية التي تشبه "الأفعال" لما يمكنك فعله بالملف.مرة أخرى، القيمة الافتراضية لـ "shell"
يقرر المفتاح أي من هذه الأفعال سيتم استخدامه إذا قمت بالنقر المزدوج على الملف.في حالتي هذا هو "open"
.
خاتمة:
بهذه المعرفة، فإن أسهل طريقة لجعل الارتباط قابلاً للبرمجة النصية هي استخدام regedit لتصدير ملف .reg يحتوي على هذا التغيير، وتطبيقه على الكمبيوتر المستهدف بنقرة مزدوجة أو:
regedit /s new_xml_association.reg
أو (إذا كنت تستخدم نظام XP أو أعلى وتعرف ما تفعله) فاستبدل القيمة الحالية بما يلي:
reg add "HKEY_CLASSES_ROOT\xmlfile\shell\open\command" /ve /d "path\to\program %1"
على أية حال، نظرة أعمق reg add/?
ينصح الأمر.الحل الأول أكثر أمانا.
نصائح أخرى
والنظر في assoc
قيادة دوس:
وC:> ASSOC /؟ يعرض أو يعدل ملف التمديد جمعيات
وASSOC [.ext [= [نوع الملف]]]
و.ext تحديد ملف تمديد لربط نوع الملف مع FILETYPE تحديد ملف اكتب لربط مع الملف تمديد
ونوع ASSOC بدون معلمات ل عرض ملف الجمعيات الحالية. إذا تم استدعاء ASSOC مع مجرد ملف التمديد، فإنه يعرض الحالي اقتران الملف لهذا الملف تمديد. تحديد أي شيء ل ملف نوع، وسوف الأمر حذف جمعية للملف التمديد.
اقتباس فقرة>استخدم تنفيذ أوبن أوفيس COM لفتح الملف بدلا من ذلك.
وجيد مثال بسيط هنا: http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html
ولقد عدت للتو عبر هذا في حين يبحثون عن الجواب نفسه. لقد وجدت الحل الأفضل استخدام API ويندوز FindExecutable، التي يمكن استخدامها من C # باستخدام PInvoke.