Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果另一个实例正在运行,[设置焦点]并在';旧的';实例_C#_Wpf_Setfocus_Single Instance - Fatal编程技术网

C# 如果另一个实例正在运行,[设置焦点]并在';旧的';实例

C# 如果另一个实例正在运行,[设置焦点]并在';旧的';实例,c#,wpf,setfocus,single-instance,C#,Wpf,Setfocus,Single Instance,如何检查另一个实例是否正在运行 如果它正在运行,我如何强制我已经打开的实例打开一个文件 如果可能的话,我能强迫它聚焦吗?(我需要这个单独的) 如何检查另一个实例是否正在运行 您可以使用Process.GetProcesses()获取计算机上运行的进程列表。只需与Process.Name进行比较即可。使用相当简单的名称,您可能需要对应用程序进行额外检查 另外,如果它正在运行,如何强制已打开的实例 打开一个文件 如果您想在两个进程之间通信,我建议使用SendMessage方法。看 如果可能的话,我能

如何检查另一个实例是否正在运行
如果它正在运行,我如何强制我已经打开的实例打开一个文件
如果可能的话,我能强迫它聚焦吗?(我需要这个单独的)

如何检查另一个实例是否正在运行

您可以使用
Process.GetProcesses()
获取计算机上运行的进程列表。只需与
Process.Name
进行比较即可。使用相当简单的名称,您可能需要对应用程序进行额外检查

另外,如果它正在运行,如何强制已打开的实例 打开一个文件

如果您想在两个进程之间通信,我建议使用
SendMessage
方法。看

如果可能的话,我能强迫它聚焦吗?)我需要这个 分开)


您可以使用
SetForgoundWindow
方法(还需要
p/Invoke
)。请参阅。

请指定您的问题。您到底想检查什么
实例
?@CliveDM程序实例。我的意思是,如果我的程序已经在运行,那么将文件打开到已经打开的实例(不是新实例)。最好不要让其他人有相同的进程名。我见过两个完全不相关的程序发生这样的冲突,尽管这更糟糕——有问题的程序向另一个程序发送了一个接近的消息。关于使用
Process.getprocesss()
@LorenPechtel是对的。关于两个进程之间的通信,u链接我的文章说我最好避免使用SendMessage方法。@LorenPechtel是的,需要进一步检查进程名称是否很简单。@Mitcoc我没有看到任何
避免
。至于该链接中的答案,它建议在一个程序中使用
event
发送和接收事件。您的问题是关于两个不同程序之间的通信(虽然它是您运行的相同的
.exe
文件,但它确实在不同的上下文中运行),彼此之间绝对没有关联。因此,在这种情况下,
事件
无法使用。@CliveDM我找到了一种方法,可以通过
互斥体检测另一个实例是否正在运行。关于SendMessage,你是对的。我要用它。谢谢!!