PDA

View Full Version : سوال: اجرا شدن برنامه نوشته شده به جای برنامه اصلی



mvb_mehran
یک شنبه 05 اردیبهشت 1389, 18:49 عصر
با سلام
من یه برنامه مثل نت پد نوشتم می خوام این برنامه به جای نت پد اصلی ویندوز اجرا بشه.
و در موقعی که ما یه فایل تکست رو تو ویندوز اجرا میکنیم . برنامه ما لود شود و آن را نمایش دهد.
مرا راهنمایی کنید دوستان.
با تشکر:لبخند::لبخند:

mvb_mehran
یک شنبه 05 اردیبهشت 1389, 19:49 عصر
کسی نیست کمک کنه؟
فوری
با تشکر

Netsky
یک شنبه 05 اردیبهشت 1389, 21:06 عصر
سلام دوست عزيز .
ببين من يه تست كردم ، اينو متوجه شدم .
مثلا يه فايل تكست كه ساخته ميشه برنامه ها اولويت بندي ميشن واسه اجرا . شما رجيستري رو باز كن و به آدرس زير برو :


HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\FileExts\.txt\OpenWithList
اين كليد از رجيستري برنامه هايي رو كه ميتونن فايل تكست رو باز كنن اولويت بندي كرده .
داخل اين كليد چندتا مقدار وجود داره كه به صورت a , b , c الي آخر ذخيره شدن . داخل هر مقدار اسم يه برنامه نوشته شده . مثلا داخل مقدار a نام NOTEPAD نوشته شده . داخل مقادير ديگه هم اسم برنامه هاي ديگه .
اولويت بنديشون هم داخل يه مقدار به نام MRUList وجود داره كه ترتيب برنامه ها رو با نام مقاديرشون نوشته . مثلا :


acbd
اين يه تست بود كه انجام دادم .
اميدوارم بدردتون خورده باشه .
موفق و سربلند باشيد .......... :لبخندساده:

mvb_mehran
یک شنبه 05 اردیبهشت 1389, 21:14 عصر
خیلی ممنون از راهنماییتون
چطوریه که مثلا یه فایل تکست رو وقتی باز میکنیم اون برنامه اون فایل رو نمایش میده آیا آدرس اون جایی هست که برنامه متوجه میشه که اون رو نمایش بده.
من یه سوال دیگه داشتم که چجوری میتونم با نصب برنامه این رجیستری رو تغییر بدم.
با تشکر از دوستان

Netsky
یک شنبه 05 اردیبهشت 1389, 22:12 عصر
سلام .

خیلی ممنون از راهنماییتون
خواهش ميكنم .

چطوریه که مثلا یه فایل تکست رو وقتی باز میکنیم اون برنامه اون فایل رو نمایش میده آیا آدرس اون جایی هست که برنامه متوجه میشه که اون رو نمایش بده.
نه آدرس جايي نيست . فكر كنم اينطور باشه كه سيستم عامل آدرس فايل رو براي برنامه اي كه قبلا معرفي شده ميفرسته .

من یه سوال دیگه داشتم که چجوری میتونم با نصب برنامه این رجیستری رو تغییر بدم.
به نظر من به فكر يه روش ديگه باشيد . چون من هرچي روي فايل هاي تكست اين روش رو انجام دادم ، نشد .
مثلا اومدم و مقدار a رو برابر آدرس يه برنامه قرار دادم . ولي وقتي اجرا كردم ، ديدم فقط به صورت Default با Notepad باز ميشه . يعني اگه شما حتي مقدار a رو هم برابر با آدرس برنامه ي خودتون قرار بديد ، سيستم عامل خودش يه مقدار ديگه با يه نام ديگه ميسازه و اولويت رو هم به همون مقداري كه خودش ساخته ميده . داخل مقداري هم كه ميسازه نام برنامه Notepad نوشته شده .
اميدوارم تونسته باشم كمكي بكنم ...........
موفق باشيد ..........

mvb_mehran
یک شنبه 05 اردیبهشت 1389, 22:31 عصر
ممنون از راهنماییت.
پس من باید چیکار کنم؟

mvb_mehran
یک شنبه 05 اردیبهشت 1389, 22:38 عصر
شما اینترنت اکسپلورر رو در نظر بگیر وقتی که ما فایرفاکس رو نصب می کنیم -از این به بعد وقتی روی فایل اینترنتی در ویندوز کلیک می کنیم فایرفاکس اون رو نمایش میده .
من هم می خواهم برنامه من اینجوری باشه.

Netsky
دوشنبه 06 اردیبهشت 1389, 00:05 صبح
سلام .

شما اینترنت اکسپلورر رو در نظر بگیر وقتی که ما فایرفاکس رو نصب می کنیم -از این به بعد وقتی روی فایل اینترنتی در ویندوز کلیک می کنیم فایرفاکس اون رو نمایش میده .
البته دوست عزيز اين موردي كه شما گفتيد موقعي امكان پذير ميشه كه مروگر فايرفاكس به عنوان مرورگر پيش فرض ويندوز انتخاب بشه .
هنوز راهي واسش پيدا نكردم . اگه پيدا كردم حتما واستون ميفرستم .
موفق باشيد ........ :قلب:

pirmard
دوشنبه 06 اردیبهشت 1389, 00:50 صبح
ممنون از راهنماییت.
پس من باید چیکار کنم؟

شما باید دو تا کار بکنین :
1- اول اینکه بگین برنامتون الان این امکان رو داره که از طریق کامندلاین یه فایل تکست رو باز کنه ؟ اگه داره که باید برین سر مرحله بعدی . اگرم نداره بگین تا راهنمایی کنیم

2- اگه برنامه تون امکان بالا رو داشت حالا باید برین سروقت رجیستری برای یه فرمت خاص فایل (مثلا تکست) که آدرسش هم با اون چیزایی که دوستمون بالا گفتن فرق داره.فرمت موردنظرتون همون تکست ه که می خاین با برنامتون باز کنین ؟
(اگه فرمت جدیدی باشه یه کم فرق می کنه )
اما اگه تکست باشه اینجا رو برین باز کنین :



HKEY_CLASSES_ROOT\txtfile\shell\open\command



حالا یه دیفالت کی می بینین که این مقدارو داره :



%SystemRoot%\system32\NOTEPAD.EXE %1



حالا مقدار این کلید رو به این صورت تغییر بدین :
(فرض کنیم برنامه شما در آدرس c:\mynotepad.exe قرار داره)



c:\mynotepad.exe %1



اگه برنامتون امکان گرفتن آدرس فایل بصورت ارگومان و باز کردن اونو نداره و می خاین فقط این کلید رجیستری رو تست کنین می تونین اینو توی اون کلید بنویسین :


C:\Program Files\Windows NT\Accessories\wordpad.exe %1

حالا از این به بعد برنامتون با wordpad باز میشه بجای notepad .




اون 1% چیه ؟ اون در واقع با آدرس فایلی که اجرا میشه به صورت آرگومان جایگزین میشه . برای همین گفتم در مرحله اول باید بتونین اسم فایل رو با برنامه تون به صورت پارامتر دریافت کنین و اونو اجرا کنین .

mvb_mehran
دوشنبه 06 اردیبهشت 1389, 09:48 صبح
شما باید دو تا کار بکنین :
1- اول اینکه بگین برنامتون الان این امکان رو داره که از طریق کامندلاین یه فایل تکست رو باز کنه ؟ اگه داره که باید برین سر مرحله بعدی . اگرم نداره بگین تا راهنمایی کنیم .

من باید در برنامه خودم چکاری رو انجام بدم که یه فایل تکست رو باز کنه؟
خیلی ممنون از راهنماییتون.

mvb_mehran
دوشنبه 06 اردیبهشت 1389, 10:58 صبح
من برای نصب برنامه باید چه کار هایی رو انجام بدم؟

mvb_mehran
دوشنبه 06 اردیبهشت 1389, 12:19 عصر
کمک کنید دوستان (فوری)

pirmard
دوشنبه 06 اردیبهشت 1389, 13:28 عصر
من باید در برنامه خودم چکاری رو انجام بدم که یه فایل تکست رو باز کنه؟
خیلی ممنون از راهنماییتون.


یه نوتپد کوچیک نوشتم . برنامه ضمیمه رو نگاه کن ،
این قابلیت رو داره که از کامندپرامپت اسم یه فایل رو به عنوان آرگومان بگیره (فاییل تکست) و اونو توی تکست باکس نمایش بده .

حالا برنامه رو مثلا به یه آدرسی مثل این آدرس منتقل کن :


c:\mynotepad.exe

بعد توی رجیستری برو به اینجا :


HKEY_CLASSES_ROOT\txtfile\shell\open\command


و کلید دیفالتی که براش هست رو به این صورت تغییر بده :



c:\mynotepad.exe %1


حالا از این به بعد فایل های تکست با برنامه ما باز میشن .

mvb_mehran
دوشنبه 06 اردیبهشت 1389, 14:06 عصر
خیلی خوبه ممنون از راهنماییت.
ولی من موقع نصب برنامه ای که نوشتم .ریجیستری رو به صورت اتوماتیک چه جوری تغییر بدم.
با تشکر

pirmard
دوشنبه 06 اردیبهشت 1389, 14:09 عصر
خیلی خوبه ممنون از راهنماییت.
ولی من موقع نصب برنامه ای که نوشتم .ریجیستری رو به صورت اتوماتیک چه جوری تغییر بدم.
با تشکر


با اینتال شیلد اگه ستاپ بسازین یه قسمت داره که تعیین می کنین چه کلیدهایی توی رجیستری ایجاد بشن و یا تغییر کنن .

با خود برنامتون هم می تونین این تغییرات رو اعمال کنین . یعنی دفعه اول که برنامتون اجرا شد این تغییرات صورت بگیره .

mvb_mehran
دوشنبه 06 اردیبهشت 1389, 14:21 عصر
خیلی ممنونم از راهنمایهات اصلا اینستال شیلد به فکرم نیومده بود.

Netsky
دوشنبه 06 اردیبهشت 1389, 14:27 عصر
با سلام عرض ادب .
ضمن تشكر از جناب Pirmard به خاطر پاسخ مفيدشون .

ولی من موقع نصب برنامه ای که نوشتم .ریجیستری رو به صورت اتوماتیک چه جوری تغییر بدم.
راهنمايي اول جناب Pirmard كاملا درسته و با برنامه اينستال شيلد ميتونيد اينكار رو انجام بديد .
در مورد راهنمايي دوم ايشون هم ميتونيد از كد زير استفاده كنيد .


Microsoft.Win32.Registry.SetValue("HKEY_CLASSES_ROOT\txtfile\shell\open\command", "", "C:\Mynotepad.exe %1")
موفق باشيد ..........