PDA

View Full Version : شورت کات



مجتبی جوادی
جمعه 22 دی 1385, 23:54 عصر
دوستان سلام
می خواستم بدانم چگونه می شود روی کلیدها شورت کات بگذاریم مثلا با زدن کلید F2 یک فرم باز شود و یا با زدن مثلا کلید F8 اطلاعات ذخیره شود و یا فرم بسته شود. من در این مورد هر چه جستجو می کنم چیزی پیدا نمی کنم
با تشکر

babak869
شنبه 23 دی 1385, 01:08 صبح
جستجو داریم تا جستجو !!!!

http://barnamenevis.org/forum/showthread.php?t=18323&highlight=shortcut

Aidin
شنبه 23 دی 1385, 11:35 صبح
میتونید از Action Manager استفاده کنید

dkhatibi
شنبه 23 دی 1385, 13:55 عصر
البته منظور ایشون اینه کهوقتی که برنامه hidden یا در TaskBar نیز هست این کلیدها کار کنه!

babak869
شنبه 23 دی 1385, 14:01 عصر
اون نوع برنامه دیگه نوشتن سرویس و مقیم کردن برنامه در حافظه ست که قبلا د این باره بحث شده . با جستجو با کلمه کلیدی سرویس میتونید مطالب مفیدی پیدا کنید

Behrooz_CS
شنبه 23 دی 1385, 14:28 عصر
[DllImport("User32.dll")]
public static extern int RegisterHotKey(
int hwnd,
int id,
uint fsModifiers,
uint vk);

با استفاده از این تابع API کارت را می افته
من این کار رو کردم ، جواب می ده

این هم کلاس کاملش با C#


using System;
using System.Runtime.InteropServices;

namespace SerialNumberPaster
{
/// <summary>
/// Summary description for KeyBoardAPI.
/// </summary>
public class KeyboardAPI
{
public KeyboardAPI() {}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
public const int WH_KEYBOARD = 2;
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
public delegate int CB_KB(int a, int b ,int c);
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
[DllImport("User32.dll")]
public static extern int SetWindowsHookEx (
int idHook,
CB_KB lpfn,
int hMod,
int dwThreadId
);
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
public static int KeyboardProc(
int code,
int wParam,
int lParam )
{

return -1;
}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
[DllImport("User32.dll")]
public static extern int RegisterHotKey(
int hwnd,
int id,
uint fsModifiers,
uint vk);
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\
/*
uint H = ((uint)m.LParam & 0xffff0000)>>16;
uint L = ((uint)m.LParam & 0xffff);
if(H == VK_END && L == MOD_CONTROL)

protected override void WndProc(ref Message m)
{
if((int)m.WParam == IDHotKey)
t_Keys.Text += "Press Hot Key\r\n";

base.WndProc (ref m);
}
*/

/*
public void RegHotKey()
{
if(KeyBoard_API.RegisterHotKey((int)Handle, 10,KeyBoard_API.MOD_CONTROL , KeyBoard_API.VK_END) == 0)
{
MessageBox.Show("Error = " + KeyBoard_API.GetLastError());
}
}
*/
///////////////////////////////////////////
[DllImport("Kernel32.dll")]
public static extern int GetLastError();
///////////////////////////////////////////
public const uint MOD_CONTROL = 0x2;
public const uint MOD_ALT = 0x1;
public const uint MOD_SHIFT = 0x4;
///////////////////////////////////////////
public const uint VK_RCONTROL = 0xA3;
public const uint VK_END = 0x23;
public const uint VK_F11 = 0x7A;
///////////////////////////////////////////
}
}

حرفه ای
شنبه 23 دی 1385, 14:33 عصر
رویداد OnKeyDown را امتحان کن به صورت مثال



If Key=VK_F1 Then Form1.ShowModal;

Saeid59_m
دوشنبه 25 دی 1385, 13:12 عصر
توی مجموعه کامپوننت LMD یک کامپوننت هست که این کار رو به صورت عالی انجام می ده

موفق باشید .
اگه این مجموعه کامپوننت رو ندارید می توانید نسخه مجانی اونو از www.Download.com بگیرید

shobair
دوشنبه 25 دی 1385, 13:56 عصر
دوستان سلام
می خواستم بدانم چگونه می شود روی کلیدها شورت کات بگذاریم مثلا با زدن کلید F2 یک فرم باز شود و یا با زدن مثلا کلید F8 اطلاعات ذخیره شود و یا فرم بسته شود. من در این مورد هر چه جستجو می کنم چیزی پیدا نمی کنم
با تشکر

سلام
چندین روش که گفته شد.
من از تابع GetAsyncKeyState استفاده میکنم. چون کیبورد رو هوک میکنه و اگه برنامه مخفی باشه یا اکتیو نباشه باز هم کار میکنه.

شبیر

vesal
دوشنبه 25 دی 1385, 19:03 عصر
فکر کنم منظورت HotKey باشه!!!
به حر حال این کامپوننت رو هم یه نگاهی بنداز احتمالا کارت راه بیفته

http://www.torry.net/vcl/system/keys/HotKeyManager.zip

مجتبی جوادی
دوشنبه 02 بهمن 1385, 14:21 عصر
سلام
سعید 59 اگه ممکن بگویید چگونه و با کدام آیتم کامپوننت LMD می شود این کار را انجام داد .
درصورت امکان کد مربوطه را بگویید .
با تشکر