kiadata
دوشنبه 25 اسفند 1393, 12:14 عصر
این نوع ساختن شورتکات برای دات نت 3.5 و 3.5 به پائین می باشد
string programs_path4 = Environment.GetFolderPath(Environment.SpecialFolde r.DesktopDirectory);
Type shellType = Type.GetTypeFromProgID("WScript.Shell");
object shell = Activator.CreateInstance(shellType);
object shortcut = shellType.InvokeMember("CreateShortcut",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shell, new object[] { programs_path4 + "\\MyAPP.lnk" });
Type shortcutType = shortcut.GetType();
shortcutType.InvokeMember("TargetPath",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut, new object[] { InstallPath + "\\MyAPP.exe" });
shortcutType.InvokeMember("WorkingDirectory",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut, new object[] { InstallPath });
shortcutType.InvokeMember("Save",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shortcut, null);
اگه بخواهیم تو start\program\myapp ایجاد کنیم به این روشه انجام میشود :
//-----------------------------program\MyAPP-------------------------------------------
string programs_path = Environment.GetFolderPath(Environment.SpecialFolde r.Programs);
string MyAPP = programs_path + @"\MyAPP";
if (!Directory.Exists(MyAPP))
{
Directory.CreateDirectory(MyAPP);
}
Type shellType2 = Type.GetTypeFromProgID("WScript.Shell");
object shell2 = Activator.CreateInstance(shellType);
object shortcut2 = shellType2.InvokeMember("CreateShortcut",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shell2, new object[] { MyAPP + "\\MyAPP.lnk" });
Type shortcutType2 = shortcut2.GetType();
shortcutType2.InvokeMember("TargetPath",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut2, new object[] { InstallPath + "\\MyAPP.exe" });
shortcutType2.InvokeMember("WorkingDirectory",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut2, new object[] { InstallPath });
shortcutType2.InvokeMember("Save",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shortcut2, null);
البته روش دیگه ای هم هست که در دات نت 4 و 4 به بالا انجام میشه با این DLL : interop.iwshruntimelibrary.dll
که بعضی وقتها از رجیستر بودن در میاد و ساختن شورتکاتمون به خطا بر میخوره
موفق باشین.
string programs_path4 = Environment.GetFolderPath(Environment.SpecialFolde r.DesktopDirectory);
Type shellType = Type.GetTypeFromProgID("WScript.Shell");
object shell = Activator.CreateInstance(shellType);
object shortcut = shellType.InvokeMember("CreateShortcut",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shell, new object[] { programs_path4 + "\\MyAPP.lnk" });
Type shortcutType = shortcut.GetType();
shortcutType.InvokeMember("TargetPath",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut, new object[] { InstallPath + "\\MyAPP.exe" });
shortcutType.InvokeMember("WorkingDirectory",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut, new object[] { InstallPath });
shortcutType.InvokeMember("Save",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shortcut, null);
اگه بخواهیم تو start\program\myapp ایجاد کنیم به این روشه انجام میشود :
//-----------------------------program\MyAPP-------------------------------------------
string programs_path = Environment.GetFolderPath(Environment.SpecialFolde r.Programs);
string MyAPP = programs_path + @"\MyAPP";
if (!Directory.Exists(MyAPP))
{
Directory.CreateDirectory(MyAPP);
}
Type shellType2 = Type.GetTypeFromProgID("WScript.Shell");
object shell2 = Activator.CreateInstance(shellType);
object shortcut2 = shellType2.InvokeMember("CreateShortcut",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shell2, new object[] { MyAPP + "\\MyAPP.lnk" });
Type shortcutType2 = shortcut2.GetType();
shortcutType2.InvokeMember("TargetPath",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut2, new object[] { InstallPath + "\\MyAPP.exe" });
shortcutType2.InvokeMember("WorkingDirectory",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
null, shortcut2, new object[] { InstallPath });
shortcutType2.InvokeMember("Save",
BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, shortcut2, null);
البته روش دیگه ای هم هست که در دات نت 4 و 4 به بالا انجام میشه با این DLL : interop.iwshruntimelibrary.dll
که بعضی وقتها از رجیستر بودن در میاد و ساختن شورتکاتمون به خطا بر میخوره
موفق باشین.