社区
Windows SDK/API
帖子详情
分不够再加!如何创建系统级模式窗体
VirtualDesktop
2006-06-23 03:20:42
就是要求这个窗体象点击 开始-关机 的关机对话框一样,阻止用户对windows其他部分进行操作
...全文
415
7
打赏
收藏
分不够再加!如何创建系统级模式窗体
就是要求这个窗体象点击 开始-关机 的关机对话框一样,阻止用户对windows其他部分进行操作
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
VirtualDesktop
2006-06-25
打赏
举报
回复
晕~我的意思 是那个Tab的问题可以忽略~
cczlp
2006-06-23
打赏
举报
回复
本是好心提醒的, 既然lz评为"吹毛求疵", 那只好闪了
「已注销」
2006-06-23
打赏
举报
回复
关注...
VirtualDesktop
2006-06-23
打赏
举报
回复
我要的是不能点击系统其他部分,Showmodel可以我就不来问了
Alt+Tab以后关机对话框就回取消的,你有点吹毛求疵cczlp
daydayup234
2006-06-23
打赏
举报
回复
不会是简单的showmodel吧
cczlp
2006-06-23
打赏
举报
回复
谁说开始-关机 的关机对话框禁止用户的其它操作了?
用ALT+TAB试试.
海嵌
2006-06-23
打赏
举报
回复
你可以参考
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
HDESK DesktopHandle;
bool Result;
SECURITY_DESCRIPTOR sd;
SECURITY_ATTRIBUTES sa;
LPSECURITY_ATTRIBUTES lpsa = NULL;
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize = sizeof(osv);
GetVersionEx(&osv);
if(osv.dwPlatformId == VER_PLATFORM_WIN32_NT) //NT系统需要指定lpsa参数
{
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, true, NULL, false);
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = true;
sa.lpSecurityDescriptor = &sd;
lpsa = &sa;
}
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW |STARTF_USESTDHANDLES;
si.wShowWindow = SW_SHOW;
si.lpDesktop = "MyDesktop";
PROCESS_INFORMATION pi; //尝试打开特定的桌面
DesktopHandle = OpenDesktop("MyDesktop",DF_ALLOWOTHERACCOUNTHOOK,
true,DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW |
DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL |
DESKTOP_JOURNALPLAYBACK |
DESKTOP_JOURNALRECORD | DESKTOP_READOBJECTS |
DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS);
if(!DesktopHandle) //打开失败则创建该桌面
{
DesktopHandle = CreateDesktop("MyDesktop",NULL,NULL,
DF_ALLOWOTHERACCOUNTHOOK,
DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW |
DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL |
DESKTOP_JOURNALPLAYBACK |
DESKTOP_JOURNALRECORD | DESKTOP_READOBJECTS |
DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS,
lpsa);
if(!DesktopHandle)
{
ShowMessage("DeskTop Create Error!");
}
Result = false; //特定桌面不存在,当前进程肯定没有运行在特定桌面
}
else //特定的桌面存在,则判断当前的Application是否运行于该桌面
{
STARTUPINFO SI;
GetStartupInfo(&SI); //获取启动信息
if(AnsiString(SI.lpDesktop).Pos("MyDesktop")) //比较Desktop参数
{
Result = true; //程序运行在正确(特定的'MyDeskTop')的桌面
}
else
{
Result = false; //程序没有运行在特定的桌面
}
}
if(Result == false && DesktopHandle)//特定的桌面存在,并且当前进程不在特定的桌面
{//则创建当前进程的一个新的运行副本,同时指定运行在特定的桌面
if( CreateProcess(NULL, Application->ExeName.c_str(),
lpsa, lpsa, true, 0, 0, 0, &si, &pi))
{
SwitchDesktop(DesktopHandle); //切换到特定的桌面,否则新的程序进程将看不到
}
else
{
CloseDesktop(DesktopHandle);
ShowMessage("Process Creat Error!");
}
}
CloseDesktop(DesktopHandle);
}
告别C#!用C++/CLI在VS2019中实现WinForm拖拽开发(避坑指南)
本文详解如何在VS2019中使用C++/CLI进行WinForm桌面应用开发,涵盖环境配置(v142 CLI支持、.NET桌面工具)、CLR项目
创建
、
窗体
设计器集成、混合编程内存管理(gcnew/managed ref)、数据绑定与异步实现,并重点剖析项目属性陷阱、资源同步失效及混合
模式
调试配置等高频问题,助力C++开发者高效复用原有代码库对接.NET UI生态。
告别WinForm界面错乱!SunnyUI + FlowLayoutPanel 实战解决DPI与布局难题
本文聚焦WinForm在高DPI多显示器环境下的界面错乱难题,结合SunnyUI的DPI感知与控件
级
缩放能力,以及FlowLayoutPanel的动态流式布局机制,
系统
性地实现界面自适应。涵盖
系统
级
DPI配置、控件
级
缩放设置、多语言布局适配、UISymbolButton等特殊控件定制方案,并提供调试清单与性能优化策略,显著降低DPI相关投诉并减少布局代码量。
C++ 之 Hook编程
钩子技术在Windows编程中用于拦截和处理消息。全局钩子监视
系统
级
消息队列,而局部钩子仅关注当前进程消息。常见应用包括观察
模式
、注入
模式
(如插件和替换
模式
),用于动态库注入、函数替换等。钩子可能导致性能损耗,因此使用后应及时卸载。LRESULT是窗口程序或回调函数返回的32位值。钩子编程常置于动态链接库中以提高效率。
Windows Runtime-------面向对象化的c++(并非意味着托管)
Windows RT 是微软为适应移动时代需求而推出的全新开发平台,它提供了革命性的 Metro UI,全新的
系统
级
Native API,MVC
模式
,C++ 组件扩展,支持多种架构,异步技术以及节能特性。
告别WinForm界面乱跑!用SunnyUI的DPIScale和FlowLayoutPanel搞定多
分
辨率与动态布局
本文聚焦WinForm桌面应用在多
分
辨率和多语言场景下的界面适配难题,重点介绍SunnyUI的DPIScale属性实现高DPI自动缩放,以及FlowLayoutPanel容器支持内容驱动的动态布局。涵盖DPIScale配置流程、效果对比、FlowLayoutPanel基础用法与多语言适配实践,并给出自定义控件(如按钮)的文本感知适配技巧及二者协同使用的层
级
与顺序优化策略。
Windows SDK/API
1,222
社区成员
8,135
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章