相关疑难解决方法(0)

创建单实例WPF应用程序的正确方法是什么?

在.NET(而不是Windows窗体或控制台)下使用C#和WPF ,创建只能作为单个实例运行的应用程序的正确方法是什么?

我知道这与一些叫做互斥的神秘事物有关,我很少能找到一个不愿意停下来解释其中一个是什么的人.

代码还需要通知已经运行的实例用户尝试启动第二个,并且如果存在任何命令行参数,也可以传递.

.net c# wpf mutex

631
推荐指数
16
解决办法
19万
查看次数

如何检查应用程序的另一个实例是否正在运行

可能重复:
创建单实例应用程序的正确方法是什么?
当用户尝试打开新实例时,返回已打开的应用程序

有人可以显示如何检查程序的另一个实例(例如test.exe)是否正在运行,如果是,则停止加载应用程序(如果有现有实例).

.net c# windows

40
推荐指数
3
解决办法
11万
查看次数

Win32:带一个窗口到顶部

我有一个Windows程序,里面有两个2个窗口:

hwnd (main interface)

hwnd2 (toplevel window, no parent, created by hwnd)
Run Code Online (Sandbox Code Playgroud)

当我双击hwnd时,我需要hwnd2弹出并显示一些数据,所以我使用这个函数将hwnd2带到顶部:

BringWindowToTop(hwnd2);
Run Code Online (Sandbox Code Playgroud)

hwnd2被带到了顶峰,但有一点奇怪.当我再次点击hwnd2时,hwnd(主界面)会自动再次弹出.我试图使用以下函数来解决这个问题,但它们没有工作.

SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
                                                                  //doesn't work

BringWindowToTop(hwnd2);    //This is the function brings hwnd2 to top

SetForegroundWindow(hwnd2); //doesn't work

SetWindowPos(hwnd2, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); 
                                                                  //doesn't work

SetWindowPos(hwnd2, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
                                       // hwnd2 "always" on top, not what I want

SetActiveWindow(hwnd2); // doesn't work too (for replying to Magnus Skog, thanks)

SwitchToThisWindow(hwnd2, TRUE);// …
Run Code Online (Sandbox Code Playgroud)

c++ winapi visual-c++

31
推荐指数
6
解决办法
5万
查看次数

最大化另一个进程'Window in .NET

我有一个处理.net(proc.MainWindowHandle)中另一个进程的主窗口.如何最大化.net内部的窗口?

.net windows-process

13
推荐指数
1
解决办法
2万
查看次数

IE7 中的多个选项卡与工具栏的一个实例

我在 C# 中为 Internet Explorer 开发了一个工具栏,用于从外部应用程序发送和接收 URL。它在 IE6 中运行良好,但我想在新版本 (IE7) 中利用标签式浏览,但我在那里遇到了障碍。似乎在 IE7 中,每个选项卡都计为一个单独的实例,因此是我的工具栏的一个单独实例。

对于我的一生,我找不到一种方法让单个实例出现在单个 IE 窗口中的每个选项卡上。我所能做的就是注册为 ROT 的 com 对象,并让每个实例进行通信并镜像所有其他实例,但这似乎不必要地复杂。有没有人找到解决方法?

c# internet-explorer

5
推荐指数
1
解决办法
724
查看次数

检查WPF应用程序的其他实例是否正在运行

WPF应用程序是否可以检查应用程序的任何其他实例是否正在运行?我正在创建一个应该只有一个实例的应用程序,当用户再次尝试打开它时,它会提示"另一个实例正在运行"的消息.

我猜我必须检查进程日志以匹配我的应用程序名称,但我不知道如何去做.

c# wpf instance single-instance

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

C#SetForegroundWindow不工作

我已经限制我的C#windows应用程序只允许一次运行一个实例,使用这个问题如何强制C#.net应用程序在Windows中只运行一个实例?

它运行良好,并且不允许同时运行多个应用程序实例.

问题是如果用户试图打开应用程序的第二个实例,我希望当前活动的实例能够出现在前面.

我工作的问题似乎解决了这个问题,但它对我不起作用.

我认为这是因为我的应用程序不符合允许该方法的标准:SetForegroundWindow 工作.

我的问题是,我怎样才能做到这一点.我的代码如下:

using System    ;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace RTRFIDListener_Client
{
    static class Program
    {
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool SetForegroundWindow(IntPtr hWnd);

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            bool createdNew = true;

            using (Mutex mutex = new Mutex(true, "RTRFIDListener_Client", out createdNew))
            {
                if (createdNew)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new frm_Main());
                }
                else
                {
                    Process current …
Run Code Online (Sandbox Code Playgroud)

c#

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

一次启动应用程序C#

我只是在C#中创建一个应用程序,但我不喜欢它.我想让应用程序运行一次.现在,如果我的应用程序正在运行,当我再次运行应用程序时,将启动另一个应用程序.我想让应用程序只运行一次,如果你想再次运行应用程序,而不是创建另一个应用程序,而是启动正在运行的应用程序.

谢谢.

c# forms single-instance

-1
推荐指数
1
解决办法
3118
查看次数