相关疑难解决方法(0)

从第一个实例中启动WPF应用程序的第二个实例

如果我们的独立应用程序只是一个下载的.exe文件(即使用Windows安装程序部署),那么使用正在运行的实例启动第二个实例将非常简单System.Diagnostics.Process.Start.不幸的是,我们的WPF应用程序是通过VIA ClickOnce部署的,因此据我所知,它没有本地文件系统路径.

如何启动正在运行的ClickOnce应用程序的第二个实例?(如果可能的话,传递命令行参数.)

c# wpf clickonce .net-4.0

4
推荐指数
2
解决办法
936
查看次数

从shell_execute启动时,Clickonce程序不会启动

我有一个很老的程序,我无法控制.它启动一个文件类型及其默认应用程序(我无法修改此代码):

LET Err (SHELL_EXECUTE 'open' (FIX_MESG '"{1}"' File_name) '' '')
Run Code Online (Sandbox Code Playgroud)

^^上述代码有效,只要该文件类型与ClickOnce程序无关.

旧程序是32位,操作系统是Windows 7 64位.我可以将我的clickonce程序编译为任何东西,但似乎都没有.(我试过x86,x64和anyCPU)

如何使32位程序使用shell执行在64位操作系统上启动ClickOnce程序?

更多细节:这是一个可重现的错误.建立2个程序.程序1是Clickonce程序.将其与任何文件类型相关联.程序2将执行shell执行命令以打开与clickonce程序关联的任何文件类型.如果将程序2编译为x86,它将为您提供成功响应,但不执行任何操作.

控制台shell执行程序的测试代码:

private static void Main()
{
    int value = ShellExecuteA(IntPtr.Zero, "open", @"C:\Users\bsee\Desktop\testfile.ecn2", "", "", 0);
        if (value > 32)
            MessageBox.Show("Clickonce reports success. But did it actually start?");
}

[DllImport("Shell32.dll")]
public static extern int ShellExecuteA(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirecotry, int nShowCmd);
Run Code Online (Sandbox Code Playgroud)

c# clickonce shellexecute

3
推荐指数
1
解决办法
1383
查看次数

标签 统计

c# ×2

clickonce ×2

.net-4.0 ×1

shellexecute ×1

wpf ×1