在“我在电脑”中使用右键启动,并得到所有选择文件
我要实现的功能如下:能够在“我的电脑”中,选择一些文件后,通过右键来启动程序,并列出所有选择的文件(只能启动一个实例,不能选择几个文件就启动几个实例)
请各位帮忙,谢谢 --------------------编程问答-------------------- 参考一下这个.
http://zhidao.baidu.com/question/21620523.html --------------------编程问答--------------------
通过右键启动是什么意思? --------------------编程问答-------------------- 改注册表就行了,在右键菜单里增加一项 --------------------编程问答-------------------- 没搞清楚,帮顶先. --------------------编程问答--------------------
--------------------编程问答--------------------
只启动一个程序的实例:
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Reflection;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Process instance = RunningInstance();
if (instance == null)
{
Application.Run(new Form1());
}
else
{
//MessageBox.Show("此程序已经启动!");
HandleRunningInstance(instance);
}
}
[DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private const int WS_SHOWNORMAL = 1;
private static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(current.ProcessName);
foreach (Process process in processes)
{
if (process.Id!=current.Id)
{
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\")==current.MainModule.FileName)
{
return process;
}
}
}
return null;
}
private static void HandleRunningInstance(Process instance)
{
ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);
SetForegroundWindow(instance.MainWindowHandle);
}
比如我选择了a.txt,b.txt,然后点击右键,选择我自己添加的菜单,启动程序,程序就显示我选择了哪些文件,列出文件名(a.txt,b.txt) --------------------编程问答-------------------- 谢谢楼上几位
通过右键启动,没什么问题,只启动一个实例,也没什么问题
现在问题是,我选择了2个文件,启动的时候,只能得到一个文件的路径信息(因为本来不限制只启动一个实例的话,选择几个文件就会启动几个实例的)
大家帮忙看看啊,该怎么做,最好能给个最简单的示例
--------------------编程问答-------------------- 要做个shell 扩展dll,C#好像办不到,要用C++来写
补充:.NET技术 , C#