分不够再加!如何创建系统级模式窗体

VirtualDesktop 2006-06-23 03:20:42
就是要求这个窗体象点击 开始-关机 的关机对话框一样,阻止用户对windows其他部分进行操作
...全文
425 7 打赏 收藏 转发到动态 举报
写回复
用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);
}
内容概要:本文深入探讨了DMA高效数据传输实现方案在高性能计算芯片领域的应用与架构创新,重点析了缓存一致性DMA、多通道DMA架构及其在数据中心SmartNIC、存算一体芯片和Chiplet互连等场景中的实践。文章结合RISC-V架构,通过Chisel硬件描述语言和C语言驱动代码,展示了多通道DMA控制器的设计与实现,涵盖仲裁机制、AXI总线适配、散-聚集传输模式及中断处理等核心技术,并强调了性能优化与验证方法。最后展望了AI调度、光互连、近存计算与安全DMA等未来发展方向。; 适合人群:具备数字电路与计算机体系结构基础,从事芯片设计、嵌入式开发或高性能计算相关工作的研发人员,尤其是有1-5年经验的工程师与研究人员。; 使用场景及目标:①理解DMA在突破“内存墙”和降低系统能耗中的关键技术路径;②掌握多通道DMA控制器的硬件设计与驱动开发方法;③应用于SmartNIC、AI加速器、Chiplet等高性能芯片系统的数据传输架构设计;④为构建高带宽、低延迟、高能效的异构计算平台提供参考。; 阅读建议:此资源融合硬件设计与软件驱动,建议结合Chisel仿真与RISC-V平台实操,重点关注DMA与缓存一致性、异构计算单元的协同机制,并通过性能计数器与错误注入手段进行系统验证。

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧