IDC资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回IDC资讯列表

Win32程序在启动时怎么激活前一个启动程序的窗口

发布时间:2022-05-31

本文主要介绍Win32程序启动时如何激活上一个启动程序的窗口,具有一定的参考价值。有兴趣的朋友可以参考一下。希望你看完这篇文章后收获很大。让桂哥网络带你去了解一下。

UWP计划是与生俱来的。当然,新的API (10.0.17134)也提供了多实例功能。然而,传统的Win32程序一定要自己控制单个实例。

激活之前进程的窗口

我们可以通过进程名称找到先前启动的进程实例,如果找到,激活它的窗口。

[STAThread]

staticvoidMain(字符串[]参数)

{

varcurrent=进程。GetCurrentProcess();

varprocess=Process。GetProcessesByName(当前。ProcessName)。FirstOrDefault(x=x.Id!=当前。id);

if(process!=null)

{

varhwnd=进程。MainWindowHandle

ShowWindow(hwnd,9);

返回;

}

//启动自己的主窗口。这部分代码省略了。

}

[DllImport('user32.dll')]

privatesticexternintshowwindow(IntPtrhwnd,uintnCmdShow);你一定认为9很奇怪,它是许多不同nCmdShow的值:

使.减少(或缩小)到最小量

达到最大值

恢复

此外,找到的窗口此时可能不活动。例如,在Windows 10中,此窗口可能在另一个桌面上。然后我们需要添加额外的代码来显示它。

在前一个显示窗口之后,再次调用SetForegroundWindow将其激活到前面。如果它在另一个桌面上,它会切换到相应的桌面。

[DllImport('USER32。DLL')]

publicationstatexternboolsetforegroundwindow(IntPtrhWnd);

varhwnd=进程。MainWindowHandle

ShowWindow(hwnd,9);

SetForegroundWindow(hwnd);找到并激活窗口

以上方法适用于普通主窗口。但是,当窗口不是流程的主窗口,或者ShowInTaskBar设置为false时,就不会生效(此时窗口句柄会发生变化)。

因此,我们需要通过其他方式找到窗口。

[STAThread]

staticvoidMain(字符串[]参数)

{

Varhwnd=FindWindow(null,“该窗口的标题栏文本”);

if(hwnd!=IntPtr。零)

{

ShowWindow(hwnd,9);

返回;

}

//启动自己的主窗口。这部分代码省略了。

}

[DllImport('user32.dll ',CharSet=CharSet。Unicode)]

publicationstatexternintptrfindwindow(stringlpClassName,stringpwindowname);感谢您仔细阅读本文。希望桂哥网络分享的文章《Win32程序启动时如何激活上一个启动程序的窗口》对大家有所帮助。也希望大家支持桂哥网络,关注桂哥网络,更多相关知识等着你去学习!


TikTok千粉号购买平台:https://tiktokusername.com/