ورود

View Full Version : ساخت برنامه همیشه اکتیو و حساس به فشار دادن کلیدها



ashki
چهارشنبه 01 تیر 1384, 23:44 عصر
سلام دوستان من قسط دارم یک برنامه درست کنم
که همیشه در ویندوز اکتیو باشه مثالا در Try Icon قرار بگیرد
و هر وقت کاربر در هرکجا چند کلید را زد برنامه عملیات لازم را انجام دهد
مثلا با کلید ENTER+CTRL برنامه یک کار بخصوص را انجام دهد

هر کسی هر اطلاعی در هر زمینه از این برنامه داره به من کمک کنه
مرسی

محمد میرمصطفی
پنج شنبه 02 تیر 1384, 00:48 صبح
برای Tray Icon که کامپاننت هست. برای Hotkey هم باید از API استفاده کنی:

BOOL RegisterHotKey( HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);

Delphi_Developer
پنج شنبه 02 تیر 1384, 01:41 صبح
برای Tray Icon که کامپاننت هست
:D کامپوننت ؟؟؟؟؟؟؟ عجب روزگاری شده ها واسه این کار دیگه کامپوننت می خواد ؟
فقط چند خط کد :


function MinimizeToTray(Handle: HWND): Boolean;
var
hwndTray: HWND;
rcWindow: TRect;
rcTray: TRect;
begin
// Check passed window handle
if IsWindow(Handle) then
begin
// Get tray handle
hwndTray := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil);
// Check tray handle
if (hwndTray = 0) then
// Failure
Result := False
else
begin
// Get window rect and tray rect
GetWindowRect(Handle, rcWindow);
GetWindowRect(hwndTray, rcTray);
// Perform the animation
DrawAnimatedRects(Handle, IDANI_CAPTION, rcWindow, rcTray);
// Hide the window
ShowWindow(Handle, SW_HIDE);
end;
end
else
// Failure
Result := False;
end;


:sunglass: همین - حالا دیگه Hotkey با خودت :D

ashki
پنج شنبه 02 تیر 1384, 09:39 صبح
سلام از کدهایی که گذاشتین ممنونم اما روش کار با ان را بلد نیستم
من این کد را در قسمت کدها پیس کردم و برنامه را اجرا کردم اما با مینیموم
کردن فرم کاری را انجام نداد.
از پارامترش هم بلد نیستم استفاده کند وقتی این رو می نویسم
MinimizeToTray(
یک چیزی می خواد از نوع HWND

اگر می شود یک راهنمایی به من بکنید.
اون دوستی را که گفتن کامپونت اگر کاملشو دارن ممنون می شم
در مورد Hot key من انجام دادم اما ترکیبی بلد نیستم
که Ctrl + Enter عمل کنه
مرسی

Delphi Skyline
پنج شنبه 02 تیر 1384, 10:07 صبح
HWND
این که :
HWND : tHandle;

خوب این که آسونه :
شما باید در Void Createform بنویسی :


MinimizeToTray(form1.Handle);


خوب همین .
یک توصیه : دوست عزیز ashki و سایر دوستانی که می خواهند سوالات TIP (مسایلی برای کامل کردن برنامه است و نیازی به حفظ کردن ندارد) بپرسند اول یه سری به سرچ این سایت و سپس به www.swissdelphicenter.com بزنید .



با تشکر .

ashki
پنج شنبه 02 تیر 1384, 10:37 صبح
Delphi Skyline مرسی فکر کنم این اولین پاسخ خوبی بود که از شما به من رسیده

ashki
پنج شنبه 02 تیر 1384, 10:43 صبح
برای Tray Icon که کامپاننت هست
:D کامپوننت ؟؟؟؟؟؟؟ عجب روزگاری شده ها واسه این کار دیگه کامپوننت می خواد ؟
فقط چند خط کد :


function MinimizeToTray(Handle: HWND): Boolean;
var
hwndTray: HWND;
rcWindow: TRect;
rcTray: TRect;
begin
// Check passed window handle
if IsWindow(Handle) then
begin
// Get tray handle
hwndTray := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil);
// Check tray handle
if (hwndTray = 0) then
// Failure
Result := False
else
begin
// Get window rect and tray rect
GetWindowRect(Handle, rcWindow);
GetWindowRect(hwndTray, rcTray);
// Perform the animation
DrawAnimatedRects(Handle, IDANI_CAPTION, rcWindow, rcTray);
// Hide the window
ShowWindow(Handle, SW_HIDE);
end;
end
else
// Failure
Result := False;
end;


:sunglass: همین - حالا دیگه Hotkey با خودت :D


آقا این کده کار نمی کند فقط نشان می دهد که فرم به قسمت Try که
همان کنار ساعت است پرش می کند همین و هیچ آیکونی یا چیری قرار نمی گیرد

Delphi_Developer
پنج شنبه 02 تیر 1384, 15:18 عصر
آقا این کده کار نمی کند فقط نشان می دهد که فرم به قسمت Try که
همان کنار ساعت است پرش می کند همین و هیچ آیکونی یا چیری قرار نمی گیرد
مطمئنی ؟؟؟؟ ------ نمیدونم برم تستش کنم بعد خبرش رو بهت میدم . :sunglass:

Delphi_Developer
پنج شنبه 02 تیر 1384, 16:17 عصر
اون دوستی را که گفتن کامپونت اگر کاملشو دارن ممنون می شم
هیچ وقت برای موضوع های ساده ای مثل این از کامپوننت استافده نکن - تنبل میشی ! - همیشه تا میتونی در صورت امکان خودت کدنویسی کن

ashki
پنج شنبه 02 تیر 1384, 17:54 عصر
باشه حالا یکم زودتر تستش کن
بعد چطوری می تونم یک منو بهش نصبت بدم مثل مال پارسا 2001

Delphi_Developer
جمعه 03 تیر 1384, 02:15 صبح
باشه حالا یکم زودتر تستش کن
من کدی که خودم گذاشته بودم رو Test کردم - آره درسته اون فقط کار Animate کردن Tray رو انجام میده -- اما برات کد اصلی رو گیر آوردم :sunglass: :
create a icon in the system tray
http://www.swissdelphicenter.com/en/showcode.php?id=1303

add items to the Application's Windows System Menu
http://www.swissdelphicenter.com/en/showcode.php?id=1435

Show Balloon Tips for the Tray Icon
http://www.swissdelphicenter.com/en/showcode.php?id=1164

موفق باشی

ashki
جمعه 03 تیر 1384, 10:55 صبح
مرسی امتحان می کنم
راستی در مورد Hotkey چیزی نمی دانید
من می خواهم Enter+Ctrl عمل کنه