社区
C#
帖子详情
如何判断一个应用程序是MDI还是SDI
fengling2001
2009-07-13 09:23:28
我想监控一些应用程序,如何知道他们是MDI还是SDI,例如firefox 和 visual studio
...全文
38
3
打赏
收藏
如何判断一个应用程序是MDI还是SDI
我想监控一些应用程序,如何知道他们是MDI还是SDI,例如firefox 和 visual studio
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zgke
2009-07-14
打赏
举报
回复
如果是.NET 的 可以通过实例句柄来判断..
非.NET的使用API 参考
public class Class1
{
private delegate bool EnumWindowsProc(IntPtr p_Handle, int p_Param);
[DllImport("user32.dll")]
private static extern int EnumChildWindows(IntPtr hWndParent, EnumWindowsProc ewp, int lParam);
[DllImport("user32.dll")]
private static extern int EnumWindows(EnumWindowsProc ewp, int lParam);
[DllImport("User32.dll", CharSet = CharSet.Auto)]
private static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
private static extern bool IsWindowVisible(IntPtr hWnd);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
private struct STRINGBUFFER
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public string szText;
}
private static IList<IntPtr> m_WindowsList;
private static IntPtr m_Statusbar;
private static bool m_IsMdi = false;
/// <summary>
/// 获取所有窗体
/// </summary>
/// <returns></returns>
public static Dictionary<IntPtr, string> LoadWindows()
{
m_WindowsList = new List<IntPtr>();
m_Statusbar = FindWindow("Shell_TrayWnd", "");
EnumWindowsProc _EunmWindows = new EnumWindowsProc(NetEnumWindows);
EnumWindows(_EunmWindows, 0);
Dictionary<IntPtr, string> _Return = new Dictionary<IntPtr, string>();
EnumWindowsProc _EunmControl = new EnumWindowsProc(NetEnumControl);
foreach (IntPtr _Windows in m_WindowsList)
{
m_IsMdi = false;
EnumChildWindows(_Windows, _EunmControl, 0);
if (m_IsMdi)
{
_Return.Add(_Windows, "MDI");
}
else
{
_Return.Add(_Windows, "SDI");
}
}
return _Return;
}
private static bool NetEnumWindows(IntPtr p_Handle, int p_Param)
{
if (!IsWindowVisible(p_Handle))return true;
if (p_Handle == m_Statusbar) return true;
m_WindowsList.Add(p_Handle);
return true;
}
private static bool NetEnumControl(IntPtr p_Handle, int p_Param)
{
STRINGBUFFER _ClassName = new STRINGBUFFER();
GetClassName(p_Handle, out _ClassName, 255);
if (_ClassName.szText == "MDIClient")
{
m_IsMdi = true;
}
return true;
}
}
hecker728
2009-07-14
打赏
举报
回复
这个貌似实现不了。。。
kuangfengnuhou
2009-07-14
打赏
举报
回复
占坑,等高手
Mdi
Plus
MDI
框架 v1.0.3
框架有点类似于多个文档模板的
MDI
应用程序
,但是普通的
MDI
程序在新建
一个
文档前无法绘图,除非 子类化CMainFrame或截获C
MDI
Client的消息。这些方式不便进行模块化开发。
Mdi
Plus框架主要优点是在 新建
一个
文档前...
Mdi
Plus
MDI
框架
框架有点类似于多个文档模板的
MDI
应用程序
,但是普通的
MDI
程序在新建
一个
文档前无法绘图,除非 子类化CMainFrame或截获C
MDI
Client的消息。这些方式不便进行模块化开发。
Mdi
Plus框架主要优点是在 新建
一个
文档前...
pytkapp:用于开发
SDI
/
MDI
应用程序
和一组小部件的Python软件包。-开源
查看可用的演示:pytkapp / demo / run_ptaoptionsdemo.py-运行选项容器的GUI演示(可用的小部件,规则)pytkapp / demo / run_pta
mdi
demo.py-运行
MDI
应用程序
的演示pytkapp / demo / run_pta
sdi
demo.py-运行
SDI
应用...
Windows系统托盘中的
SDI
/
MDI
MFC
应用程序
本文介绍了创建
应用程序
的过程,该
应用程序
在单击系统任务栏图标时会被隐藏,并处于启动状态。 随附了
SDI
VC ++ v6.0演示项目。 该项目演示了隐藏窗口,系统任务栏图标和启动翻转防止技术的使用。
Delphi7__
应用程序
界面设计技术
Delphi7
应用程序
界面设计技术,要点:多窗体程序设计,
SDI
应用程序
设计,
MDI
应用程序
设计, 变量的作用域
C#
110,534
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章