تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
محتاج أين أضع هذا الكود if e.keyscod = keys.F3 لكي يعمل الزر
#1
السلام عليكم و رحمة الله
لقد قمت بإنشاء تطبيق على أساس أنه يعمل في background و هو عبارة عن قيام الفأرة بالضغط أو كليك عند أمر معين
أنا محتاج أين أضع مثلا هذا الكود
if e.keycode = keys.F3 then
btn.PerformClick()
end if
لقد قمت بحذف الفورم من التطبيق ثم أضفت موديل و أصبح على الشكل التالي مع بعض الأكواد بطبيعة الحال:
Module Module1
Declare Sub mouse_event Lib "user64" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Sub Main()

Application.Run()

End Sub
Friend WithEvents btn As New Button()

Private Sub MyMethod()
Windows.Forms.Cursor.Position = New System.Drawing.Point(Windows.Forms.Cursor.Position)
mouse_event(&H2, 0, 0, 0, 1)
mouse_event(&H4, 0, 0, 0, 1)
End Sub

Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
MyMethod()
End Sub
End Module
الرد }}}}
تم الشكر بواسطة:
#2
اول شيء غير خاصية الفورم KeyPreview وخليها True وبعدها استخدم الحدث KeyUp للفورم

مثل
كود :
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        If e.KeyCode = Keys.F3 Then
            MsgBox("مرحباَ")
        End If
    End Sub
الرد }}}}
تم الشكر بواسطة:
#3
في الحقيقة هذه هي المشكلة أخي msdos لو كان على الفورم سهلة لكن أنا حذفت الفورم و أتيت بموديل لكي يتم تنفيذ الأمر على أي مكان في الشاشة إذا فهمت قصدي
msdos كتب :اول شيء غير خاصية الفورم keypreview وخليها true وبعدها استخدم الحدث keyup للفورم

مثل
كود :
private sub form1_keyup(byval sender as object, byval e as system.windows.forms.keyeventargs) handles me.keyup
        if e.keycode = keys.f3 then
            msgbox("مرحباَ")
        end if
    end sub
الرد }}}}
تم الشكر بواسطة:
#4
اعتقد انى فهمت ما تريد
هذا الكلاس يقوم بأمساك ضربات الكيبورد
وهو يستخدم win api

PHP كود :
Imports System.Runtime.InteropServices
Imports System
.Windows.Forms
Imports System
.Reflection

Public Class KeyboardHook
        
Implements IDisposable

        
Public Event SystemStateChanged(sender As ObjectAs SystemStateChangedEventArgs)
        Private 
_State As SystemState

        
'Works only on Windows NT, version 4.0 SP3 and later

        Private Declare Function UnhookWindowsHookEx Lib "user32" _
          (ByVal hHook As Integer) As Integer

        Private Declare Function SetWindowsHookEx Lib "user32" _
          Alias "SetWindowsHookExA" (ByVal idHook As Integer, _
          ByVal lpfn As KeyboardHookDelegate, ByVal hmod As Integer, _
          ByVal dwThreadId As Integer) As Integer

        Private Declare Function GetAsyncKeyState Lib "user32" _
          (ByVal vKey As Integer) As Integer

        Private Declare Function CallNextHookEx Lib "user32" _
          (ByVal hHook As Integer, _
          ByVal nCode As Integer, _
          ByVal wParam As Integer, _
          ByVal lParam As KBDLLHOOKSTRUCT) As Integer

        Private Structure KBDLLHOOKSTRUCT
            Public vkCode As Integer
            Public scanCode As Integer
            Public flags As Integer
            Public time As Integer
            Public dwExtraInfo As Integer
        End Structure

        ' 
Low-Level Keyboard Constants
        
Private Const HC_ACTION As Integer 0
        
Private Const LLKHF_EXTENDED As Integer = &H1
        
Private Const LLKHF_INJECTED As Integer = &H10
        
Private Const LLKHF_ALTDOWN As Integer = &H20
        
Private Const LLKHF_UP As Integer = &H80

        
'KeyUp/KeyDown constants
        Private Const WM_KEYDOWN As Integer = &H100
        Private Const WM_KEYUP As Integer = &H101
        Private Const WM_SYSKEYDOWN As Integer = &H104
        Private Const WM_SYSKEYUP As Integer = &H105

        Private Const WH_KEYBOARD_LL As Integer = 13&
        Private KeyboardHandle As Integer
        Private disposed As Boolean = False

        Private Delegate Function KeyboardHookDelegate( _
          ByVal Code As Integer, _
          ByVal wParam As Integer, ByRef lParam As KBDLLHOOKSTRUCT) _
                       As Integer

        '
Our keydown and keyup events
        
Public Event KeyDown As KeyEventHandler
        
Public Event KeyUp As KeyEventHandler

        
<MarshalAs(UnmanagedType.FunctionPtr)> _
        
Private callback As KeyboardHookDelegate = New KeyboardHookDelegate(AddressOf KeyboardCallback)

        
'Keyboard callback function
        Private Function KeyboardCallback(ByVal Code As Integer, _
          ByVal wParam As Integer, _
          ByRef lParam As KBDLLHOOKSTRUCT) As Integer

            If (Code = HC_ACTION) Then
                '
Call the appropriate event

                Dim KeyData 
As Keys
                Dim args 
As KeyEventArgs

                KeyData 
lParam.vkCode

                
'Check if the ALT key is pressed
                If CBool(GetAsyncKeyState(Keys.Menu) And &H8000) Then
                    '
Alt key pressed
                    KeyData 
KeyData Or Keys.Alt
                End 
If

                
'Check if the Ctrl key is pressed
                If CBool(GetAsyncKeyState(Keys.ControlKey) And &H8000) Then
                    '
Ctrl key pressed
                    KeyData 
KeyData Or Keys.Control
                End 
If

                
'Check if the Shift key was pressed
                If CBool(GetAsyncKeyState(Keys.ShiftKey) And &H8000) Then
                    '
Shift key pressed
                    KeyData 
KeyData Or Keys.Shift
                End 
If

                
'Create the event args
                args = New KeyEventArgs(KeyData)

                '
Raise the appropriate event
                
If wParam WM_KEYDOWN Or wParam WM_SYSKEYDOWN Then
                    OnKeyDown
(Meargs)
                ElseIf 
wParam WM_KEYUP Or wParam WM_SYSKEYUP Then
                    OnKeyUp
(Meargs)
                
End If

                
'Determine if we should block the key
                If args.Handled Then
                    Return 1
                End If
            End If

            '
Call the next hook in the hook chain and return the value
            
Return CallNextHookEx(KeyboardHandle_
              Code
wParamlParam)

        
End Function

        Protected 
Sub OnKeyDown(ByVal sender As ObjectByVal e As KeyEventArgs)
            
RaiseEvent KeyDown(sendere)
        
End Sub

        
Protected Sub OnKeyUp(ByVal sender As ObjectByVal e As KeyEventArgs)
            
RaiseEvent KeyUp(sendere)
        
End Sub


        
Public Overridable Sub Dispose() Implements IDisposable.Dispose
            
If Not disposed Then
                disposed 
True

                
'Unhook the keyboard
                UnhookWindowsHookEx(KeyboardHandle)
            Else
                Throw New ObjectDisposedException("KeyboardHook")
            End If
        End Sub

        Public Sub New()

        End Sub

        Public Sub Start()
            '
Create a keyboard low-level hook
            KeyboardHandle 
SetWindowsHookEx_
                WH_KEYBOARD_LL
callback_
                Marshal
.GetHINSTANCE_
                
[Assembly].GetExecutingAssembly.GetModules()(0)).ToInt320)
            
_State SystemState.Working
            RaiseEvent SystemStateChanged
(Me, New SystemStateChangedEventArgs(_State))
        
End Sub

        
Public Sub [Stop]()
            
'Unhook the keyboard
            _State = SystemState.Stopped
            UnhookWindowsHookEx(KeyboardHandle)
            RaiseEvent SystemStateChanged(Me, New SystemStateChangedEventArgs(_State))
        End Sub

        Protected Overrides Sub Finalize()
            MyBase.Finalize()

            If Not disposed Then
                Dispose()
            End If
        End Sub

End Class 

لكى يعمل الكود
اذهب لأعدادات المشروع ثم إلى debug
ثم ازل العلامه من امام Enable the visual studio hosting progress

ومن توبيب application غير الفريم ورك إلى الأصدار 3.5
الرد }}}}
تم الشكر بواسطة:
#5
شكرا أخي أحمد حسين الآن مظطر للخروج سوف أعود إن شاء الله و أجرب حلك و أرد عليك
الرد }}}}
تم الشكر بواسطة:
#6
أخي أحمد حسين لقد جربت الكلاس و لم يعمل بحيث قمت كما تفضلت بالشرح بعد إضافة الكلاس ذهبت للإعدادات و أزلت الإشارة من أمام Enable the visual studio hosting progress

و غيرت الفريمورك من 4.5 إلى 3.5 لكن لم يعمل طلعلي فيه مشاكل على العموم شكرا لك
****
إذا كان بالإمكان من الإخوة أو أي أحد لديه فكرة عن هذه الطريقة لا يبخل علي أقصد عندما أضغط على مفتاح من لوحة المفاتيح يتم عمل كليك يسار من زر الفأرة يعني الفأرة تقوم بالضغط كليك بالزر الأيسر عن طريق مفتاح من مفاتيح اللوحة المهم يكون على أي شيء و ليس على الفورم لأن على الفورم يمكن القيام بها و شكرا جزيلا للجميع
تحياتي
الرد }}}}
تم الشكر بواسطة:
#7
السلام عليكم
مثال فى المرفقات


الملفات المرفقة
.zip   BackgroundKeyDetector.zip (الحجم : 51.77 ك ب / التحميلات : 63)
الرد }}}}
تم الشكر بواسطة:
#8
شكرا أخي أحمد حسين ما شاء الله تطبيقك إشتغل معي جيدا ربي يجازيك و ربي يحفظك إن شاء الله فقط بقية لي مشكلة واحدة الآن و هي الأساس فقط ضغطة الزر للماوس لم تشتغل أو ربما هناك طريقة أخرى لتشغيلها ممكن أي واحد يساعدني في إكمالها ها هو الكود الكامل :
كود :
[CODE][color=#0000FF]Public Class [/color][COLOR="#2B91AF"]Form1
    [/COLOR][color=#0000FF]Public Declare Auto Function [/color][color=#000000]SetCursorPos [/color][color=#0000FF]Lib [/color][color=#A31515]"User64.dll" [/color][color=#000000]([/color][color=#0000FF]ByVal [/color][color=#000000]X [/color][color=#0000FF]As Integer[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]Y [/color][color=#0000FF]As Integer[/color][color=#000000]) [/color][COLOR="#0000FF"]As Long
    Public Declare Auto Function [/COLOR][color=#000000]GetCursorPos [/color][color=#0000FF]Lib [/color][color=#A31515]"User64.dll" [/color][color=#000000]([/color][color=#0000FF]ByRef [/color][color=#000000]lpPoint [/color][color=#0000FF]As [/color][color=#2B91AF]Point[/color][color=#000000]) [/color][COLOR="#0000FF"]As Long
    Public Declare Sub [/COLOR][color=#000000]mouse_event [/color][color=#0000FF]Lib [/color][color=#A31515]"user64" [/color][color=#0000FF]Alias [/color][color=#A31515]"mouse_event" [/color][color=#000000]([/color][color=#0000FF]ByVal [/color][color=#000000]dwFlags [/color][color=#0000FF]As Long[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]dx [/color][color=#0000FF]As Long[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]dy [/color][color=#0000FF]As Long[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]cButtons [/color][color=#0000FF]As Long[/color][color=#000000], [/color][color=#0000FF]ByVal [/color][color=#000000]dwExtraInfo [/color][color=#0000FF]As Long[/color][COLOR="#000000"])
    [/COLOR][color=#0000FF]Public Const [/color][color=#000000]MOUSEEVENTF_LEFTDOWN = &H2 [/color][COLOR="#008000"]' left button down
    [/COLOR][color=#0000FF]Public Const [/color][color=#000000]MOUSEEVENTF_LEFTUP = &H4 [/color][COLOR="#008000"]' left button up
    [/COLOR][color=#0000FF]Public Const [/color][color=#000000]MOUSEEVENTF_MIDDLEDOWN = &H20 [/color][COLOR="#008000"]' middle button down
    [/COLOR][color=#0000FF]Public Const [/color][color=#000000]MOUSEEVENTF_MIDDLEUP = &H40 [/color][COLOR="#008000"]' middle button up
    [/COLOR][color=#0000FF]Public Const [/color][color=#000000]MOUSEEVENTF_RIGHTDOWN = &H8 [/color][COLOR="#008000"]' right button down
    [/COLOR][color=#0000FF]Public Const [/color][color=#000000]MOUSEEVENTF_RIGHTUP = &H10 [/color][COLOR="#008000"]' right button up

    [/COLOR][color=#0000FF]Private Sub [/color][COLOR="#000000"]MS_LEFTCLICK()
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    [/COLOR][COLOR="#0000FF"]End Sub



    Private WithEvents [/COLOR][color=#000000]KeyHook [/color][color=#0000FF]As New [/color][COLOR="#2B91AF"]KeyboardHook

    [/COLOR][color=#0000FF]Private Sub [/color][color=#000000]Form1_FormClosing(sender [/color][color=#0000FF]As Object[/color][color=#000000], e [/color][color=#0000FF]As [/color][color=#2B91AF]FormClosingEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles Me[/color][COLOR="#000000"].FormClosing
        KeyHook.Stop()
    [/COLOR][COLOR="#0000FF"]End Sub


    Private Sub [/COLOR][color=#000000]Form1_Load(sender [/color][color=#0000FF]As Object[/color][color=#000000], e [/color][color=#0000FF]As [/color][color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles MyBase[/color][COLOR="#000000"].Load
        KeyHook.Start()
        Location = [/COLOR][color=#0000FF]New [/color][color=#2B91AF]Point[/color][color=#000000]([/color][color=#2B91AF]Screen[/color][color=#000000].PrimaryScreen.WorkingArea.Width, [/color][color=#2B91AF]Screen[/color][COLOR="#000000"].PrimaryScreen.WorkingArea.Height)
        ShowInTaskbar = [/COLOR][COLOR="#0000FF"]True
        [/COLOR][color=#000000]Visible = [/color][COLOR="#0000FF"]False
    End Sub

    Private Sub [/COLOR][color=#000000]Button1_Click(sender [/color][color=#0000FF]As Object[/color][color=#000000], e [/color][color=#0000FF]As [/color][color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles [/color][COLOR="#000000"]Button1.Click
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    [/COLOR][COLOR="#0000FF"]End Sub

    Private Sub [/COLOR][color=#000000]KeyHook_KeyDown(sender [/color][color=#0000FF]As Object[/color][color=#000000], e [/color][color=#0000FF]As [/color][color=#2B91AF]KeyEventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles [/color][COLOR="#000000"]KeyHook.KeyDown
        [/COLOR][color=#0000FF]If [/color][color=#000000]e.KeyCode = [/color][color=#2B91AF]Keys[/color][color=#000000].F3 [/color][COLOR="#0000FF"]Then
            [/COLOR][COLOR="#000000"]Button1.PerformClick()
        [/COLOR][COLOR="#0000FF"]End If
    End Sub
End Class[/COLOR]
[/code]
الرد }}}}
تم الشكر بواسطة:
#9
السلام عليكم
بعد عدت محاولات تمكنت بفضل الله و بسببكم من حل المشكلة
قمت بتعويض أداة الزر "Button1" بأداة المؤقت "timer1" و كتبت كود النقر الخاص بالزر الايسر للماوس و كانت النتيجة إيجابيةو هذا هو الكود الذي عدلته:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
Me.Timer1.Stop()
End Sub
شكرا لكل من شارك و ساعدني و بالأخص الأخ أحمد حسين ربي يحفظكم إن شاء الله
تحياتي
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] يرجى التعديل على هذا الكود dubai.eig 1 38 منذ 4 ساعة مضت
آخر رد: dubai.eig
  ما الخطأ فى هذا الكود ؟ what's error in my code ? twitter acount creator الماجيك مسعد 11 161 منذ 8 ساعة مضت
آخر رد: الماجيك مسعد
  ممكن شرح هذا الكود؟ rafaag777 1 100 08-12-16, 11:33 PM
آخر رد: الماجيك مسعد
  حل مشكلة الكود الاتي - سهل- CLARO 3 95 02-12-16, 04:06 PM
آخر رد: ali.alfoly
  ما هو الخطاء فى هذا الكود "كود التعديل" السيد الجوهري 1 71 26-11-16, 03:22 AM
آخر رد: أبو عمر
  [VB.NET] ربط الداتا بيز بالكريستال ريبورت عن طريق الكود thevirus 3 109 22-11-16, 02:38 PM
آخر رد: thevirus
  جعل مفتاح انتر يعمل عمل مفتاح تاب مع الداتا جريد فيو cvcvcv 7 1,916 15-11-16, 09:00 PM
آخر رد: samnaj00
  [VB.NET] طلب تعديل ع الكود ليصبح البرنامج جاهزاً 3asfa~mdmra 8 207 12-11-16, 02:30 AM
آخر رد: 3asfa~mdmra
  [سؤال] التعامل مع الزر الموجود في DataGrideView هل يستطيع حذف الصف الذي به البتن thevirus 1 109 10-11-16, 09:20 PM
آخر رد: ابراهيم النعيمي
  [سؤال] هل يمكن عرض عناصر الكومبوبوكس عن طريق الكود ؟؟؟؟؟؟؟؟؟؟؟؟ thevirus 1 110 10-11-16, 06:25 PM
آخر رد: أبو عمر

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم