请教各位老师,我想有个程序启动就隐藏了主窗体。

zhaoloudy 2003-10-09 09:56:20
就是说点击这个程序就好像什么都没有发生一样。不在任务栏出现就更好了。给点代码。谢谢!
...全文
32 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Micowen989 2003-10-10
  • 打赏
  • 举报
回复
没问题,用下面这段代码,提升权限之后强制关机。什么都搞定了。:)
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken))
{
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_SHUTDOWN|EWX_POWEROFF, 0);
}

kataboy 2003-10-10
  • 打赏
  • 举报
回复
To Micowen989(我知道我说的是废话,咦,我怎么又说废话) :
能不能共享一下你是如何做的。如何处理强制关闭其它的程序和线程。
谢谢!
zhaoloudy 2003-10-09
  • 打赏
  • 举报
回复
谢谢!非常有用。
xizhouhawk 2003-10-09
  • 打赏
  • 举报
回复
理解错误,改正一下,赞同dajianshi(拔剑四顾心茫然)
xizhouhawk 2003-10-09
  • 打赏
  • 举报
回复
还要那么多代码吗?

project->option->forms
将AutocreateForms中的所有窗体全部移到右边,也就是Available Forms中去,所有搞定!
Micowen989 2003-10-09
  • 打赏
  • 举报
回复
俺昨天做的自动关机程序
//在任务栏上隐藏程序
DWORD dwExStyle = GetWindowLong(Application->Handle, GWL_EXSTYLE);
dwExStyle |= WS_EX_TOOLWINDOW;
SetWindowLong(Application->Handle, GWL_EXSTYLE, dwExStyle);
try
{

Application->Initialize();
Application->CreateForm(__classid(TMainFrm), &MainFrm);
Application->Title="EdgeSoft Studio 自动关机工具";
Application->ShowMainForm=false;
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//隐藏之后如何弹出呢,注册热键。说到这里,不如我将我的程序片段拿出来看看吧。
HPP:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HOTKEY,TMessage,OnHotKey)
END_MESSAGE_MAP(TForm)
void __fastcall TMainFrm::OnHotKey(TMessage &Message);
//--------------------------------------------------
CPP:
TForm::Dispatch(&Message);
if (!MainFrm->Visible)
{
MainFrm->Show();
MainFrm->BringToFront();
}
else
MainFrm->Hide();
OnCreate事件:
if (!RegisterHotKey(Handle,2000,MOD_CONTROL,VK_F12)) //Ctrl+F12
MessageBox(Handle,"系统热键注册失败","错误",MB_OK|MB_ICONINFORMATION);
OnClose:
UnregisterHotKey(Handle,2000);

我的废话说完了。^-^
swites 2003-10-09
  • 打赏
  • 举报
回复
try
{
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
SendMessage(Application->Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
佣工7001 2003-10-09
  • 打赏
  • 举报
回复
这简单阿,在主窗口的oncreate事件中 ShowWindow(this->Handle,SW_HIDE);
ljianq 2003-10-09
  • 打赏
  • 举报
回复
在项目CPP文件中加入:Application->ShowMainForm=false;
如下:

Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm=false;
Application->Run();
NowCan 2003-10-09
  • 打赏
  • 举报
回复
一楼正解,代码其实就一行。
Micowen989 2003-10-09
  • 打赏
  • 举报
回复
真正用到的隐藏代码只有几行。我贴出来为了楼主方便理解而己
bzmouse 2003-10-09
  • 打赏
  • 举报
回复
Hide();即可

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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