نمایش نتایج 1 تا 4 از 4

نام تاپیک: نحوه ایجاد CustomUrl و اجرای برنامه های Win App توسط آن

  1. #1
    کاربر دائمی آواتار mostafa_sgh
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران - پائین شهر
    پست
    251

    نحوه ایجاد CustomUrl و اجرای برنامه های Win App توسط آن

    سر آغاز همه کارها با نام اوست ...

    با سلام خدمت سروران گرامی

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

    و اما ......

    * هدف از ایجاد چنین کاری ( به نظر بنده ) : ایجاد رابطه بین Win Application و Web Application می باشد . و علت استفاده از آن هم به این خاطر میباشد که هر کدام از موارد فوق کارائی خاص خود را دارند و در مواردی به تنهائی قادر به برطرف کردن نیاز ما نیستند.

    در اینجا می خواهیم در باره مطلبی یحث کنیم و آن هم با یک سوال شروع می کنیم :
    ( اگر این مطلب دارای بار فنی نمی باشد، بنده را حلال بفرمائید )

    * چطور می توانیم توسط یک Url یا یک لینک ، برنامه خود را ( مهم نیست توسط چه زبانی - در اینجا C#‎ ) اجرا کرده و پارامترهای مورد نیاز را به آن ارسال کنیم ؟

    به عنوان مثال : ما می خواهیم توسط این لینک به برنامه خود پارامتر ارسال کرده وآن را اجرا کنیم .
    Protocol://Parametrs
    sghr://params

    و جواب این مساله رو با یک مثال بیان میکنیم و با همکاری و نظرات شما دوستان گرامی آن را کامل میکنیم .

    برای این کار ابتدا لازم است کلیدهائی در رجیستری برای شناسائی Protocol مربوطه تعریف شود . این کلید ها در شاخه های زیر ثبت میشود :

    1 - HKEY_LOCAL_MACHINE\SOFTWARE\Classes
    2 - HKEY_Classes_Root

    و این کلیدها چه هستند ؟ - اینها اطلاعاتی شامل نام پروتکل و آدرس برنامه که به هنگام صدا زدن این پروتکل باید اجرا شود می با شند.

    *** برای استفاده از این کلیدها ، پس از تغییرات شخصی ، آنها را در دو فایل مجزا با پسوند .Reg ذخیره و اجرا نمائید .

    و اما سوالی که در اینجا مطرح می باشد این است : - چه نامی برای پروتکل خود انتخاب نمائیم ؟
    - نام پروتکا باید ساده و قابل شناسائی ( مخفف نام برنامه ای که ساخته اید ) باشد و همچنین تکراری نباشد ( چون ویندوز و بعضی از برنامه هائی که ما از آن استفاده میکنیم ، چند تا از این پروتکل ها را به خود اختصاص داده اند و در صورت تکراری بودن نام، روند کار سایر برنامه ها با شکست مواجه می شود )

    کلید های لازم برای ثبت در رجیستری :

    شماره 1 :

    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\sghr]
    @="URL: sghr Protocol"
    "URL Protocol"=""
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\sghr\DefaultIc on]
    @="E:\\SGH\\sghr.exe,0"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\sghr\shell]
    @="open"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\sghr\shell\ope n]
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\sghr\shell\ope n\command]
    @="\"E:\\SGH\\sghr.exe\" \"%1\""



    شماره 2 :

    Windows Registry Editor Version 5.00
    [HKEY_Classes_Root\sghr]
    @="URL: sghr Protocol"
    "URL Protocol"=""
    [HKEY_Classes_Root\sghr\DefaultIcon]
    @="E:\\SGH\sghr.exe,0"
    [HKEY_Classes_Root\sghr\shell]
    @="open"
    [HKEY_Classes_Root\sghr\shell\open]
    [HKEY_Classes_Root\sghr\shell\open\command]
    @="\"E:\\SGH\sghr.exe\" \"%1\""



    *** اطلاعات این کلیدها ، همانطور که در بالا مشخص شده ، شامل نام پروتکل و آدرس فایل اجرائی میباشد .

    تا اینجا مرحله اصلی کار به اتمام رسید .

    و حالا باید به سراغ برنامه خودمان برویم و این پارامترهای دریافتی را تجزیه و تحلیل کرده و عمل مناسب با آن را انجام دهیم .

    مطلبی هم در باره پارامترها :

    * پارامترها می توانند ساده (Normal String ) و یاکد شده ( Encrypted String ) باشند ، که آن هم توسط خود شما به هنگام ساخت
    Url در برنامه Web App تولید میشود.

    این کار را با یک برنامه ساده شروع میکنیم .
    کار این برنامه این است که در حالت عادی عملکرد خاصی نداشته و در صورت اجرای برنامه توسط لینک مربوطه ، متن پارامتر را نمایش میدهد.

    *** هدف اصلی همان است که در بالا ذکر شد و این فقط یک مثال است .

    برای ادامه کار :

    1 - یک پروژه Windows Application با زبان دلخواهتان ایجاد کنید .
    2 - در رویداد Load فرم اصلی خود کد زیر را وارد کنید :


    private void Form1_Load(object sender, EventArgs e)
    {
    string[] args = Environment.GetCommandLineArgs();
    if (args.Length > 1)
    {
    string parameters = args[1].ToLower();
    string protocolStr = "sghr://";
    if (parameters.Contains(protocolStr))
    {
    MessageBox.Show("You run this app from Custom Url !");
    if (parameters.Length > protocolStr.Length)
    {
    string rParam = parameters.Substring(protocolStr.Length);
    MessageBox.Show(string.Format("You run this app from Custom Url with parameters :\n"+
    "Protocol Name : {0}\nParameters : {1}",
    protocolStr,rParam));
    // Then some function for this way
    }
    }
    }
    else
    {
    // Continue the app in Normal mode ...
    }
    }


    3 - پروژه خود را کامپایل کنید .
    4 - فایل های مورد نیاز پروژه خود را در مسیری که در فایل رجیستری تعیین کرده اید ، قرار دهید .

    حال این مرحله هم به پایان رسید.

    *** و اما چطور باید این Url را فراخوانی کنیم ؟

    در ظاهر به ؟ طریق :

    1 - توسط Explorer ها ( برای Internet Explorer نیاز به تنظیم خاصی نیست ولی سایر مرورگرها برای شناسائی آن نیاز به تنظیمات دارند )
    برای این کار کافیست نام پروتکل را به همراه پارامتری که میخواهید برای آن ارسال کنید ، در Address Bar نوشته و اجرا نمائید.
    به عنوان مثال : sghr://barnamenevis

    .
    .
    .

    امیدوارم از این مطالب حداکثر استفاده را برده باشید و توانسته باشیم حق مطلب را ادا کنیم.

    *** واما مهم تر از این مطالب ، نظرات شما دوستان برای رسیدن به یک جمع بندی مطلوب می باشد.

    در پناه حق
    آخرین ویرایش به وسیله mostafa_sgh : دوشنبه 29 فروردین 1390 در 17:34 عصر

  2. #2

    نقل قول: نحوه ایجاد CustomUrl و اجرای برنامه های Win App توسط آن

    سلام . تمامی موارد ذکر شده رو انجام دادم اما وقتی خواستم ازش استفاده کنم با خطای زیر مواجه شدم :
    "Firefox doesn't know how to open this address , because the protocol (myapp) isn't associated with any ptogram"

  3. #3
    کاربر دائمی آواتار mostafa_sgh
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران - پائین شهر
    پست
    251

    نقل قول: نحوه ایجاد CustomUrl و اجرای برنامه های Win App توسط آن

    همانطور که در پست قبلی گفته شد ، در مرورگر های مختلف باید جداگانه تنظیمات آن انجام شود
    که در اینجا :::

    You need AptURL protocol support registered in your web browser to be able to use allmyapps.

    == Procedure for Firefox ==

    Type in “about:config” in the location bar.

    Right click, select New –> String
    Type in “network.protocol-handler.app.apt” in the name of string,
    and type in “/usr/bin/apturl” in the value.

    One more right click, select New –> String
    Type in “network.protocol-handler.app.apt+http” in the name of string,
    and type in “/usr/bin/apturl” in the value.

    == Procedure for Opera ==

    Open Preferences.
    Tools -> Preferences -> Advanced -> Programs

    Click “Add” button.
    Type in “apt” in the “Protocol” field,
    and type in “apturl” in the “Open with other application” field.
    Click “OK” button.

    One more click “Add” button.
    Type in “apt+http” in the “Protocol” field,
    and type in “apturl” in the “Open with other application” field.
    Click “OK” button.

    == Procedure for Konqueror ==

    Create “apt.protocol” and “apt+http.protocol” files into “/usr/share/services” directory.

    Filename: apt.protocol
    [Protocol]
    exec=apturl “%u”
    protocol=apt
    input=none
    output=none
    helper=true
    reading=true
    writing=true

    Filename: apt+http.protocol
    [Protocol]
    exec=apturl “%u”
    protocol=apt+http
    input=none
    output=none
    helper=true
    reading=true
    writing=true


    منبع : http://getsatisfaction.com

  4. #4

    نقل قول: نحوه ایجاد CustomUrl و اجرای برنامه های Win App توسط آن

    باورت میشه ؟ یک اشتباه تایپی کوچیک تو این مورد کلی وقتمو گرفت . در کل نیازی به ثبت تنظیمات در مرورگر های مختلف نیست . همینکه تغییرات ذکر شده رو توی رجیستری اعمال کنید همه چیز درست میشه .

    کدش در دلفی :
    procedure TFrmMain.CreateProtocol(ProtocolName: string; Path: string);
    var
    REG: TRegistry;
    begin
    REG := TRegistry.Create;
    try
    REG.RootKey := HKEY_CLASSES_ROOT;
    REG.OpenKey(ProtocolName, true);
    REG.WriteString('', 'URL: ' + ProtocolName + ' Protocol');
    REG.WriteString('URL Protocol', '');
    REG.OpenKey('shell\open\command', true);
    REG.WriteString('', '"' + Path + '"' + ' %1');
    finally
    REG.Free;
    end;
    end;

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •