如何实现启动计算机就自动启动程序?如何使程序运行时图标在状态栏上显示,就象qq一样?(在线) 如何实现启动计算机就自动启动程序?如何使程序运行时图标在状态栏上显示,就象qq一样? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、简单的方法:在启动的文件夹里创建一个快捷方式2、Shell_NotifyIcon(nim_add,@IconData) 这个问题已经有很多的人在问了,你可以搜一搜!要让程序在状态栏上,我可以给你一个源程序:{////////////////////////////////////////////// date: 2003-05-22// operation: 1、用户自定义消息的响应;/ 2、系统托盘的制作/ 3、TNotifyIconData 结构的具的含义,如下/ 1> cbSize就是你定义的NotifyIcon变量的大小,用SizeOf(TNotifyIconData)可以取得, 在C/C++中,每当要为一个结构体变量分配内存的时候都要:通过 SizeOf(Struct type) 来获知存放一个这样的结构体变量要多少内存。 2> Wnd是一个句柄,你希望托盘程序产生的消息有哪个窗体来处理就让Wnd指向那个窗体。 例如:你准备在任务栏的托盘小图标上单击时窗体是窗体在“显示”和“隐藏”之间切换, 则把Wnd指向主窗体。 3> uID:如果你要创建多个托盘小程序,那么怎么区分它们呢?就是靠这个ID号来区分。 3> uFlags是一个标志位,它表示当前所创建的托盘程序具有哪些性质: NIF_ICON 表示当前所设置的图标(即hIcon的值)是有效的 NIF_MESSAGE 表示当前所设置的系统消息(即uCallBackMessage的值)是有效的 NIF_TIP 表示当前所设置的提示条(即szTip的值)是有效的。 4> uCallBackMessage这是7个部分里面最重要的一个。这里指定一个回调消息,也就是说 这里定义一个消息名,当你单击或者右击托盘图标的时候就会向你在Wnd所指向的窗体 发送一个在uCallBackMessage中定义的消息名,然后你在程序中定义一个消息出来函数 来处理这个消息。这样就把Windows关于消息的整套流程都处理好了。 6> hIcon为托盘图标的句柄,根据这个句柄你就可以增加、修改、删除图标。 7> szTip就是当你的鼠标放到任务栏托盘的小图标上的时候弹出来的提示信息。/ address: 研发中心/////////////////////////////////////////////}unit Tray;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, Menus;const WM_MYNOTIFY = WM_USER + 1000;type TForm1 = class(TForm) PopupMenu1: TPopupMenu; EST11: TMenuItem; N1: TMenuItem; EST21: TMenuItem; EST31: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } Procedure WmMyNotify(Var Msg: TMessage); message WM_MYNOTIFY; public { Public declarations } NotifyIcon: TNotifyIconData; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin with NotifyIcon do begin cbSize := SIZEOF(TNotifyIconData); Wnd := Handle; uID := 1; uFlags := NIF_MESSAGE OR NIF_ICON OR NIF_TIP; uCallbackMessage := WM_MYNOTIFY; hIcon := Application.Icon.Handle; szTip := '托盘测试2003-05-22'; end; //将设置好的变量加入到系统中,以便处理 Shell_NotifyIcon(NIM_ADD, @NotifyIcon);end;procedure TForm1.WmMyNotify(var Msg: TMessage);Var Point: TPoint;begin case Msg.LParam of WM_LBUTTONDOWN: BEGIN GetCursorPos(Point); //get mouse left down postion; PopupMenu1.Popup(Point.X, Point.Y); END; WM_RBUTTONDOWN: ShowMessage('你在“托盘测试”程序中单击的是右键!'); end;end;procedure TForm1.FormDestroy(Sender: TObject);begin //释放掉建立的托盘程序 Shell_NotifyIcon(NIM_DELETE, @NotifyIcon);end;end. 把自动启动放到注册表中去Hkey_local_machinesoftware-microsoft-windows-currentversion-run写入一个字段就可以了。关于托盘,利用控件很容易实现。 右下脚的东东在这里:http://218.56.11.178:8020/web/index.aspx-》下载基地-》控件-界面-》TrayBarIcon托盘控件启动方法:1。在“启动”项中假一项快截方式;2。注册: 注册表中的位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 注册参考:http://218.56.11.178:8020/web/index.aspx-》 技术文章-》利用WISE工具捕获注册表信息 应用程序打包问题的解决方案 Wise打包工具的使用事例 这样的语句解释的意思对吗? 怎么把数据库里的路径赋给mediaplayer? 怎样将JPG文件转换成AVI文件?谢谢 动态创建TADOQuery,这样写为何不对? 查询出某列的值为0时,显示为A;为1时,显示为B 简单的SQL语句求解,急用!谢谢!』100分 现在很多人结帖不给分 搞Microsoft text drive 不定,100分请教! 真的没有人回答了吗?很急! corba的不解问题!!!! 大家帮帮忙 请问怎么调试DLL中的代码啊??? 如何实现拨号远程上传数据用delphi
2、Shell_NotifyIcon(nim_add,@IconData)
你可以搜一搜!
要让程序在状态栏上,
我可以给你一个源程序:
{/////////////////////////////////////////////
/ date: 2003-05-22
/
/ operation: 1、用户自定义消息的响应;
/ 2、系统托盘的制作
/ 3、TNotifyIconData 结构的具的含义,如下
/ 1> cbSize就是你定义的NotifyIcon变量的大小,用SizeOf(TNotifyIconData)可以取得,
在C/C++中,每当要为一个结构体变量分配内存的时候都要:通过 SizeOf(Struct type)
来获知存放一个这样的结构体变量要多少内存。
2> Wnd是一个句柄,你希望托盘程序产生的消息有哪个窗体来处理就让Wnd指向那个窗体。
例如:你准备在任务栏的托盘小图标上单击时窗体是窗体在“显示”和“隐藏”之间切换,
则把Wnd指向主窗体。
3> uID:如果你要创建多个托盘小程序,那么怎么区分它们呢?就是靠这个ID号来区分。
3> uFlags是一个标志位,它表示当前所创建的托盘程序具有哪些性质:
NIF_ICON 表示当前所设置的图标(即hIcon的值)是有效的
NIF_MESSAGE 表示当前所设置的系统消息(即uCallBackMessage的值)是有效的
NIF_TIP 表示当前所设置的提示条(即szTip的值)是有效的。
4> uCallBackMessage这是7个部分里面最重要的一个。这里指定一个回调消息,也就是说
这里定义一个消息名,当你单击或者右击托盘图标的时候就会向你在Wnd所指向的窗体
发送一个在uCallBackMessage中定义的消息名,然后你在程序中定义一个消息出来函数
来处理这个消息。这样就把Windows关于消息的整套流程都处理好了。
6> hIcon为托盘图标的句柄,根据这个句柄你就可以增加、修改、删除图标。
7> szTip就是当你的鼠标放到任务栏托盘的小图标上的时候弹出来的提示信息。/ address: 研发中心
/////////////////////////////////////////////}
unit Tray;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellAPI, Menus;const
WM_MYNOTIFY = WM_USER + 1000;type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
EST11: TMenuItem;
N1: TMenuItem;
EST21: TMenuItem;
EST31: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
Procedure WmMyNotify(Var Msg: TMessage); message WM_MYNOTIFY;
public
{ Public declarations }
NotifyIcon: TNotifyIconData;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
with NotifyIcon do
begin
cbSize := SIZEOF(TNotifyIconData);
Wnd := Handle;
uID := 1;
uFlags := NIF_MESSAGE OR NIF_ICON OR NIF_TIP;
uCallbackMessage := WM_MYNOTIFY;
hIcon := Application.Icon.Handle;
szTip := '托盘测试2003-05-22';
end; //将设置好的变量加入到系统中,以便处理
Shell_NotifyIcon(NIM_ADD, @NotifyIcon);
end;procedure TForm1.WmMyNotify(var Msg: TMessage);
Var
Point: TPoint;
begin
case Msg.LParam of
WM_LBUTTONDOWN:
BEGIN
GetCursorPos(Point); //get mouse left down postion;
PopupMenu1.Popup(Point.X, Point.Y);
END;
WM_RBUTTONDOWN: ShowMessage('你在“托盘测试”程序中单击的是右键!');
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
//释放掉建立的托盘程序
Shell_NotifyIcon(NIM_DELETE, @NotifyIcon);
end;end.
Hkey_local_machinesoftware-microsoft-windows-currentversion-run写入一个字段就可以了。关于托盘,利用控件很容易实现。
注册表中的位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
应用程序打包问题的解决方案
Wise打包工具的使用事例