آژانس هواپیماییfootbal
nexpay

افزون آيتم به منوي کليک سمت راست موس

شروع موضوع توسط night wolf ‏26 آگوست 2004 در انجمن برنامه نویسی

  1. night wolf

    night wolf Registered User

    سلام
    چطور ميشه وقتي روي فايل مورد نظر کليک کنيم يک ايتم به آن منو اضافه بشه مثل وقتي وين زيپ رو نصب ميکينيم يا برنامه هاي ديگه. من ميخوام وقتي روي يك درايو كليك كنم اون آيتم نشون داده بشه.(مثل Partion Magic)
    با تشکر :)
     
  2. night wolf

    night wolf Registered User

    اوه ببخشيد يادم رفت. اين كار رو در VB.NET ميخوام انجام بدم.
     
  3. CenoByte

    CenoByte کاربر تازه وارد

    اين كار با استفاده از shell programming انجام ميشه!
    شما به راحتي ميتونيد مطالبي در اين مورد با استفاده از google بدست بياوريد.
    كافيه كلمات كليدي زير رو سرچ كنيد.
    shell programming + vb.net + sample+tutorial
    موفق و پيروز باشيد.
     
  4. night wolf

    night wolf Registered User

    آقا من چيز بدرد بخوري نتونستم پيدا كنم.
    اگه ميتوني يه لينكي بهم بدي خيلي ممنون ميشم.
     
  5. littlerabbit

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

    اين كد مال خيلي پيشه و وي بي 6 هست اگه فرصت كردم راهنماشو مينويسم (البته حالت كلي شو)
     

    فایل های ضمیمه:

    • Code.zip
      اندازه فایل:
      5.6 KB
      نمایش ها:
      34
  6. littlerabbit

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

    فایل Associate در ویندوز

    1- پارامترهای خط فرمان :
    ظاهرا پارامترهای خط فرمان از داس به بعد کاربردی ندارند اما اینطور نیست. ابتدا روش گرفتن پارامترهای خط فرمان را توضیح میدهیم :

    1-1- دلفی
    از تابع ParamStr استفاده کنید .این تابع یک آرگومان میگیرد که شماره پارامتر مورد نظر است. دقت کنید ParamStr با ارگومان صفر آدرس برنامه در حال اجرا را برمیگرداند. باقی پارامترها بایستی با فاصله یا کاراکتر تب از هم جدا شده باشند. مثلا هنگام اجرای برنامه ای با این پارامترها :
    Test.exe param1 param2

    ParamStr(0) برابر با آدرس کامل فایل test.exe خواهد بود و ParamStr(1) برابر با Param1 و همین طور الی آخر. اگر یکی از پارامترها یک یا چند فاصله را هم بخواهد در خود داشته باشد بایستی با علامت " محصور شده باشد.
    تعداد این پارامترها هم در متغیر عمومی ParamCount ذخیره میشود. البته متغییر CmdLine هم هست که وابسته به ویندوز است (و در برنامه های Cross قابل استفاده نیست) این متغیر تمام این آرگومانها را به هم پیوند داده و در یک رشته در اختیار میگذارد.بر خلاف وی بی نام برنامه هم در ابتدای آن هست.
    1-2-وی بی 6
    در وی بی 6 از دستور Command$ استفاده کنید. این دستور فقط پارامترها را (بدون نام کامل فایل) در یک رشته برمیگرداند و خودتان باید آنها را از هم مجزا کنید.


    حالا ربط پارامترها به باز کردن فایل.
    1- یک برنامه ساده بنویسید در وی بی :
    کد:
    Private Sub Form_Load()
        MsgBox Command$
    End Sub
    
    در دلفی :
    کد:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage(CmdLine);
    end;
    
    حالا برنامه را کامپایل کنید و یک exe بسازید .
    یک فایل را (حل فایلی که باشد ) بگیرید و روی برنامه بکشید و رها کنید. نام فایل نشان داده میشود.

    به این ترتیب شما میتوانید نام فایلی را که از Shell به برنامه شما پاس داده میشود را در اختیار خواهید داشت. میتوانید با آن هر کاری انجام دهید (آن را بخوانید یا...)

    اما برای ثبت نوع فایل در Shell سه راه هست که وی بی تنها یک راه آنرا میتواند پیاده کند. و من هم تنها دو راه آن را بلدم :)
    1- استفاده از DDE و ثبت برنامه به عنوان DDE سرور (من هیچ چیزی در باره آن نمیدانم)
    2- استفاده از ShellExtention Handler و رابط ها (Interface) های Shell که در وی بی نمیتوان آن را پیاده کرد (چه نت و چه وی بی 6) و خیلی قابل انعطاف و جالب است و برنامه هایی نظیر Winzip یا Winrar از آن استفاده میکنند.
    3- راه حل ساده. استفاده از قوانین ثبت فایل در رجیستری. (دو مورد دیگر هم در رجیستری ثبت میشوند اما به نوعی دیگر)

    1- پسوندی که در نظر دارید انتخاب کنید . اگر پسوندی مد نظرتان نیست و میخواهید کلیه فایلها را تحت تاثیر قرار دهید پسوند را * در نظر بگیرید برای پوشه ها هم پسوند Folder را در نظر بگیرید برای درایو پسوند Drive (همه بدون نقطه). حالا برای مثلا پسوند mmm بایستی .mmm را در نظر بگیرید (یعنی پسوند و نقطه قبل از پسوند را )
    2-یک کلید با این نام در HKEY_CLASS_ROOT بسازید.
    3-یک نام در نظر بگیرید مثل MyApplicatin.Documents به طور معمول یک اسم دو قسمتی اما مهم نیست. فقط از قبل انتخاب نشده باشد. در کلیدی که قبلا در رجیستری ساختید(مرحله 2) این نام را در مقدار Default بنویسید.
    4-حالا یک کلید بسازید و آن را به نامی که در مرحله 3 در نظر گرفتید تغییر نام دهید. (در این مثال MyApplicatin.Documents ) مقدار Default را با نام نوع فایلتان تغییر دهید. مثلا My Application project file type. یا هر چه دوست دارید.
    5- یک کلید زیر کلید مرحله 4 بسازید (در این مثال زیر MyApplicatin.Documents ) نام آن را DefaultIcon بگذارید. مقدار Default را با آدرس دقیق فایل آیکون بای این نوع فایل در Shell ویندوز عوض کنید. اگر آیکون در یک فایل Exe یا Dll است بنویسید :
    d:\full\path\toexe\MyApp.exe,1
    بعد از علامت کاما ایندکس آیکون در فایل exe یا dll را قرار دهید.
    6- یک کلید دیگر زیر کلید MyApplicatin.Documents بسازید (کلید مرحله 4) نام آن را shell بگذارید.
    7- زیر کلید shell یک کلید با نامی که دوست دارید در منو نمایش داده شود بسازید مثل open یا run یا... مقدار Default اگر با یک متن نوشته شود در اینصورت این متن در منو نمایش داده میشود در غیر اینصورت همان نام کلید نمایش داده میشود. از علامت & برای انتخاب کلیئ میانبر استفاده کنید مثل &Open
    8- زیر کلیدی که در مرحله 7 ساختید کلیدی با نام command بسازید. مقدار پیشفرض آن (default ) را به این صورت تنظیم کنید :
    D:\full\path\toexe\MyApp.exe "%1"
    یعنی آدرس کامل برنامه ای که میخواهید این فایل را باز کند + یک فاصله + "%1" (ممکن است به خاطر فارسی بودن کمی کلمات اینطرف و آنطرف شوند منظور درصد یک است یعنی درصد در سمت چپ)
    این درصد یک هنگام اجرا با نام فایلی که روی آن دوبار کلیک شده عوض میشود. علامت کوتیشن در دو طرف تضمین میکند هنگام اجرا نام فایلهایی که فاصله در آنها وجود دارد در یک آرگومان قرار بگیرد . در صورت برداشتن این کوتیشن مثلا D:\program files\my file.txt به سه آرگومان (بر اساس فاصله ها ) تجزیه میشود.

    برای تست من یکبرنامه خیلی ساده و یک فایل Reg که اینکارها را یکمرتبه انجام میدهد را به پست Attach میکنم . پسوند Alpha مد نظر من است برنامه ای که در بالا کد آن را نوشتم (و در فایل Attach شده هم هست ) را کامپایل کنید و آن را در C:\ بگذارید (با نام project1.exe) بعد فایل reg را در رجیستری بنویسید (با دوبار کلیک کردن بر آن )
    یک فایل با پسوند alpha بسازید. آیکون بایستی به شکل آیکون برنامه باشد. روی آن دو بار کلیک کنید برنامه باز شده و آدرس فایل را نشان میدهد.

    برای اینکه چند گزینه به منو اضافه کنید زیر کلید shell میتوانید چند آیتم بسازید مثلا run و Open فقط برای شناسایی این که کاربر کدام گزینه را انتخاب کرده بایستی در command یکی از اینها (معمولا دومی) اینطور عمل کنیم و مقدار deffault را بنویسیم :
    D:\full\path\toexe\MyApp.exe "%1" /run
    در اصل یک آرگومان سوم هم اضافه میکنیم( در اینجا /run ) این آرگومان هنگامی که این گزینه انتخاب شود به عنوان آرگومان سوم به برنامه فرستاده میشود و با مقایسه این آرگومان سوم میتوانید بفهمید کاربر چه گزینه ای را انتخاب کرده است.
    به این ترتیب با آرگومانهای مختلف میتوان حالت های مختلفی را به دست آورد.

    بای کاربران نت. متاسفانه معادل دستور Command$ را فراموش کرده ام و نت هم روی سیتمم نصب نیست. شما به راحتی میتوانید برنامه وی بی را به نت مهاجرت دهید (یعنی با نت بازش کنید)خودش تغییر لازم را انجام میدهد.
    لطفا اگر کسی دستور معادل را میداند همینجا بنویسد. سوالی هم هست خوشحال میشوم بتوانم جواب بدهم.

    فرود - 04:44 ب.ظ 2004/08/27
     
  7. panypay
  8. night wolf

    night wolf Registered User

    با سلام خدمت آقاي littlerabbit
    آقا دستت درد نكنه ولي من براي .net ميخواستم
    اون فايلي كه فرستادي تبديل به .net نميشه و از چند تا از كدهاش اشكال ميگيره. من چه طور ميتونم معادل بعضي از دستورهاي وي بي رو براي وي بي .نت پيدا كنم؟
     
  9. night wolf

    night wolf Registered User

    حالا يه چيز ديگه من تونستم اين كاري رو كه ميخواستم انجام بدم.
    ميخوام فقط روي درايو CD-Rom ظاهر بشه ميتوني كمكم كني؟
    مثل گزينه Eject.
    بعد اينكه چطور ميشه رديف منو رو تغيير داد؟
     
  10. littlerabbit

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

    ساده نيست و با وي بي نميشه.
    با عزض شرمندگي فايل اشتباه بود اين فايل اصليه --واقعا كه شرمندم---
     

    فایل های ضمیمه:

    • Desktop.zip
      اندازه فایل:
      16.6 KB
      نمایش ها:
      30
خرید بک لینکreviews عسل طبیعی و گرده گل ایرانی