所以我创建了一个在PC上创建注册表项的程序,它添加了一个将文件推送到设备的选项。 (程序本身会将文件推送到您的Android SD卡。)
一旦我弄清楚这个问题,一切都运作良好,或者至少应该运作良好。当我右键单击一个项目并选择我的命令(用我的程序打开)时,我的程序就会打开,但是没有参数传递。
一个月前,我设计了一个程序,当用户双击(只需双击,而不是右键单击上下文菜单)文件时打开该程序,它打开了特定的程序,从那里我就能抓住参数。
为什么我不能从上下文菜单中找到?
谢谢,抱歉冗长的帖子。
这是我的代码的一部分:
private void Form1_Load(object sender, EventArgs e)
{
string c = textBox3.Text;
string[] args = System.Environment.GetCommandLineArgs();
try
{
string location = args[1];
MessageBox.Show(location);
//For testing purposes only
Properties.Settings.Default.thinglocation = location;
Properties.Settings.Default.Save();
Process();
}
catch
{
}
这是注册表代码。 BTw字符串c是“C:\ File push.exe”我程序的位置。
string MenuName = "*\\shell\\NewMenuOption";
string Command = "*\\shell\\NewMenuOption\\command";
RegistryKey regmenu = null;
RegistryKey regcmd = null;
try
{
regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
if (regmenu != null)
regmenu.SetValue("", "Push to Android");
regcmd = Registry.ClassesRoot.CreateSubKey(Command);
if (regcmd != null)
regcmd.SetValue("", c +"%1");
}
catch (Exception ex)
{
MessageBox.Show(this, ex.ToString());
}
finally
{
if (regmenu != null)
regmenu.Close();
if (regcmd != null)
regcmd.Close();
答案 0 :(得分:3)
我假设您已创建了一个注册表项,该项创建了用于启动程序的上下文菜单项。可能性是您需要在要启动的exe名称后面添加'%1'。在上下文菜单中,注册表项%1表示所选文件,因此添加此文件应启动程序并将所选文件的名称作为单个参数。
之前双击工作的原因是windows会启动双击文件的默认程序,双击文件作为参数。
答案 1 :(得分:0)
您是否尝试查找发件人或EventArgs参数?我认为他们可能会在那里。这只是一个猜测。如果它只是双击那么为什么会有任何参数?也许我只是误解了这一点。无论如何,也许这有帮助。如果不是,也许你可以澄清一下参数应该来自哪里。
Erik