PDA

View Full Version : سوال: خواندن آدرس تمام فایل های باز شده در یک selection که با برنامه ما باز میشود



sabloger
دوشنبه 15 فروردین 1390, 00:20 صبح
با سلام خدمت دوستان گرامی

بنده فایلی (مثلا abc.) را با ثبت در رجیستری متعلق به برنامه خودم کردن و با کلیک روی آن برنامه من باز میشود

و همچنین یک منو آیتم هم براش اد کردم

حالا میخوام وقتی کاربر چندتاش رو با هم سلکت میکنه و باز میکنه آدرس همه اون فایل ها رو بدست بیارم

و این که در آن واحد فقط یک نمونه از برنامه من در حال اجرا باشه

و اون آدرسها به برنامه در حال اجرا فرستاده بشه

و البته اگر فقط یک فایل باز شد، آدرس اون به برنامه ارسال بشه

من خودم برای این کار این کد رو نوشتم:
if (System.Diagnostics.Process.GetProcessesByName(Sys tem.Diagnostics.Process.GetCurrentProcess().Proces sName).Length > 2)
{

Environment.Exit(0);
}

اما مشکل اینه که نمیدونم چطور آدرس فایل جدید رو به برنامه باز بفرستم و بعد برنامه رو ببندم!!


خیلی ممنونم از کمکاتون:قلب::قلب::قلب::قلب::ق ب::قلب::قلب::قلب::قلب::قلب:

Felony
دوشنبه 15 فروردین 1390, 06:43 صبح
در اینگونه موارد یک برنامه واسط مینویسند ، اگر فایل ها دسته جمعی انتخاب و باز بشن آدرسشون به صورت Command Line و به شکل زیر برای برنامه ارسال میشه :

"C:\...\1.txt"
"C:\...\2.exe"
"C:\...\3.dat"

که میتونید با توابع Command اونها رو بخونید ، اگر میخواین چیزی مثل نسخه های 2003 آفیس پیاده کنید که با انتخاب هر فایل اون فایل در یک برنامه اجرا بشه باید یک برنامه واسط بنویسید چون رجیستری به ازای هر فایل یک بار برنامه معرفش شده رو باز میکنه و آدرسش رو بهش تحویل میده .

شما یک برنامه واسط مینویسی که هیچ فرمی نداره و جایی نمایش داده نمیشه ، وظیفش هم این هست که بعد از باز شدن و دریافت پارامتر Command Line که حاوی آدرس و اسم فایل مورد نظر باشه اون رو به برنامه اصلی شما که الان باز هست با روش هایی مثل DDE ارسال کنه و پس از ارسال بسته بشه ؛ در برنامه اصلی خودتون هم این آدرس رو دریافت و پردازش میکنید و عملیات مورد نظر رو انجام میدید .

sabloger
دوشنبه 15 فروردین 1390, 09:14 صبح
با سلام و تشکر از جوابی که دادید

تا حدودی متوجه شدم

اما میشه این روش DDE رو کمی توضیح بدین؟

با تشکر

sabloger
دوشنبه 15 فروردین 1390, 12:47 عصر
از اساتید کسی نبـــــــــــــــــــــــ ـــــــــــــــــــود؟

sabloger
دوشنبه 15 فروردین 1390, 15:52 عصر
آقا نبـــــــــــــــــــــــ ــــــــــــــــــــــود؟

Felony
سه شنبه 16 فروردین 1390, 06:36 صبح
اما میشه این روش DDE رو کمی توضیح بدین؟
DDE مخفف عبارت Dynamic Data Exchange هست ، همین عبارت رو گوگل کنید مطالب زیادی پیدا میکنید ، یکی از روش ها این هست که یک Message Handler برای برنامه اصلی بنویسید و مثلا موقعی که پیغام WM_FileArrived به برنامه رسید اون رو پردازش کنید و اسم فایل رو به دست بیارید و در برنامه واسط که وظیفه اجرا و ارسال نام فایل رو داره با تابع SendMessage یا PostMessage آدرس فایل رو برای برنامه به همراه پیغام WM_FileArrived بفرستید تا Message Handler برنامه اصلی که نوشتید پیغام رو دریافت و نام فایل رو استخراج کنه .

sabloger
چهارشنبه 17 فروردین 1390, 09:09 صبح
سلام دوستان عزیز

من در مورد DDE که استاد گرامی آقای تاجیک فرموده بودن سرچی توی نت زدم اما فقط یک آموزش از اون به زبان VB گرفتم

اگر از اساتید محترم کسی هست که منبعی بتونه در اخیار من قرار بده ممنون میشم