الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكنني وضع برنامجي في شريط المهام جوار الساعة ؟

مغلق
بدأه محمد توتي في 19 يناير 2003 · 15 رد · 2,254 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

يا اخوة أثابكم الله :

كيف يمكنني وضع برنامجي في شريط المهام جوار الساعة ؟

#2

السلام عليكم ...........تكــــــــــــــرم ;)....نزل الكمبونات داه :eek:..وخبرني

بكل جديد..............(gift)(gift)

أخـــــــوك.....:cool:

tryicon.zip

#3

بالنسبة لسؤالك اخي محمد وهو اضافة البرنامج الى صينية النظام

(( اذا كنت تبغا حله عن طريق البرمجه بدلاً من استخدام الكائنات )) :D

فهو كالتالي :

unit Unit1; 



interface 



uses 

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; 



{new constant definitions} 



const 

  NIF_INFO = $10; 

  NIF_MESSAGE = 1; 

  NIF_ICON = 2; 

  NOTIFYICON_VERSION = 3; 

  NIF_TIP = 4; 

  NIM_SETVERSION = $00000004; 

  NIM_SETFOCUS = $00000003; 

  NIIF_INFO = $00000001; 

  NIIF_WARNING = $00000002; 

  NIIF_ERROR = $00000003; 



  NIN_BALLOONSHOW = WM_USER + 2; 

  NIN_BALLOONHIDE = WM_USER + 3; 

  NIN_BALLOONTIMEOUT = WM_USER + 4; 

  NIN_BALLOONUSERCLICK = WM_USER + 5; 

  NIN_SELECT = WM_USER + 0; 

  NINF_KEY = $1; 

  NIN_KEYSELECT = NIN_SELECT or NINF_KEY; 

   

  NIN_BALLOONSHOW = WM_USER + 2; 

  NIN_BALLOONHIDE = WM_USER + 3; 

  NIN_BALLOONTIMEOUT = WM_USER + 4; 

  NIN_BALLOONUSERCLICK = WM_USER + 5; 

  NIN_SELECT = WM_USER + 0; 

  NINF_KEY = $1; 

  NIN_KEYSELECT = NIN_SELECT or NINF_KEY; 

  {other constants can be found in vs.net---vc7's dir: PlatformSDKIncludeShellAPI.h} 



  {define the callback message} 

  TRAY_CALLBACK = WM_USER + $7258; 



  {new NotifyIconData structure definition} 

type 

  PNewNotifyIconData = ^TNewNotifyIconData; 

  TDUMMYUNIONNAME    = record 

    case Integer of 

      0: (uTimeout: UINT); 

      1: (uVersion: UINT); 

  end; 



  TNewNotifyIconData = record 

    cbSize: DWORD; 

    Wnd: HWND; 

    uID: UINT; 

    uFlags: UINT; 

    uCallbackMessage: UINT; 

    hIcon: HICON; 

   //Version 5.0 is 128 chars, old ver is 64 chars 

    szTip: array [0..127] of Char; 

    dwState: DWORD; //Version 5.0 

    dwStateMask: DWORD; //Version 5.0 

    szInfo: array [0..255] of Char; //Version 5.0 

    DUMMYUNIONNAME: TDUMMYUNIONNAME; 

    szInfoTitle: array [0..63] of Char; //Version 5.0 

    dwInfoFlags: DWORD;   //Version 5.0 

  end; 





type 

  TForm1 = class(TForm) 

    procedure FormCreate(Sender: TObject); 

    procedure FormDestroy(Sender: TObject); 

  private 

    IconData: TNewNotifyIconData; 

    procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK; 

    procedure AddSysTrayIcon; 

    procedure ShowBalloonTips; 

    procedure DeleteSysTrayIcon; 

  public 

  end; 



var 

  Form1: TForm1; 



implementation 



{$R *.DFM} 



uses 

  ShellAPI; 



procedure TForm1.SysTrayIconMsgHandler(var Msg: TMessage); 

begin 

  case Msg.lParam of 

    WM_MOUSEMOVE:; 

    WM_LBUTTONDOWN:; 

    WM_LBUTTONUP:; 

    WM_LBUTTONDBLCLK:; 

    WM_RBUTTONDOWN:; 

    WM_RBUTTONUP:; 

    WM_RBUTTONDBLCLK:; 

    //followed by the new messages 

    NIN_BALLOONSHOW: 

    {Sent when the balloon is shown} 

      ShowMessage('NIN_BALLOONSHOW'); 

    NIN_BALLOONHIDE: 

    {Sent when the balloon disappears?Rwhen the icon is deleted, 

    for example. This message is not sent if the balloon is dismissed because of 

    a timeout or mouse click by the user. } 

      ShowMessage('NIN_BALLOONHIDE'); 

    NIN_BALLOONTIMEOUT: 

    {Sent when the balloon is dismissed because of a timeout.} 

      ShowMessage('NIN_BALLOONTIMEOUT'); 

    NIN_BALLOONUSERCLICK: 

    {Sent when the balloon is dismissed because the user clicked the mouse. 

    Note: in XP there's Close button on he balloon tips, when click the button, 

    send NIN_BALLOONTIMEOUT message actually.} 

      ShowMessage('NIN_BALLOONUSERCLICK'); 

  end; 

end; 



  {AddSysTrayIcon procedure add an icon to notification area} 

procedure TForm1.AddSysTrayIcon; 

begin 

  IconData.cbSize := SizeOf(IconData); 

  IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler); 

  {SysTrayIconMsgHandler is then callback message' handler} 

  IconData.uID := 0; 

  IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; 

  IconData.uCallbackMessage := TRAY_CALLBACK;   //user defined callback message 

  IconData.hIcon := Application.Icon.Handle;    //an Icon's Handle 

  IconData.szTip := 'Please send me email.'; 

  if not Shell_NotifyIcon(NIM_ADD, @IconData) then 

    ShowMessage('add fail'); 

end; 



{ShowBalloonTips procedure carry out the new feature: Balloon Tips} 

procedure TForm1.ShowBalloonTips; 

var 

  TipInfo, TipTitle: string; 

begin 

  IconData.cbSize := SizeOf(IconData); 

  IconData.uFlags := NIF_INFO; 

  TipInfo := 'Please send me email.'; 

  strPLCopy(IconData.szInfo, TipInfo, SizeOf(IconData.szInfo) - 1); 

  IconData.DUMMYUNIONNAME.uTimeout := 3000; 

  TipTitle := 'Happyjoe@21cn.com'; 

  strPLCopy(IconData.szInfoTitle, TipTitle, SizeOf(IconData.szInfoTitle) - 1); 

  IconData.dwInfoFlags := NIIF_INFO;     //NIIF_ERROR;  //NIIF_WARNING; 

  Shell_NotifyIcon(NIM_MODIFY, @IconData); 

  {in my testing, the following code has no use} 

  IconData.DUMMYUNIONNAME.uVersion := NOTIFYICON_VERSION; 

  if not Shell_NotifyIcon(NIM_SETVERSION, @IconData) then 

    ShowMessage('setversion fail'); 

end; 



{here's the deletion procedure} 

procedure TForm1.DeleteSysTrayIcon; 

begin 

  DeallocateHWnd(IconData.Wnd); 

  if not Shell_NotifyIcon(NIM_DELETE, @IconData) then 

    ShowMessage('delete fail'); 

end; 



procedure TForm1.FormCreate(Sender: TObject); 

begin 

  AddSysTrayIcon; 

  ShowBalloonTips; 

end; 



procedure TForm1.FormDestroy(Sender: TObject); 

begin 

  DeleteSysTrayIcon; 

end; 



end.

واشكر الأخ فوكس على مشاركته القيمة

وتقبلوا اطيب تحياتي اخوكم SUM

#4

OH MY GUD:eek::eek::eek::eek:

#5

شكرا جزيلا يا اخوة والله لقد سررتموني كثيرا .أفرحكم الله

#6

السلاااااااام عليكم

يالله حيهم كلآ باسمة

ياخوي فوكس دلفي انا ركبت الكمبوننت وسويت فورم وحطيتة واشتغل تمام

ويلطع جنب الساعة ( ياسلااااام هذا الي ابية من زمان :D ) بس المشكلة لما اضغط علية وابي الفورم يسوي ماكس ميز ما يرضى ولا عاد اقدر اطفية الا

من التاسك منيجر " كل تاسك " ..فا ايش الحل في نضرك ؟

وسلاااااااامتكم

اخوكم

delphi

#7

السلام عليكم ورحمة الله...(gift)(gift)

ممكن اخ delphi :) ...أن تكتب بالغة العربية الفصحة قدر الأمكان....:'(:'(

لكي أقدر اتجاوب معك في المنتدى :rolleyes:.....وشكـــــرا(f)

اخـــــــــوك...:cool:

#8

عفوآ اخي fox_delphi .....فلقد كنت اتحدث على طبيعتي وبلهجتي المحلية :)

لا اطيل عليك ونعود الى محور حديثنا " الأيقونة " التي تضهر بجانب الساعة

لقد ركبت الكمبوننات "الأداة" اتي وضعتها وقد عملت في البرنامج بنجاح وضهرت بجانب الساعة الا ان المشكلة ..لما اضغط عليها لا تعمل ولا استطيع اغلاق البرنامج الا من التاسك مانيجر

فكيف يا اخي استطيع عمل الأتي :

اريد لما اضغط عليها ان يعود البرنامج ماكس مايز maximize

وهل بالأمكان وضع اوامر في الرايت كلك مثل اغلاق وغيرة

والف شكر لك اخي فوكس ديلفي وعذرآ ان كنت اثقلت عليك :)

اخوك

delphi

#9

أسف للـتأخــير..أخــي...يوجد حدث onclick على العنصر......

أكتب به التعليمة التالية...Applicatio.restoer... وهكذا عند الضغط

يسترجع التطبيق الواجهة الرئيسية...(f)

أخـــــــــوكم....

#10

الف شكر لك اخوي فوكس دلفي :)

عملت مثل ما قلت لكن ما نجحت معاي ...يطلع لي مسج خطا :(

ادري اني اشغلتك معاي بس الموضوع يهمني جدآ:rolleyes:

اخوك

delphi

#12

السلاااااام عليكم

شفت الموضوع وجربت البرنامج حق الصوت ....100%;)

وحركة الأيكون الي فية هي الي انا اسئل عنها ...!:)

المسج الي يطلع لي ::(

Applicatio.restoer is nut a vaild identifier

ويعطيك العا فية

delphi

#13

السلام عليكم ..

أخي دلفي ..

-ضع الكائنPopupMenu1 على الform الرئيسى في برنامجك ثم برمج عليه

القامة التي تريد .

-على الكمبوننت ضع في الخاصية PopupMenu =PopupMenu1 .

- يمكنك الآن عمل click باليمين على الIcon لتجد قائمتك .

#14

اخي العزيز محمد توتي .....شكرأ لك

فلقد جربت ما قلت عن طريقة البوب اب مينو ونجحت معاي 100% :D

بس يبقى عندي مشكلتي الأولى وهي لما اعمل كليك على الأيكون

ما يرجع الى واجهة التطبيق "كليك عادي وليس رايت كليك ":eek:

مع العلم اني جربت ان اكتب Applicatio.restoer في الحدث "اون كليك "

بس ما نجحت معاي :(

وشكرآ لكم جميعآ

delphi

#15

جرب جعل الواجهة الاساسية لبرنامجك في Form غير الMainForm ثم استخدم :

form2.show;

(f)

#16

امل الفائدة للجميع

TrayIcon

unit TrayIcon;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, shellapi, AppEvnts;

const
  WM_ICONTRAY = WM_USER + 1;

type
  TMainForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    TrayIconData: TNotifyIconData;
  public
    { Public declarations }
    procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
    with TrayIconData do
  begin
    cbSize := SizeOf(TrayIconData);
    Wnd := Handle;
    uID := 0;
    uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
    uCallbackMessage := WM_ICONTRAY;
    hIcon := Application.Icon.Handle;
    StrPCopy(szTip, Application.Title);
  end;

  Shell_NotifyIcon(NIM_ADD, @TrayIconData);

end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
    Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;

procedure TMainForm.TrayMessage(var Msg: TMessage);
begin
  case Msg.lParam of
    WM_LBUTTONDOWN:
    begin
      ShowMessage('Left button clicked - let''s SHOW the Form!');
      MainForm.Show;
    end;
    WM_RBUTTONDOWN:
    begin
      ShowMessage('Right button clicked  - let''s HIDE the Form!');
      MainForm.Hide;
    end;
  end;
end;
end.

program Project1;

uses
  Forms,
  TrayIcon in 'TrayIcon.pas' {MainForm};

{$R *.res}

begin
  Application.Initialize;
  Application.ShowMainForm := False;
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
end.

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…