كيفية فتح ملفات متعددة مع برنامج دلفي الاحتجاج عبر قذيفة مفتوحة

StackOverflow https://stackoverflow.com/questions/600490

سؤال

أنا حاليا باستخدام:

if ParamStr(1)<>'%1' then
begin
  address.Text:=ParamStr(1);
  autoconfigfile;
end;

لالتقاط اسم الملف الذي تم استخدامه لفتح الملف عن طريق ملف الجمعيات.

أريد الآن أن تطوير القدرة على العمل على عدة ملفات.أولا-هاء.إذا كنت تحديد 5 ملفات انقر بزر الماوس الأيمن واختر فتح باستخدام "EncryptionSystem".يجب إدخال التسجيل:

  reg.OpenKey('*\shell\Encrypt\command', true);
  reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"');
  reg.CloseKey;

إضافة إلى حق انقر فوق فتح القدرة على كافة الملفات.ثم أود أن ترغب في القدرة على الكشف عن

  1. كيف العديد من الملفات
  2. اسم كل ملف
هل كانت مفيدة؟

المحلول

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

الآن الحكم من الأسئلة الأخيرة

كيف يمكنني معرفة إذا كان مثيل واحد من البرنامج هو تشغيل ؟
كيف يمكنني إرسال سلسلة من مثيل واحد من برنامج دلفي إلى آخر ؟

كنت لا ترغب في السماح مثيلات متعددة من البرنامج ، لذلك سوف تحتاج إما إلى إعادة النظر في هذا القرار التصميم ، أو تنفيذ إحدى الطرق المبينة في جواب السؤال الثاني لإرسال سطر الأوامر المعلمة من ثانوية مثيلات البرنامج إلى الدرجة الأولى.يرجى ملاحظة أن توقيت مهم هنا لأن المقام الأول قد لا تكون مستعدة لتلقي البيانات من حالات أخرى.خصوصا مع حلول باستخدام مقبض الإطار من النموذج الرئيسي أو بعض أشكال الأنابيب أو ملف على أساس آلية التواصل سيشمل انتظار الدرجة الأولى أن تكون جاهزة.ولذلك قد يكون أسهل بكثير للسماح ببساطة مثيلات متعددة من البرنامج.

قد تحتاج أيضا إلى النظر في هذه قاعدة المعارف لـ Microsoft دخول أو البحث عن مزيد من المعلومات حول DDE تنفيذ الأوامر.

تحرير: هل يمكن أيضا محاولة مع "%*" بدلا من "%1" في مفتاح التسجيل ، كما هو مفصل في "القديمة الجديدة" تعليق الجواب من خلال جبر المذكورة.لم يتم اختبار هذا ، ولكن يبدو أن العمل.

نصائح أخرى

بالإضافة إلى كل شيء آخر ، يجب عليك استخدام %l بدلا من %1.بهذه الطريقة البرنامج الخاص بك سوف تحصل على كامل (الطويل) اسم الملف ليست قصيرة (DOS 8.3) واحد.

تحرير:إجابة روب السؤال في التعليقات

يبدو أنه من المستحيل تقريبا أن البحث عن '%l' و '%1' (بما في ذلك النسبة المئوية) إما باستخدام جوجل أو MSDN البحث.:( ومع ذلك ، وجدت وصف جيد جدا في الشيء الجديد القديم - '%1' autodetects ما إذا كان البرنامج يدعم أسماء الملفات الطويلة و يمر إما قصيرة أو طويلة اسم.يبدو أن كل النظم الحديثة تمرير اسم طويل إلا إذا exe الخاص بك لا يمكن العثور على (على الأقل هكذا فهمت ريمون فضح).

إذا كنت انتقل إلى مزيد من الانخفاض في التعليقات (البحث عن '%l' على الصفحة) سوف تجد قائمة من يدعم جميع المعلمات ، التي اتخذت من بعض الصفحات التي لا وجود لها بعد الآن (ولكن وجدت نسخة قديمة في أرشيف الإنترنت).هذه الصفحة لا تتضمن أي إشارة إلى وثائق Microsoft أيضا لذلك لا أستطيع أن أعطيك حجية الرابط :(

روب, شكرا على السؤال أنا الآن أعرف أكثر عن %1/%l من قبل :) +1 من أجل ذلك.

لست متأكدا ما كنت تريد حقا.ولكن يمكنك العثور على عدد من المعلمات مع:

ParamCount;

كل المعلمة ثم وجدت مع

ParamStr(1);
ParamStr(2);
ParamStr(3);

حتى ParamCount.

أنا ملاحظة أنه يمكنك فقط تسجيل مع %1.

وأود أن محاولة %1 %2 %3 %4 %5 الخ في التسجيل.

لم يسبق لي أن لعبت مع ملحقات shell أن ترى ما قد صنع هذا الفشل.كل ما قمت به هو تسجيل ملف الجمعيات وأنها تتصرف تماما كما كنت تتوقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top