PDA

View Full Version : سوال: گرفتن آدرس باقی فایل هایی که با open with به برنامه ارسال شده اند



ghasem31372
سه شنبه 03 آبان 1401, 05:27 صبح
با سلام خدمت شما دوستان عزیز.

عنوان سوالم رو فکر کنم نتونستم خوب مطرح کنم.

من یک برنامه مدیا پلیر نوشتم(با استفاده از کامپوننت مدیا پلیر).من میخوام ببینم چطوری وقتی که یک ویدو رو با گزینه open with برنامه من رو انتخاب میکنه، به لیست پخش کامپوننت همه ویدو های اون پوشه رو اضافه کنه(مثل kmplayer).

با تشکر از دوستان برنامه نویس.

ROSTAM2
سه شنبه 03 آبان 1401, 08:30 صبح
سلام.
باید از PlayList خود مدیا پلیر کمک بگیری.


WMPLib.IWMPPlaylist playlist = wmp.playlistCollection.newPlaylist("myplaylist");
WMPLib.IWMPMedia media;
if (ofdSong.ShowDialog() == DialogResult.OK)
{
foreach (string file in ofdSong.FileNames)
{
media = wmp.newMedia(file);
playlist.appendItem(media);
}
}
wmp.currentPlaylist = playlist;
wmp.Ctlcontrols.play();

god of war 313
سه شنبه 03 آبان 1401, 16:35 عصر
سلام.
باید از PlayList خود مدیا پلیر کمک بگیری.


WMPLib.IWMPPlaylist playlist = wmp.playlistCollection.newPlaylist("myplaylist");
WMPLib.IWMPMedia media;
if (ofdSong.ShowDialog() == DialogResult.OK)
{
foreach (string file in ofdSong.FileNames)
{
media = wmp.newMedia(file);
playlist.appendItem(media);
}
}
wmp.currentPlaylist = playlist;
wmp.Ctlcontrols.play();



سلام دوست عزیز منظور از myplaylist همون آدرسی هست که به برنامه ارسال میشه؟

ROSTAM2
سه شنبه 03 آبان 1401, 17:31 عصر
آدرسی که به برنامه ارسال می شه به ورودی رویداد StartUp از Project ارجاع داده می شه. توی سی شارپ نمی دونم اگ دزست یادم باشه پروژه های وی.بی ییک رویداد اضافه بنام Start*NextInstance یا همچین چیزی داشت برای بقیه پارامتر هایی که بهش ارجاع داده می شه و هر کدوم رو تک ب تک دریافت می کنه کافیه اون آدرس هارو به پلی لیست اضافه کنید.

god of war 313
یک شنبه 08 آبان 1401, 16:41 عصر
سلام دوستان من خوب متوجه نشدم.
هنوز تو مرحله آموزشم بی زحمت اگه امکانش هست سورسی قرار بدید.

ROSTAM2
یک شنبه 08 آبان 1401, 18:44 عصر
سلام مجدد
من تو خصوصیات پروژه Windows Application از C#‎‎‎‎‎‎ گشتم ولی چیزی شبیه به آیتم Make Single instance application موجود در vb پیدا نکردم.
همچنین قسمت Application Events هم نداره!

154139

ROSTAM2
دوشنبه 09 آبان 1401, 16:46 عصر
پیداش کردم:

در ویژوال بیسیک با استفاده از گزینه Make single instance Application و استفاده از رویدادهای زمان اجرای پروژه پارامترهایی که با command به نرم افزار فرستاده می شه، هر بار پارامتر ها به همون برنامه اجرا شده قبلی ارسال می شه و دیگه برنامه بصورت مجزا اجرا نمی شه.

و از ونجایی که در خصوصیات پروژه Windows application از C#‎‎‎‎‎‎ این ویژگی ها موجود نیست برای ایجاد یک Single instance app از کلاس Mutex (https://saebamini.com/Allowing-only-one-instance-of-a-C-app-to-run/#:~:text=Making%20a%20singleton%20application%2C%2 0i.e.,is%20a%20computer%2Dwide%20lock.)استفا ه می شه:

:افسرده: نمی دونم چرا از دیشب paint با تاخیر اجرا می شه. فک کنم ویندوز خراب شده!

Allowing Only One Instance of a C#‎‎‎‎‎‎ Application to Run (https://saebamini.com/Allowing-only-one-instance-of-a-C-app-to-run/#:~:text=Making%20a%20singleton%20application%2C%2 0i.e.,is%20a%20computer%2Dwide%20lock.)

ROSTAM2
سه شنبه 10 آبان 1401, 17:04 عصر
سلام مجدد:
در این تاپیک در مورد ارسال command هنگامی که برنامه اجراست بحث شده:

vb.net - How to send a command to a running application via commandline - Stack Overflow (https://stackoverflow.com/questions/8074944/how-to-send-a-command-to-a-running-application-via-commandline)

ROSTAM2
جمعه 13 آبان 1401, 16:19 عصر
سلام دوستان من خوب متوجه نشدم.
هنوز تو مرحله آموزشم بی زحمت اگه امکانش هست سورسی قرار بدید.

منظور سازنده تاپیک منوی Open With از ویندوز هست که می خواند از طریق اون منو برنامه رو اجرا کنند بهمراه پارامترهای Command و می خواند زمانی ک چندین فایل انتخاب می شه آدرس همه فایلها همزمان به برنامه ارسال بشه:
154157

این هم نمونه سورس کد که برای Shell Extension با C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ پروژشو ساختن (https://github.com/dwmkerr/sharpshell/archive/refs/heads/main.zip)

و این هم منبعش در گیت هاب (https://github.com/dwmkerr/sharpshell)

و این مقاله های در مورد ShellExtension در Code Project





.NET Shell Extensions - Shell Context Menus (http://www.codeproject.com/Articles/512956/NET-Shell-Extensions-Shell-Context-Menus)
.NET Shell Extensions - Shell Icon Handlers (http://www.codeproject.com/Articles/522665/NET-Shell-Extensions-Shell-Icon-Handlers)
.NET Shell Extensions - Shell Info Tip Handlers (http://www.codeproject.com/Articles/527058/NET-Shell-Extensions-Shell-Info-Tip-Handlers)
.NET Shell Extensions - Shell Drop Handlers (http://www.codeproject.com/Articles/529515/NET-Shell-Extensions-Shell-Drop-Handlers)
.NET Shell Extensions - Shell Preview Handlers (http://www.codeproject.com/Articles/533948/NET-Shell-Extensions-Shell-Preview-Handlers)
.NET Shell Extensions - Shell Icon Overlay Handlers (http://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers)
.NET Shell Extensions - Shell Thumbnail Handlers (http://www.codeproject.com/Articles/563114/NET-Shell-Extensions-Shell-Thumbnail-Handlers)
.NET Shell Extensions - Shell Property Sheets (http://www.codeproject.com/Articles/573392/NET-Shell-Extensions-Shell-Property-Sheets)



گر چه ShellExtension ی کم پیچیده و وقت گیر هست ولی شیوه اصولی رجیستر کردن یک Application در ویندوز همین شیوه ShellExtension هستش.

ولی اگه بخوایم ساده و سریع بدون این همه کدنویسی برنامه رو بصورت محدود رجیستر کنیم می شه از طریق رجیستری ویندوز مستقیما اقدام کرد: Application Registration - Win32 apps | Microsoft Learn (https://learn.microsoft.com/en-us/windows/win32/shell/app-registration)

Mahmoud.Afrad
دوشنبه 16 آبان 1401, 19:16 عصر
با سلام خدمت شما دوستان عزیز.

عنوان سوالم رو فکر کنم نتونستم خوب مطرح کنم.

من یک برنامه مدیا پلیر نوشتم(با استفاده از کامپوننت مدیا پلیر).من میخوام ببینم چطوری وقتی که یک ویدو رو با گزینه open with برنامه من رو انتخاب میکنه، به لیست پخش کامپوننت همه ویدو های اون پوشه رو اضافه کنه(مثل kmplayer).

با تشکر از دوستان برنامه نویس.

وقتی آدرس یک فایل رو دارید کافیه ابتدا فولدر رو بدست بیارید و بعد در اون فولدر جستجو کنید و فایل های با پسوند مورد نظرت رو به پلی لیست آضافه کنید.
از کلاسهای فضای نام system.io استفاده کنید.