标题:托盘运行失败
只看楼主
s912360101
Rank: 3Rank: 3
来 自:山西
等 级:论坛游侠
帖 子:168
专家分:147
注 册:2009-3-15
结帖率:85%
已结贴  问题点数:20 回复次数:3 
托盘运行失败
各位大虾。小弟做托盘程序时运行失败。下面的是从网上找的源码。基本上都是你抄来。我抄去的。Delphi7调试不成功。

 unit   Unit1;     
   
  interface     
   
  {   记住在uses部分中包括   ShellAPI}     
  uses     
  Windows,   Messages,   SysUtils,   Classes,     
  Graphics,   Controls,   Forms,   Dialogs,     
  ShellAPI,   StdCtrls;     
   
  {自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息}     
  {自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息}     
  const   MY_MESSAGE   =   WM_USER   +   100;     
   
  type     
  TForm1   =   class(TForm)     
  procedure   FormCreate(Sender:   TObject);     
  procedure   FormClose(Sender:   TObject;   var   Action:   TCloseAction);     
  procedure   FormPaint(Sender:   TObject);     
  private     
  procedure   OnIconNotify(var   Message:   TMessage);     
  message   MY_MESSAGE;     
  public     
  {   Public   declarations   }     
  end;     
   
  var     
  Form1:   TForm1;     
   
  implementation     
   
  {$R   *.DFM}     
   
   
  {当小图标捕捉到鼠标事件时进入此过程}     
  {当小图标捕捉到鼠标事件时进入此过程}     
  procedure   TForm1.OnIconNotify(var   Message:   TMessage);     
  const     
  Busy:   Boolean   =   false;     
  begin     
  if   not   Busy   then   begin     
  Busy   :=   true;     
  if   Message.LParam=WM_LBUTTONDOWN   then     
  if   Application.MessageBox('Are   you   sure',     
  'Exit',   MB_YESNO)=IDYES   then   Close;     
  Busy   :=   false;     
  end;     
  end;     
   
  {当主Form建立时通知Windows加入小图标}     
  procedure   TForm1.FormCreate(Sender:   TObject);     
  var     
  nid:   TNotifyIconData;     
  begin     
  nid.cbSize   :=   sizeof(nid);   //   nid变量的字节数     
  nid.Wnd   :=   Handle;   //   主窗口句柄     
  nid.uID   :=   -1;   //   内部标识,可设为任意数     
  nid.hIcon   :=   Application.Icon.Handle;   //   要加入的图标句柄,可任意指?   
  nid.hIcon   :=   Application.Icon.Handle;   //   要加入的图标句柄,可任意指?   
   
  nid.szTip   :=   'This   is   a   test   application';   //   提示字符串     
  nid.uCallbackMessage   :=   MY_MESSAGE;   //   回调函数消息     
  nid.uFlags   :=   NIF_ICON   or   NIF_TIP   or   NIF_MESSAGE;   //   指明哪些字段有?   
   
  if   not   Shell_NotifyIcon(NIM_ADD,   @nid)   then   begin     
  ShowMessage('Failed!');     
  Application.Terminate;     
  end;     
  {将程序的窗口样式设为TOOL窗口,可避免在任务条上出现}     
  SetWindowLong(Application.Handle,   GWL_EXSTYLE,   WS_EX_TOOLWINDOW);     
  end;     
   
  {程序被关闭时通知Windows去掉小图标}     
  procedure   TForm1.FormClose(Sender:   TObject;   var   Action:   TCloseAction);     
  var     
  nid:   TNotifyIconData;     
  begin     
  nid.cbSize   :=   sizeof(nid);   //   nid变量的字节数     
  nid.cbSize   :=   sizeof(nid);   //   nid变量的字节数     
  nid.uID   :=   -1;   //内部标识,与加入小图标时的数一致     
  nid.Wnd   :=   Handle;   //主窗口句柄     
  Shell_NotifyIcon(NIM_DELETE,   @nid);   //去掉小图标     
  Shell_NotifyIcon(NIM_DELETE,   @nid);   //去掉小图标     
  end;     
   
  {主窗口初始化完毕并显示时将激活Paint重画事件,此时将主窗口隐藏}     
  procedure   TForm1.FormPaint(Sender:   TObject);     
  begin     
  Hide;     
  end;     
   
  end.
搜索更多相关主题的帖子: 运行 失败 托盘 
2009-10-07 11:57
s912360101
Rank: 3Rank: 3
来 自:山西
等 级:论坛游侠
帖 子:168
专家分:147
注 册:2009-3-15
得分:0 
怎么没有人啊。?急着呢 。

孤独是一个人的狂欢
2009-10-09 21:39
mohao163
Rank: 5Rank: 5
来 自:南宁
等 级:职业侠客
威 望:2
帖 子:79
专家分:383
注 册:2009-9-25
得分:20 
说实在的,我也不太懂,不过我觉得你要是想要隐藏窗体可以在Project1中添加:
程序代码:
program Project1; 
 
uses 
  Forms, 
  Unit1 in 'Unit1.pas' {Form1}, 
 
{$R *.res} 
 
begin 
  Application.Initialize; 
  Application.CreateForm(TForm1, Form1); 
  //Application.ShowMainForm:=false; 
  Application.Run; 
end.

Application.ShowMainForm:=false;  
即可,这样程序在打开后就隐藏到后台去运行了
2009-10-10 13:57
xuchuantao17
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-12-30
得分:0 
你应该看看,托盘控件的源代码,这比来这里问好,速度也快
2009-12-30 23:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-287762-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.377822 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved