View Full Version : سوال: بررسی کلید های فشرده شده در هر جای ویندوز
  
ali.hojjati
دوشنبه 17 فروردین 1388, 20:31 عصر
با سلام من در حال نوشتن یک برنامه هستم می خواهم وقت برنامه اکتیو نیست و برنامه های دیگر در حال اجرا هستند وقتی یک کلید ترکیبی مشخص در هر جایی از ویندوز که فشرده شد برنامه اکتیو بشه. منظورم اینه که چجوری می شه روی کلید های فشرده شده بر ری کیبورد در همه حال در زمانی که برنامه در حال اجرا شدن است اشراف داشت. من یک کدی را داشتم که در محیط vb6 بود و فقط تک کلید را بر می گرداند و این کد به کارم نیومد.
لطفا راهنمایی کنید
baidin
پنج شنبه 20 فروردین 1388, 14:28 عصر
دوست عزیز بایستی از API استفاده کنی و توی سایت Code Project من یه چنین پروژه ای را دیده ام. در صورتی که پروژه  ای را که گفتی بگذاری شاید بهتر بتونیم کمکت کنیم
ali.hojjati
شنبه 29 فروردین 1388, 20:02 عصر
اگه ممکنه اون سورس را برام بگزارید تا هم من و هم بقیه بتونن استفاده کنن.
با تشکر.
baidin
چهارشنبه 02 اردیبهشت 1388, 03:30 صبح
اگه ممکنه اون سورس را برام بگزارید تا هم من و هم بقیه بتونن استفاده کنن.
با تشکر.
 
دوست عزیز برنامه را باید بگردم و پیدا کنم میتونی یه سرچ توی CodeProject بکنی و اگه پیدا نکردی یه خبری بده تا .....:عصبانی++:
mostafaaa
چهارشنبه 02 اردیبهشت 1388, 10:39 صبح
سلام دوست من
این باید کارت رو راه بندازه
    Imports System.Runtime.InteropServices
  Public Class Form1
      Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer, _
      ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
      Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
      Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As _
             String) As Short
      Private Declare Function GlobalDeleteAtom Lib "kernel32" (ByVal nAtom As Short) As Short
      Private Const MOD_ALT As Integer = 1
      Private Const MOD_CONTROL As Integer = 2
      Private Const MOD_SHIFT As Integer = 4
      Private Const MOD_WIN As Integer = 8
      Private Sub Form1_Closed(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Closed
          ' unregister the hotkey (NEVER FORGET THIS!)
          UnregisterGlobalHotKey()
      End Sub
      ' unregister a global hotkey
      Public Sub UnregisterGlobalHotKey()
          If Me.hotkeyID <> 0 Then
              UnregisterHotKey(Me.Handle, hotkeyID)
              ' clean up the atom list
              GlobalDeleteAtom(hotkeyID)
              hotkeyID = 0
          End If
      End Sub
      ' the id for the hotkey
      Dim hotkeyID As Short
      ' register a global hot key
      Public Sub RegisterGlobalHotKey(ByVal hotkey As Keys, ByVal modifiers As Integer)
          Try
              ' use the GlobalAddAtom API to get a unique ID (as suggested by MSDN docs
              Dim atomName As String = AppDomain.GetCurrentThreadId.ToString("X8") & Me.Name
              hotkeyID = GlobalAddAtom(atomName)
              If hotkeyID = 0 Then
                  Throw New Exception("Unable to generate unique hotkey ID. Error code: " & _
                                     Marshal.GetLastWin32Error().ToString)
              End If
              ' register the hotkey, throw if any error
              If RegisterHotKey(Me.Handle, hotkeyID, modifiers, CInt(hotkey)) = 0 Then
                  Throw New Exception("Unable to register hotkey. Error code: " & _
                                     Marshal.GetLastWin32Error.ToString)
              End If
          Catch ex As Exception
              ' clean up if hotkey registration failed
              UnregisterGlobalHotKey()
          End Try
      End Sub
      Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
          ' let the base class process the message
          MyBase.WndProc(m)
          ' if this is a WM_HOTKEY message, notify the parent object
          Const WM_HOTKEY As Integer = &H312
          If m.Msg = WM_HOTKEY Then
              ' do whatever you wish to do when the hotkey is pressed
              ' in this example we activate the form and display a messagebox
              Me.WindowState = FormWindowState.Normal
              Me.Activate()
          End If
      End Sub
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          ' register the Shift+Ctrl+F6 hot key
          RegisterGlobalHotKey(Keys.F6, MOD_SHIFT Or MOD_CONTROL)
      End Sub
  End Class
   
  
یا علی
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.