PDA

View Full Version : سوال: HotKey برای برنامه



saeed-kh
دوشنبه 27 آبان 1387, 11:49 صبح
سلام
چجوری میشه یه کلید میانبر واسه برنامه تعریف کرد که وقعی که اکتیو هم نباشه عمل کنه .
مثل F10در بابیلون. و چرا system.windows.input namespace نمیاد(VS2008 تو winXP sp3نصب دارم)

mohammad272005
سه شنبه 28 آبان 1387, 00:11 صبح
باید از API استفاده کنی. از RegisterHokey. اینم یه مثال:

public partial class Form1 : Form
{
private const int WM_HOTKEY = 0x0312;
public Form1()
{
InitializeComponent();
RegisterHotKey(this.Handle, 2005, Modifier.Control, Keys.F10);
}
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, Modifier fsModifiers, Keys vk);
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_HOTKEY)
{
this.WindowState = FormWindowState.Normal;
this.Activate();
}
base.WndProc(ref m);
}
}
[Flags]
internal enum Modifier
{
Alt = 0x0001,
Control = 0x0002,
Shift = 0x0004,
Win = 0x0008
}

AJL110ALI
سه شنبه 28 آبان 1387, 12:40 عصر
یه سری هم به سایت http://www.vbaccelerator.com بزنید راه حل جالبی ارائه داده برای HotKey

saeed-kh
یک شنبه 10 آذر 1387, 11:54 صبح
باید از API استفاده کنی. از RegisterHokey. اینم یه مثال:
دوست عزیزم آقای محمد میشه بگید این کدهایی که برای کلیدها داخل Enumتعریف میشه از کجا میاد و در چه مبنایی هست.؟
مثل اینکه برای هر تابعی از توابع APIاین کدها برای همون کلید فرق میکنه.
لیستی از توابع APIرو دارم ولی همین کدها رو نمیدونم باید چی بزارم.:ناراحت:

حامد مصافی
یک شنبه 10 آذر 1387, 18:42 عصر
اگه نمی خواهید درگیر جزئیات بشید می تونید از این کلاس آماده استفاده کنید.
http://www.codeplex.com/globalhotkey

mohammad272005
یک شنبه 24 آذر 1387, 04:13 صبح
دوست عزیزم آقای محمد میشه بگید این کدهایی که برای کلیدها داخل Enumتعریف میشه از کجا میاد و در چه مبنایی هست.؟
مثل اینکه برای هر تابعی از توابع APIاین کدها برای همون کلید فرق میکنه.
لیستی از توابع APIرو دارم ولی همین کدها رو نمیدونم باید چی بزارم.:ناراحت:
در مورد RegisterHotKey (http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx) که نو MSDN (http://msdn.microsoft.com) به سادگی می تونی اطلاعات بدست بیاری. در مورد مقادیر ثابت هر نوع APIیی، من همیشه توی Solution یه پروژه کوچولوی ++C درست می کنم، مقدار ثابت رو توش تایپ می کنم، و روش F12 می زنم. ++C مستقیم منو میبره سروقت مقدار اون ثابت، حالا هر طوری که بخوام، تو برنامه #C این ثابتها رو تعریف می کنم. سایت pinvoke.net (http://pinvoke.net/index.aspx) هم خیلی کمکم می کنه.

saeed-kh
یک شنبه 24 آذر 1387, 14:37 عصر
در مورد RegisterHotKey (http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx) که نو MSDN (http://msdn.microsoft.com) به سادگی می تونی اطلاعات بدست بیاری. در مورد مقادیر ثابت هر نوع APIیی، من همیشه توی Solution یه پروژه کوچولوی ++C درست می کنم، مقدار ثابت رو توش تایپ می کنم، و روش F12 می زنم. ++C مستقیم منو میبره سروقت مقدار اون ثابت، حالا هر طوری که بخوام، تو برنامه #C این ثابتها رو تعریف می کنم. سایت pinvoke.net (http://pinvoke.net/index.aspx) هم خیلی کمکم می کنه.
آقای محمد این سایت آخر http://pinvoke.netبسیار عالیه.
لازم دیدم همینجا ازتون تشکرات فراوان بکنم