mostafa_sgh
دوشنبه 13 آبان 1387, 06:47 صبح
سر آغاز همه کارها با نام اوست ...
با سلام خدمت سروران گرامی
انشاالله که در سلامتی کامل بسر ببرید و با آموختن دانش خود به دیگران در تکمیل روند و رشد دانش فنی جامعه برنامه نویسان موثر واقع بشوید . :چشمک:
و اما ......
* هدف از ایجاد چنین کاری ( به نظر بنده ) : ایجاد رابطه بین 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
.
.
.
امیدوارم از این مطالب حداکثر استفاده را برده باشید و توانسته باشیم حق مطلب را ادا کنیم.
*** واما مهم تر از این مطالب ، نظرات شما دوستان برای رسیدن به یک جمع بندی مطلوب می باشد.
در پناه حق
با سلام خدمت سروران گرامی
انشاالله که در سلامتی کامل بسر ببرید و با آموختن دانش خود به دیگران در تکمیل روند و رشد دانش فنی جامعه برنامه نویسان موثر واقع بشوید . :چشمک:
و اما ......
* هدف از ایجاد چنین کاری ( به نظر بنده ) : ایجاد رابطه بین 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
.
.
.
امیدوارم از این مطالب حداکثر استفاده را برده باشید و توانسته باشیم حق مطلب را ادا کنیم.
*** واما مهم تر از این مطالب ، نظرات شما دوستان برای رسیدن به یک جمع بندی مطلوب می باشد.
در پناه حق