高手们,如何隐藏TaskBar上的窗口按钮? 我印象中是ShowWindow(Application.Handle,SW_HIDE);试试行不? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->ShowMainForm = false; ShowWindow(Application->Handle, SW_HIDE);//这一句 Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0;}这是bcb的程序,我不知道有标志的那一句在delphi应该放在那里,不过意思是一样的 不行,试过了。我还试过用另一个form来做Main Form,然后用一个TrayIcon的控件,先把Main Form在程序开始启动的时候就隐藏,这个时候那个TaskBar的按钮的确没了,但当我想显示另一个窗口(不是主窗口)的时候,任务条上又出现了那个和程序相关联的按钮。 在FormOnCreat中加入SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);就行了呵呵wjzhuang(爱吃醋的程序猪)兄 Application.ShowMainForm = false;把窗体都隐藏了,他好像不是这个意思 aningstar兄,你的方法我也试过了。555555555,我也不知道为什么不行,MSDN上写着设置WS_EX_TOOLWINDOW标志的时候,Delphi窗口的TaskBar按钮就会消失,但不行啊。大家也可以试试,如果新建一个任务,并在Form的BorderStyle选bsSizeable,这个时候在任务条上照样会出现窗口按钮,但MSDN上说是不会出现的!晕!!!! @_@! Delphi的每一个应用程序都有一个TApplication类的隐藏的窗体在运行,名字与你的应用程序的可执行文件一样。Delphi在这里封装了很多消息和错误的处理。就是说用New Application新建出来一个新的应用程序都有两个窗体。所以要用Api来隐藏的话,需要对主窗体来操作。还好,Borland提供了一个方法:program Project1;......begin Application.Initialize; Application.ShowMainForm := False; Application.CreateForm(TForm1, Form1); Application.Run;end. 我刚解决了这个问题。用过SetwindowLong api是对的加上 WS_EX_TOOLWINDOW 关键的是用application.handle而不是form1.handle. 不会吧!我的怎么行!procedure TForm1.FormCreate(Sender: TObject);beginSetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);end; 如果不是山穷水尽,我也不会来麻烦大家啦。我先说说我的程序吧,我想做成和OICQ的界面差不多的样子。我先建一个form,然后 SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME); self.Width :=self.Width+1; self.Width :=self.Width-1;把这个form的标题条去除,成为一个可以改变窗口大小,但没有标题条的窗体。然后就加入一个TrayIcon控件,用的是CoolTrayIcon(这个控件应该很多人用吧?做得不错),打算在StatusBar里显示一个图标,这个时候我发现TaskBar里出现程序的按钮,我想除去,但试过在程序初始化,窗体create的事件里加入SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);之类的函数,从而删除那个按钮,但都不成功。我是完全按照MSDN上写的去做了,但都不行。 天啊,我从新建一个项目,然后 SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME); self.Width :=self.Width+1; self.Width :=self.Width-1;这样就可以,但我已有的程序为什么就不行呢?怪!多谢大家了。起码现在我的思路清淅一点,呵呵。我想这破东西想半天了。 procedure TForm1.FormCreate(Sender: TObject);beginSetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME); self.Width :=self.Width+1; self.Width :=self.Width-1;end;这样在任务栏就不会出现按钮(我没有用TrayIcon控件)如果还有问题,你先把TrayIcon控件去掉 现在看来是TrayIcon的事试着自己写一下吧! 现在问题已经解决,不过我怎么想也不知道为什么原因的不行。由于我的能给的分不多,所以就全给aningstar啦,哈哈。 发个帖:createservice创建的服务无法启动,有经验的大神指教下 三层数据库 ClientDataSet1在客户端保存记录成功后客户端不刷新刚保存的记录 Access 的日期比较问题 DBGrid控制输出的问题?请求高手 我看了Inside VCL也有些问题想问。。。 怎样才能让Help & Manual支持中文显示? 高兴,散分(3) 请教关于动态控件的访问. resource workshop 在哪里? 请问这个错误怎么回事? Delphi的 Bug? 关于数据库连接的几点疑问?
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm = false;
ShowWindow(Application->Handle, SW_HIDE);//这一句
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
这是bcb的程序,我不知道有标志的那一句在delphi应该放在那里,不过意思是一样的
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
就行了
呵呵wjzhuang(爱吃醋的程序猪)兄
Application.ShowMainForm = false;
把窗体都隐藏了,他好像不是这个意思
program Project1;
......
begin
Application.Initialize;
Application.ShowMainForm := False;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
用过SetwindowLong api是对的加上 WS_EX_TOOLWINDOW
关键的是用application.handle而不是form1.handle.
我的怎么行!
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;
SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME);
self.Width :=self.Width+1;
self.Width :=self.Width-1;
把这个form的标题条去除,成为一个可以改变窗口大小,但没有标题条的窗体。然后就加入一个TrayIcon控件,用的是CoolTrayIcon(这个控件应该很多人用吧?做得不错),打算在StatusBar里显示一个图标,这个时候我发现TaskBar里出现程序的按钮,我想除去,但试过在程序初始化,窗体create的事件里加入SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);之类的函数,从而删除那个按钮,但都不成功。我是完全按照MSDN上写的去做了,但都不行。
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME);
self.Width :=self.Width+1;
self.Width :=self.Width-1;
这样就可以,但我已有的程序为什么就不行呢?怪!多谢大家了。起码现在我的思路清淅一点,呵呵。我想这破东西想半天了。
begin
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME);
self.Width :=self.Width+1;
self.Width :=self.Width-1;end;
这样在任务栏就不会出现按钮(我没有用TrayIcon控件)
如果还有问题,你先把TrayIcon控件去掉
试着自己写一下吧!