如何实现启动计算机就自动启动程序?如何使程序运行时图标在状态栏上显示,就象qq一样?

解决方案 »

  1.   

    1、简单的方法:在启动的文件夹里创建一个快捷方式
    2、Shell_NotifyIcon(nim_add,@IconData)
      

  2.   

    这个问题已经有很多的人在问了,
    你可以搜一搜!
    要让程序在状态栏上,
    我可以给你一个源程序:
    {/////////////////////////////////////////////
    /  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.
      

  3.   

    把自动启动放到注册表中去
    Hkey_local_machinesoftware-microsoft-windows-currentversion-run写入一个字段就可以了。关于托盘,利用控件很容易实现。
      

  4.   

    右下脚的东东在这里:http://218.56.11.178:8020/web/index.aspx-》下载基地-》控件-界面-》TrayBarIcon托盘控件启动方法:1。在“启动”项中假一项快截方式;2。注册:
      注册表中的位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
      

  5.   

    注册参考:http://218.56.11.178:8020/web/index.aspx-》 技术文章-》利用WISE工具捕获注册表信息 
                    应用程序打包问题的解决方案 
                    Wise打包工具的使用事例