相关疑难解决方法(0)

如何在WPF中处理WndProc消息?

寻找WPF陡峭的学习曲线.

在好的Windows窗体中,我只是覆盖WndProc,并在它们进入时开始处理消息.

有人能告诉我如何在WPF中实现同样的事情吗?

c# wpf wndproc

106
推荐指数
3
解决办法
9万
查看次数

将消息发送到Windows进程(而不是其主窗口)

我有一个应用程序,在后续启动时检测是否已经运行了同名的进程,如果是,则激活正在运行的应用程序窗口,然后退出.

问题是主窗口可能被隐藏(只有通知区域图标可见),因此没有窗口句柄.

在启动时,前一个实例的MainWindowHandle属性为0,所以我无法发送ShowWindowPostMessage.

有没有办法可以发送一条可以被正在运行的应用程序截获的消息,从而允许它显示其主窗口?

该应用程序是用C#编写的,我正在使用以下代码实现此目的.

[STAThread]
static void Main()
{
    bool createdNew = true;
    using (Mutex mutex = new Mutex(true, "MyMutexName", out createdNew))
    {
        if (createdNew)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
        else
        {
            Process current = Process.GetCurrentProcess();
            foreach (Process process in Process.GetProcessesByName(current.ProcessName))
            {
                if (process.Id != current.Id)
                {
                    Interop.WINDOWINFO pwi = new Interop.WINDOWINFO();
                    IntPtr handle = process.MainWindowHandle;
                    var isVisible = Interop.GetWindowInfo(handle, ref pwi);
                    if (!isVisible)
                    {
                        MessageBox.Show(Constants.APP_NAME + " is already running, check …
Run Code Online (Sandbox Code Playgroud)

.net c# windows interop

9
推荐指数
2
解决办法
3万
查看次数

标签 统计

c# ×2

.net ×1

interop ×1

windows ×1

wndproc ×1

wpf ×1