PDA

View Full Version : قرار دادن آیکون برنامه کنار ساعت سیستم



Omid_hope
جمعه 08 خرداد 1388, 14:55 عصر
سلام دوستان . من می خواستم آیکن برنامه ام کنار ساعت سیستم قرار بگیره . اگه ممکنه کمکم کنید . ممنون می شم .:چشمک:

Nima NT
جمعه 08 خرداد 1388, 15:18 عصر
کفون :چشمک:
میتونی از کامپوننت Raize استفاده کنی.

Saeed_m_Farid
جمعه 08 خرداد 1388, 15:52 عصر
سلام دوستان . من می خواستم آیکن برنامه ام کنار ساعت سیستم قرار بگیره . اگه ممکنه کمکم کنید . ممنون می شم .:چشمک:
در اين مورد قبلا آقاي كشاورز اينجا (http://www.barnamenevis.org/forum/showthread.php?t=142798) توضيح دادن


کفون :چشمک:
میتونی از کامپوننت Raize استفاده کنی.
اولا :‌اين كفون يعني چي؟
ثانيا : واسه يه TrayIcon ساده يه مجموعه به اين بزرگي VCL‌ رو استفاده كردن اصلا منطقي بنظر نميرسه! ازطرف ديگه با اينكار قابليت حمل برنامه ها هم كم ميشه، يعني توسعه گر نميتونه برنامه اش رو بخاطر استفاده از اين مجموعه (يا مجموعه هاي ديگه) همه جا بتونه كامپايل كنه و بايد اين toolkit ها رو هم با خودش همه جا ببره!
ثالثا : وقتي دارين به يكي كمك ميكنيد يه كمي توضيح هم بدين فكر كنم بد نباشه، مثلا Raise چيه (http://www.raize.com/DevTools/RzComps/Default.asp) و از بين اونهمه كامپوننت (فكر كنم يه 100 تايي كامپوننت داره!!!) كه نصب ميكنه كدومش تو اين زمينه به دردشون ميخوره ...
و در نهايت : اصلا قصدم جسارت به شما نبود، فقط جهت بيراهه نرفتن دوستان ...

آف تاپيك : چرا اينقد اسم شما شبيه Nima_NF (http://www.barnamenevis.org/forum/member.php?u=46043) هست... خيلي وقت بود ميخواستم بگم، اگه نمي گفتم بعدا سرخورده ميشدم !!!

Nima NT
جمعه 08 خرداد 1388, 18:15 عصر
کفون ( Kefoon )به ترکی یعنی حالت چطوره و این دوست آذر شهری مون فکر کنم گرفته باشه ( یه احول پرسی بود همین :لبخند: )
در مورد قابلیت حمل بودن برنامه هم درست می فرمائید ولی خوب دوستمون در مورد اینکه حتما" کد باشه و ... صحبتی نکرده بودن و من هم راحت ترین راه رو پیشنهاد کردم.
در مورد نحوه استفاده بعد از نصب کامپوننت فوق میتونید از لیست Raize Widgets کنترل TRzTrayIcon رو استفاده کنید , استفاده از اون راحت هست و فکر نمیکنم توضیح خاصی لازم داشته باشه.


درمورد شباهت اسمی هم , والا خودمم نمیدونم , در هر حال ایشون سرور ما هستن.
یا حق

Felony
جمعه 08 خرداد 1388, 18:49 عصر
میتونید از کامپوننت CoolTryIcon استفاده کنید .

Omid_hope
جمعه 08 خرداد 1388, 20:29 عصر
یاشا نیما جان ، ممنون از کمکت فقط اگه لطف کنی و لینک دانلود کامپوننت Raize رو برام بزاری یه دنیا ممنون می شم .

1485159
جمعه 08 خرداد 1388, 20:30 عصر
اینقدر بدم میاد ی چیز بپرسی بعد بگن که از کامپوننت استفاده کن....
راه دیگه ای نیست!؟..

Nima NT
جمعه 08 خرداد 1388, 20:49 عصر
یاشا نیما جان ، ممنون از کمکت فقط اگه لطف کنی و لینک دانلود کامپوننت Raize رو برام بزاری یه دنیا ممنون می شم .
متاسفانه یا خوشبختانه نمیشه تو سایت لینک مربوط به نرم افزارهای کرک شده رد و بدل کرد ( قانون 22 سایت )
پیدا کردم با پیغام خصوصی برات ارسال میکنم


اینقدر بدم میاد ی چیز بپرسی بعد بگن که از کامپوننت استفاده کن....
راه دیگه ای نیست!؟..
خوب اگر از پاسخ های سایت برنامه نویس خوشتون نمیاد میتونید از Google.com استفاده کنید. !

1485159
جمعه 08 خرداد 1388, 21:07 عصر
خوب اگر از پاسخ های سایت برنامه نویس خوشتون نمیاد میتونید از Google.com استفاده کنید. !
شما اشتباه فهیمیدی!!!
در ضمن نیازی به دانلود کامپوننت نیست!!!
دلفی 2007 به بعد خودش داره!!!!

Felony
جمعه 08 خرداد 1388, 21:33 عصر
:متفکر:ببخشید اونی که دلفی 2007 به بعد داره کامپوننت نیست ؟!؟!

Nima NT
جمعه 08 خرداد 1388, 21:58 عصر
شما اشتباه فهیمیدی!!!
در ضمن نیازی به دانلود کامپوننت نیست!!!
دلفی 2007 به بعد خودش داره!!!!
در مورد اینکه میفرمائید دلفی 2007 به بعد خودش داره و .... بهتره اگر راه حلی دارید پیشنهاد بدید و به پاسخ های دوستان بی احترامی نکنید , اینجا کسی وظیفه ای در قبال کس دیگری نداره , اگر کسی داره پاسخی میده لطف کرده ( البته خودم رو نمیگم ).

1485159
جمعه 08 خرداد 1388, 22:12 عصر
:قهقهه:ببخشید اونی که دلفی 2007 به بعد داره کامپوننت نیست ؟!؟!

منظ.رم اینه که نیازی به دانلود کامپوننت نیست!!!!

1485159
جمعه 08 خرداد 1388, 22:14 عصر
در مورد اینکه میفرمائید دلفی 2007 به بعد خودش داره و .... بهتره اگر راه حلی دارید پیشنهاد بدید و به پاسخ های دوستان بی احترامی نکنید , اینجا کسی وظیفه ای در قبال کس دیگری نداره , اگر کسی داره پاسخی میده لطف کرده ( البته خودم رو نمیگم ).
مگه من با تو دعوا دارم!؟..
مگه من چی گفتم!؟..
برو اول خوب بخون بعد!!!
اگه نارحت شدی ببخش!!

Nima NT
جمعه 08 خرداد 1388, 22:28 عصر
دوست عزیز من هم با شما دعوا ندارم اینجا همه با هم دوست هستیم.
شما مطلب درست خودتون رو با لحنی یه کم تند بیان کردین , منظور شما این بود که بدون استفاده از کامپوننت هم میشه و بنده هم این رو متوجه شدم ولی شما با بیان اینکه "بدم میاد ..... " کمی تند برخورد کردید یا لااقل این طوری به نظر میرسید.
بنده کوچکترین عضو سایت هستم و اگر از بنده دلخور شدی عذر خواهی میکنم.
آخر سر هم به خاطر اینکه کل پستها به صحبت نگذشته باشه و برای دیگران هم مفید واقع بشه سورس کامل کامپوننت Tray icon ... :چشمک:

unit TrayIcon;
interface

uses
SysUtils, Windows, Messages, Classes, Graphics,
Controls, ShellAPI,
Forms;

const WM_TOOLTRAYICON = WM_USER+1;
WM_RESETTOOLTIP = WM_USER+2;

type
TTrayIcon = class(TComponent)
private
{ Field Variables }
IconData: TNOTIFYICONDATA;
fIcon : TIcon;
fToolTip : String;
fWindowHandle : HWND;
fActive : boolean;
fShowDesigning : Boolean;
{ Events }

fOnClick : TNotifyEvent;
fOnDblClick : TNotifyEvent;
fOnRightClick : TMouseEvent;

function AddIcon : boolean;
function ModifyIcon : boolean;
function DeleteIcon : boolean;

procedure SetActive(Value : boolean);
procedure SetShowDesigning(Value : boolean);
procedure SetIcon(Value : TIcon);
procedure SetToolTip(Value : String);
procedure WndProc(var msg : TMessage);

procedure FillDataStructure;
protected
constructor create(aOwner : TComponent);
override;
destructor destroy; override;
public
published
property Active : boolean read fActive write
SetActive;
property ShowDesigning : boolean read
fShowDesigning write SetShowDesigning;
property Icon : TIcon read fIcon write SetIcon;
property ToolTip : string read fTooltip write
SetToolTip;

property OnClick : TNotifyEvent read
FOnClick write FOnClick;
property OnDblClick : TNotifyEvent read
FOnDblClick write FOnDblClick;
property OnRightClick : TMouseEvent read
FOnRightClick write FonRightClick;
end;

procedure Register;

implementation

{$R TrayIcon.res}

procedure TTrayIcon.SetActive(Value : boolean);
begin
if value <> fActive then begin
fActive := Value;
if not (csdesigning in ComponentState) then
begin
if Value then begin
AddIcon;
end else begin
DeleteIcon;
end;
end;
end;
end;

procedure TTrayIcon.SetShowDesigning(Value :
boolean);
begin
if csdesigning in ComponentState then begin
if value <> fShowDesigning then begin
fShowDesigning := Value;
if Value then begin
AddIcon;
end else begin
DeleteIcon;
end;
end;
end;
end;

procedure TTrayIcon.SetIcon(Value : Ticon);
begin
if Value <> fIcon then
begin
fIcon.Assign(value);
ModifyIcon;
end;
end;

procedure TTrayIcon.SetToolTip(Value : string);
begin

// This routine ALWAYS re-sets the field value
and re-loads the
// icon. This is so the ToolTip can be set
blank when the component
// is first loaded. If this is changed, the
icon will be blank on
// the tray when no ToolTip is specified.

if length( Value ) > 62 then
Value := copy(Value,1,62);
fToolTip := value;
ModifyIcon;
end;

constructor TTrayIcon.Create(aOwner : TComponent);
begin
inherited create(aOwner);
FWindowHandle := AllocateHWnd( WndProc );
FIcon := TIcon.Create;
SetWindowLong(Application.Handle, GWL_EXSTYLE,
WS_EX_TOOLWINDOW);
end;

destructor TTrayIcon.destroy;
begin
if (not (csDesigning in ComponentState) and
fActive)
or ((csDesigning in ComponentState) and
fShowDesigning) then
DeleteIcon;

FIcon.Free;
DeAllocateHWnd( FWindowHandle );
inherited destroy;
end;

procedure TTrayIcon.FillDataStructure;
begin
with IconData do
begin
cbSize := sizeof(TNOTIFYICONDATA);
wnd := FWindowHandle;
uID := 0; // is not passed in with message so
make it 0
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
hIcon := fIcon.Handle;
StrPCopy(szTip,fToolTip);
uCallbackMessage := WM_TOOLTRAYICON;
end;
end;

function TTrayIcon.AddIcon : boolean;
begin
FillDataStructure;
result := Shell_NotifyIcon(NIM_ADD,@IconData);

// For some reason, if there is no tool tip set
up, then the icon
// doesn't display. This fixes that.

if fToolTip = '' then
PostMessage( fWindowHandle,
WM_RESETTOOLTIP,0,0 );
end;

function TTrayIcon.ModifyIcon : boolean;
begin
FillDataStructure;
if fActive then
result :=
Shell_NotifyIcon(NIM_MODIFY,@IconData)
else
result := True;
end;

function TTrayIcon.DeleteIcon : boolean;
begin
result := Shell_NotifyIcon(NIM_DELETE,@IconData);
end;

procedure TTrayIcon.WndProc(var msg : TMessage);
var MouseCo: TPoint;
begin
with msg do
if (msg = WM_RESETTOOLTIP) then
SetToolTip( fToolTip )
else if (msg = WM_TOOLTRAYICON) then
begin
case lParam of
WM_LBUTTONDBLCLK: if assigned
(FOnDblClick) then FOnDblClick

(self);
WM_LBUTTONUP : if
assigned(FOnClick)then FOnClick(self);
WM_RBUTTONUP : if assigned
(FOnRightClick)then
begin
GetCursorPos(MouseCo);

FOnRightClick(self,mbRight,[],

MouseCo.x, MouseCo.y);
end;
end;
end
else // Handle all messages with the default
handler
Result := DefWindowProc(FWindowHandle, Msg,
wParam, lParam);
end;

procedure Register;
begin
RegisterComponents('Win32', [TTrayIcon]);
end;

end.

Nima NT
جمعه 08 خرداد 1388, 22:30 عصر
این هم شاید به کار ملت بیاد :لبخندساده:


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: PlatformSDK\Include\ShellAPI.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.

Nima NT
جمعه 08 خرداد 1388, 22:31 عصر
یکی منو از برق بکشه :لبخند:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls,
Forms, Dialogs, Menus, ShellAPI, ExtCtrls;

type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
Open1: TMenuItem;
Exit1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var
Action: TCloseAction);
private
{ private declarations }
procedure WndProc(var Msg : TMessage); override;
public
{ public declarations }
IconData : TNotifyIconData;
IconCount : integer;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WndProc(var Msg : TMessage);
var
aPoint : TPoint;
begin
case Msg.Msg of
WM_USER + 1:
case Msg.lParam of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(aPoint);
PopupMenu1.Popup(aPoint.x, aPoint.y);
PostMessage(Handle, WM_NULL, 0, 0);
end
end;
end;
inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
BorderIcons := [biSystemMenu];
IconCount := 0;
IconData.cbSize := sizeof(IconData);
IconData.Wnd := Handle;
IconData.uID := 100;
IconData.uFlags := NIF_MESSAGE + NIF_ICON +
NIF_TIP;
IconData.uCallbackMessage := WM_USER + 1;
IconData.hIcon := Application.Icon.Handle;
StrPCopy(IconData.szTip, Application.Title);
Shell_NotifyIcon(NIM_ADD, @IconData);
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
Form1.Show;
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @IconData);
Application.ProcessMessages;
Application.Terminate;
end;

procedure TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
begin
Action := caNone;
Form1.Hide;
end;

begin
ShowWindow(Application.Handle, SW_HIDE);
end.

Nima NT
جمعه 08 خرداد 1388, 22:35 عصر
{
Placing an icon the system tray

The system tray is the area at the right of the
task bar where "background"
applications can place their icons. To place an
icon in the tray you have to
call the Shell_NotifyIcon API declared in the
ShellAPI unit, passing it the
constant NIM_ADD (to tell it to add an icon) and
the address of a TNotifyIconData
record with the icon information that includes the
handle of the icon to show,
the text to show as tool tip when the mouse is over
the icon, the handle of the
window that will receive the messages of the icon
and the message type the icon
will send to this window.
}

uses
{...}, ShellAPI;

const
WM_ICONTRAY = WM_USER + 1; // User-defined
message

type
{ ... }

var
{ ... }
NotifyIconData : TNotifyIconData;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
with NotifyIconData do begin
hIcon := Icon.Handle;
StrPCopy(szTip, Application.Title);
Wnd := Handle;
uCallbackMessage := WM_ICONTRAY;
uID := 1;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
cbSize := sizeof(TNotifyIconData);
end;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;

Handling icon messages

Form1 will receive WM_ICONTRAY messages from the
icon. To capture and handle these messages we have
to declare a new method in our form. For example:

type
TForm1 = class(TForm)
{ ... }
private
{ Private declarations }
{ ... }
procedure Icontray(var Msg: TMessage); message
WM_ICONTRAY;
public
{ Public declarations }
{ ... }
end;

{
In the implementation of this method we can for
example display a pop-up menu
when the user right-clicks on the icon. Assuming
you have created a pop-up menu
named PopupMenu1, the following code will do the
trick:
}

procedure TForm1.Icontray(var Msg: TMessage);
var
CursorPos : TPoint;
begin
if Msg.lParam = WM_RBUTTONDOWN then begin
GetCursorPos(CursorPos);
PopupMenu1.Popup(CursorPos.x, CursorPos.y);
end else
inherited;
end;

{
Showing and hiding the form

Normally you will include a menu item in the pop-up
menu to show the form, so
all you have to do is write an event handler to
call the Show method of the form
and optionally remove the icon from the system tray:
}

procedure TForm1.mnuShowClick(Sender: TObject);
begin
Show;
// Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;

{
When the user closes the form, you can for example
hide it instead of closing it
and optionally show the icon again in the system
tray if you have removed it
when you made the form visible. For example:
}

procedure TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
begin
Action := caNone;
Hide;
// Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;

{
Finishing the application

You can have a menu item in the pop-up menu to exit
the application. In this
case you have to write an event handler for its
click event to remove the icon
and finish the application:
}

procedure TForm1.mnuExitClick(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
Application.ProcessMessages;
Application.Terminate;
end;

Omid_hope
سه شنبه 12 خرداد 1388, 12:55 عصر
ممنون بچه ها. با CoolTryIcon تونستم این کارو انجام بدم .

as13851365
سه شنبه 12 خرداد 1388, 18:34 عصر
یه سوال :

وقتی که آیکن برنامه در کنار ساعت قرار می گیره
حالا به هر دلیلی اگر Explorer.exe از رم بره بیرون و برگرده
برنامه درحال اجرا است ولی آیکنش در کنار ساعت قرار نداره !!!!

برای حل این مشکل دوستان چه راه حل مناسبی دارن ؟

Nima NT
سه شنبه 12 خرداد 1388, 18:59 عصر
یه سوال :

وقتی که آیکن برنامه در کنار ساعت قرار می گیره
حالا به هر دلیلی اگر Explorer.exe از رم بره بیرون و برگرده
برنامه درحال اجرا است ولی آیکنش در کنار ساعت قرار نداره !!!!

برای حل این مشکل دوستان چه راه حل مناسبی دارن ؟
شاید بشه تو یه Thread مرتبا" آیکون رو به System Tray اضافه کرد , این طوری شاید مشکل حل بشه ( البته میدونم که اصولی نیست )

as13851365
چهارشنبه 13 خرداد 1388, 10:15 صبح
خوب حالا مشکل شد دوتا !:قهقهه:

من تا حالا با Thread کار نکردم ولی خیلی دوست دارم نحویه ساخت یک برنامه رو به صورت چند نخی بدونم می رم که در این باره کار کنم .


(ولی من برای اون مشکل از یک تایمر استفاده می کردم :افسرده:)