所以我制作了一个程序,可以在电脑上创建一个注册表项,它添加了一个选项来将你的文件推送到你的设备。 (程序本身会将文件推送到您的 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
{
}
这是注册码。顺便说一句,字符串 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();
最佳答案
我假设您已经创建了一个注册表项,它创建了您用来启动程序的上下文菜单项。可能是您需要在要启动的 exe 名称后添加“%1”。在上下文菜单中,注册表项 %1 代表所选文件,因此添加它应该会启动您的程序并提供所选文件的名称作为单个参数。
之前双击时它起作用的原因是 Windows 将为双击的文件启动默认程序,并将双击的文件作为参数。
关于C# 通过上下文菜单传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057987/