PDA

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



unknow-os
سه شنبه 11 مهر 1391, 11:44 صبح
چطوری میشه برنامه ای بنویسم که اگه روی یک برنامه کلیک راست کردم بیاد روی فرم خودمون بنویسه "OK" یا همچین چیزی
مثلا : رو فتوشاپ کلیک راست رو میزنم بعد بیاد رو فرم بزنه که شما کلیک راست کردید
میخوام خارج از محیط فرم تاثیر بزارم
یا مثلا با استفاده از هندل یک برنامه اونو minimize کنم

pooya1072
سه شنبه 11 مهر 1391, 16:47 عصر
سلام
آیا منظورت اینه که هر رویدادی توی هر جایی از ویندوز ایجاد بشه این برنامه اونو پردازش کنه یا فقط رویدادهای خاص.توجه کن هر بار که موس رو تکون میدی یه رویداد ایجاد میشه.در موردش فکر کن.

unknow-os
چهارشنبه 12 مهر 1391, 01:08 صبح
اره دقیقا
حالا میخوام بدونم این رویداد ها کجاس مثلا کلیک موس ... و چطور میشه کنترلشون کرد و توی برنامه ازشون استفاده کرد؟؟؟؟؟

مهرداد صفا
چهارشنبه 12 مهر 1391, 01:38 صبح
سلام دوست عزیز!
حسن نیت شما و حساسیت کارتون را درک میکنم ولی فکر نمیکنم کسی ببرای شکولات به من کمک میکند یا دانشش را در اختیار من میگذارد. البته ببخشید! منظورم این بود که ارزش آموزش به مادیات نیست. گر چه خودم شاگردم اونم از نوع اول ابتدایی ولی این یه نظر شخصی بود. به هر حال تشکر.
به طور کلی برای مورد اول میتوانید با Hook کردن تابعی را به عنوان CallBack به ویندوز معرفی کنید تا هر وقت رویدادی توسط موس مثل MouseMove یا MouseClick اتفاق افتاد تابع اجرا شود، شما میتوانید درون تابع مذکور چک کنید که اگر فلان پنجره فعال است و رویدادی که اتفاق افتاده رویداد راست کلیک است .... را انجام بده.
در این کلاس رویدادهای موس در سطح سیستم عامل hook شده اند. امیدوارم مشکلتون را حل کند:

'in the name of god
'اللهم صل علی محمد و آله
Class MouseHook
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Integer, ByVal lpfn As MouseProcDelegate, ByVal hmod As Integer, ByVal dwThreadId 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 MSLLHOOKSTRUCT) As Integer
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Integer) As Integer
Private Delegate Function MouseProcDelegate(ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As MSLLHOOKSTRUCT) As Integer

Private Structure MSLLHOOKSTRUCT
Public pt As Point
Public mouseData As Integer
Public flags As Integer
Public time As Integer
Public dwExtraInfo As Integer
End Structure

Public Enum Wheel_Direction
WheelUp
WheelDown
End Enum

Private Const HC_ACTION As Integer = 0
Private Const WH_MOUSE_LL As Integer = 14
Private Const WM_MOUSEMOVE As Integer = &H200
Private Const WM_LBUTTONDOWN As Integer = &H201
Private Const WM_LBUTTONUP As Integer = &H202
Private Const WM_LBUTTONDBLCLK As Integer = &H203
Private Const WM_RBUTTONDOWN As Integer = &H204
Private Const WM_RBUTTONUP As Integer = &H205
Private Const WM_RBUTTONDBLCLK As Integer = &H206
Private Const WM_MBUTTONDOWN As Integer = &H207
Private Const WM_MBUTTONUP As Integer = &H208
Private Const WM_MBUTTONDBLCLK As Integer = &H209
Private Const WM_MOUSEWHEEL As Integer = &H20A

Private MouseHook As Integer
Private MouseHookDelegate As MouseProcDelegate

Public Event Mouse_Move(ByVal ptLocat As Point)
Public Event Mouse_Left_Down(ByVal ptLocat As Point)
Public Event Mouse_Left_Up(ByVal ptLocat As Point)
Public Event Mouse_Left_DoubleClick(ByVal ptLocat As Point)
Public Event Mouse_Right_Down(ByVal ptLocat As Point)
Public Event Mouse_Right_Up(ByVal ptLocat As Point)
Public Event Mouse_Right_DoubleClick(ByVal ptLocat As Point)
Public Event Mouse_Middle_Down(ByVal ptLocat As Point)
Public Event Mouse_Middle_Up(ByVal ptLocat As Point)
Public Event Mouse_Middle_DoubleClick(ByVal ptLocat As Point)
Public Event Mouse_Wheel(ByVal ptLocat As Point, ByVal Direction As Wheel_Direction)

Public Sub New()
MouseHookDelegate = New MouseProcDelegate(AddressOf MouseProc)
MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookDelegate, System.Runtime.InteropServices.Marshal.GetHINSTANC E(System.Reflection.Assembly.GetExecutingAssembly. GetModules()(0)).ToInt32, 0)
End Sub

Private Function MouseProc(ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As MSLLHOOKSTRUCT) As Integer
If (nCode = HC_ACTION) Then
Select Case wParam
Case WM_MOUSEMOVE
RaiseEvent Mouse_Move(lParam.pt)
Case WM_LBUTTONDOWN
RaiseEvent Mouse_Left_Down(lParam.pt)
Case WM_LBUTTONUP
RaiseEvent Mouse_Left_Up(lParam.pt)
Case WM_LBUTTONDBLCLK
RaiseEvent Mouse_Left_DoubleClick(lParam.pt)
Case WM_RBUTTONDOWN
RaiseEvent Mouse_Right_Down(lParam.pt)
Case WM_RBUTTONUP
RaiseEvent Mouse_Right_Up(lParam.pt)
Case WM_RBUTTONDBLCLK
RaiseEvent Mouse_Right_DoubleClick(lParam.pt)
Case WM_MBUTTONDOWN
RaiseEvent Mouse_Middle_Down(lParam.pt)
Case WM_MBUTTONUP
RaiseEvent Mouse_Middle_Up(lParam.pt)
Case WM_MBUTTONDBLCLK
RaiseEvent Mouse_Middle_DoubleClick(lParam.pt)
Case WM_MOUSEWHEEL
Dim wDirection As Wheel_Direction
If lParam.mouseData < 0 Then
wDirection = Wheel_Direction.WheelDown
Else
wDirection = Wheel_Direction.WheelUp
End If
RaiseEvent Mouse_Wheel(lParam.pt, wDirection)
End Select
End If
Return CallNextHookEx(MouseHook, nCode, wParam, lParam)
End Function

Protected Overrides Sub Finalize()
UnhookWindowsHookEx(MouseHook)
MyBase.Finalize()
End Sub
End Class

برای استفاده از این کلاس میتوانید به صورت زیر عمل کنید:

Private WithEvents mHook As New MouseHook

Private Sub mHook_Mouse_Left_DoubleClick(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Left_DoubleClick
Debug.WriteLine("Mouse Left Double Click At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Left_Down(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Left_Down
Debug.WriteLine("Mouse Left Down At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Left_Up(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Left_Up
Debug.WriteLine("Mouse Left Up At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Middle_DoubleClick(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Middle_DoubleClick
Debug.WriteLine("Mouse Middle Double Click At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Middle_Down(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Middle_Down
Debug.WriteLine("Mouse Middle Down At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Middle_Up(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Middle_Up
Debug.WriteLine("Mouse Middle Up At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Move(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Move
''Will be called every time the mouse moves
End Sub

Private Sub mHook_Mouse_Right_DoubleClick(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Right_DoubleClick
Debug.WriteLine("Mouse Right Double Click At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Right_Down(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Right_Down
Debug.WriteLine("Mouse Right Down At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Right_Up(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Right_Up
Debug.WriteLine("Mouse Right Up At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Wheel(ByVal ptLocat As System.Drawing.Point, ByVal Direction As MouseHook.Wheel_Direction) Handles mHook.Mouse_Wheel
Debug.WriteLine("Mouse Scroll: " & Direction.ToString & " At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub



برای مورد دوم هم بعد از به دست آوردن هندل پنجره فرمان minimize را به آن ارسال کنید. در این کد نحوه کار را میبینید:

'in the name of god
Private Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_CLOSE As Integer = &HF060
Private Const SC_MAXIMIZE As Integer = &HF030
Private Const SC_MINIMIZE As Integer = &HF020
Private Const SC_RESTORE As Integer = &HF120


Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As IntPtr, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As IntPtr) As Integer
Private Declare Function IsZoomed Lib "user32" (ByVal hwnd As IntPtr) As Integer

Private Sub MyMinimizeWindow(ByVal Handle As IntPtr)

If CBool(IsIconic(Handle)) Then
Call PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0)
Else
Call PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
End If

End Sub

Private Sub MyMaximizeWindow(ByVal Handle As IntPtr)

If CBool(IsZoomed(Handle)) Then
Call PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0)
Else
Call PostMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
End If

End Sub

Private Sub MyCloseWindow(ByVal Handle As IntPtr)

Call PostMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0)

End Sub

یا از طریق تابع ShowWindow:
Public Const SW_MINIMIZE = 6
Declare Function ShowWindow Lib "user32" (ByVal hwnd As IntPtr , _
ByVal nCmdShow As integer ) As integer

'درون تابع برای MiniMize کردن پنجره
ret = ShowWindow(hWnd, SW_MINIMISE)


در کل برای چنین کارهایی در مورد
GetMessage
GetMessageExtraInfo
GetCursorPos
GetMessageTime
SendMessage
PostMessage
SendMessageCallback
CallNextHookEx
CallWndProc
SetWindowsHookEx
LowLevelMouseProc
MouseProc
UnhookWindowsHookEx
و... تحقیق کنید.

arash020
چهارشنبه 12 مهر 1391, 01:56 صبح
حالا میشه کاری کرد که برنامه زبان پنجره فعال رو هم تشخیص بده؟؟؟
(زبان کیبورد:::languagebar:::fa/en) منظورمه.

مهرداد صفا
چهارشنبه 12 مهر 1391, 02:25 صبح
حالا میشه کاری کرد که برنامه زبان پنجره فعال رو هم تشخیص بده؟؟؟
(زبان کیبورد:::languagebar:::fa/en) منظورمه.
بله. از توابع زیر استفاده کنید:
Public Declare Function GetKeyboardLayout Lib "user32" Alias "GetKeyboardLayout" (ByVal dwLayout As Integer) As Integer
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long

arash020
پنج شنبه 13 مهر 1391, 02:08 صبح
نمیدونم چطور از اینا برای پیداکردن زبان برنامه های دیگه در حال اجرا استفاده کنم.
آخه فقط زبان خود برنامه رو برمیگردونند...

کسی میتونه یه کد دقیق ارائه بده؟؟؟!!!

unknow-os
پنج شنبه 13 مهر 1391, 14:51 عصر
سلام دوست عزیز!
حسن نیت شما و حساسیت کارتون را درک میکنم ولی فکر نمیکنم کسی ببرای شکولات به من کمک میکند یا دانشش را در اختیار من میگذارد. البته ببخشید! منظورم این بود که ارزش آموزش به مادیات نیست. گر چه خودم شاگردم اونم از نوع اول ابتدایی ولی این یه نظر شخصی بود. به هر حال تشکر.
به طور کلی برای مورد اول میتوانید با Hook کردن تابعی را به عنوان CallBack به ویندوز معرفی کنید تا هر وقت رویدادی توسط موس مثل MouseMove یا MouseClick اتفاق افتاد تابع اجرا شود، شما میتوانید درون تابع مذکور چک کنید که اگر فلان پنجره فعال است و رویدادی که اتفاق افتاده رویداد راست کلیک است .... را انجام بده.
در این کلاس رویدادهای موس در سطح سیستم عامل hook شده اند. امیدوارم مشکلتون را حل کند:

'in the name of god
'اللهم صل علی محمد و آله
Class MouseHook
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Integer, ByVal lpfn As MouseProcDelegate, ByVal hmod As Integer, ByVal dwThreadId 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 MSLLHOOKSTRUCT) As Integer
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Integer) As Integer
Private Delegate Function MouseProcDelegate(ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As MSLLHOOKSTRUCT) As Integer

Private Structure MSLLHOOKSTRUCT
Public pt As Point
Public mouseData As Integer
Public flags As Integer
Public time As Integer
Public dwExtraInfo As Integer
End Structure

Public Enum Wheel_Direction
WheelUp
WheelDown
End Enum

Private Const HC_ACTION As Integer = 0
Private Const WH_MOUSE_LL As Integer = 14
Private Const WM_MOUSEMOVE As Integer = &H200
Private Const WM_LBUTTONDOWN As Integer = &H201
Private Const WM_LBUTTONUP As Integer = &H202
Private Const WM_LBUTTONDBLCLK As Integer = &H203
Private Const WM_RBUTTONDOWN As Integer = &H204
Private Const WM_RBUTTONUP As Integer = &H205
Private Const WM_RBUTTONDBLCLK As Integer = &H206
Private Const WM_MBUTTONDOWN As Integer = &H207
Private Const WM_MBUTTONUP As Integer = &H208
Private Const WM_MBUTTONDBLCLK As Integer = &H209
Private Const WM_MOUSEWHEEL As Integer = &H20A

Private MouseHook As Integer
Private MouseHookDelegate As MouseProcDelegate

Public Event Mouse_Move(ByVal ptLocat As Point)
Public Event Mouse_Left_Down(ByVal ptLocat As Point)
Public Event Mouse_Left_Up(ByVal ptLocat As Point)
Public Event Mouse_Left_DoubleClick(ByVal ptLocat As Point)
Public Event Mouse_Right_Down(ByVal ptLocat As Point)
Public Event Mouse_Right_Up(ByVal ptLocat As Point)
Public Event Mouse_Right_DoubleClick(ByVal ptLocat As Point)
Public Event Mouse_Middle_Down(ByVal ptLocat As Point)
Public Event Mouse_Middle_Up(ByVal ptLocat As Point)
Public Event Mouse_Middle_DoubleClick(ByVal ptLocat As Point)
Public Event Mouse_Wheel(ByVal ptLocat As Point, ByVal Direction As Wheel_Direction)

Public Sub New()
MouseHookDelegate = New MouseProcDelegate(AddressOf MouseProc)
MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookDelegate, System.Runtime.InteropServices.Marshal.GetHINSTANC E(System.Reflection.Assembly.GetExecutingAssembly. GetModules()(0)).ToInt32, 0)
End Sub

Private Function MouseProc(ByVal nCode As Integer, ByVal wParam As Integer, ByRef lParam As MSLLHOOKSTRUCT) As Integer
If (nCode = HC_ACTION) Then
Select Case wParam
Case WM_MOUSEMOVE
RaiseEvent Mouse_Move(lParam.pt)
Case WM_LBUTTONDOWN
RaiseEvent Mouse_Left_Down(lParam.pt)
Case WM_LBUTTONUP
RaiseEvent Mouse_Left_Up(lParam.pt)
Case WM_LBUTTONDBLCLK
RaiseEvent Mouse_Left_DoubleClick(lParam.pt)
Case WM_RBUTTONDOWN
RaiseEvent Mouse_Right_Down(lParam.pt)
Case WM_RBUTTONUP
RaiseEvent Mouse_Right_Up(lParam.pt)
Case WM_RBUTTONDBLCLK
RaiseEvent Mouse_Right_DoubleClick(lParam.pt)
Case WM_MBUTTONDOWN
RaiseEvent Mouse_Middle_Down(lParam.pt)
Case WM_MBUTTONUP
RaiseEvent Mouse_Middle_Up(lParam.pt)
Case WM_MBUTTONDBLCLK
RaiseEvent Mouse_Middle_DoubleClick(lParam.pt)
Case WM_MOUSEWHEEL
Dim wDirection As Wheel_Direction
If lParam.mouseData < 0 Then
wDirection = Wheel_Direction.WheelDown
Else
wDirection = Wheel_Direction.WheelUp
End If
RaiseEvent Mouse_Wheel(lParam.pt, wDirection)
End Select
End If
Return CallNextHookEx(MouseHook, nCode, wParam, lParam)
End Function

Protected Overrides Sub Finalize()
UnhookWindowsHookEx(MouseHook)
MyBase.Finalize()
End Sub
End Class

برای استفاده از این کلاس میتوانید به صورت زیر عمل کنید:

Private WithEvents mHook As New MouseHook

Private Sub mHook_Mouse_Left_DoubleClick(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Left_DoubleClick
Debug.WriteLine("Mouse Left Double Click At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Left_Down(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Left_Down
Debug.WriteLine("Mouse Left Down At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Left_Up(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Left_Up
Debug.WriteLine("Mouse Left Up At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Middle_DoubleClick(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Middle_DoubleClick
Debug.WriteLine("Mouse Middle Double Click At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Middle_Down(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Middle_Down
Debug.WriteLine("Mouse Middle Down At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Middle_Up(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Middle_Up
Debug.WriteLine("Mouse Middle Up At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Move(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Move
''Will be called every time the mouse moves
End Sub

Private Sub mHook_Mouse_Right_DoubleClick(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Right_DoubleClick
Debug.WriteLine("Mouse Right Double Click At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Right_Down(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Right_Down
Debug.WriteLine("Mouse Right Down At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Right_Up(ByVal ptLocat As System.Drawing.Point) Handles mHook.Mouse_Right_Up
Debug.WriteLine("Mouse Right Up At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub

Private Sub mHook_Mouse_Wheel(ByVal ptLocat As System.Drawing.Point, ByVal Direction As MouseHook.Wheel_Direction) Handles mHook.Mouse_Wheel
Debug.WriteLine("Mouse Scroll: " & Direction.ToString & " At: (" & ptLocat.X & "," & ptLocat.Y & ")")
End Sub



برای مورد دوم هم بعد از به دست آوردن هندل پنجره فرمان minimize را به آن ارسال کنید. در این کد نحوه کار را میبینید:

'in the name of god
Private Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_CLOSE As Integer = &HF060
Private Const SC_MAXIMIZE As Integer = &HF030
Private Const SC_MINIMIZE As Integer = &HF020
Private Const SC_RESTORE As Integer = &HF120


Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As IntPtr, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As IntPtr) As Integer
Private Declare Function IsZoomed Lib "user32" (ByVal hwnd As IntPtr) As Integer

Private Sub MyMinimizeWindow(ByVal Handle As IntPtr)

If CBool(IsIconic(Handle)) Then
Call PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0)
Else
Call PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
End If

End Sub

Private Sub MyMaximizeWindow(ByVal Handle As IntPtr)

If CBool(IsZoomed(Handle)) Then
Call PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0)
Else
Call PostMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
End If

End Sub

Private Sub MyCloseWindow(ByVal Handle As IntPtr)

Call PostMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0)

End Sub

یا از طریق تابع ShowWindow:
Public Const SW_MINIMIZE = 6
Declare Function ShowWindow Lib "user32" (ByVal hwnd As IntPtr , _
ByVal nCmdShow As integer ) As integer

'درون تابع برای MiniMize کردن پنجره
ret = ShowWindow(hWnd, SW_MINIMISE)


در کل برای چنین کارهایی در مورد
GetMessage
GetMessageExtraInfo
GetCursorPos
GetMessageTime
SendMessage
PostMessage
SendMessageCallback
CallNextHookEx
CallWndProc
SetWindowsHookEx
LowLevelMouseProc
MouseProc
UnhookWindowsHookEx
و... تحقیق کنید.

من اصلا ازش سر در نمیارم !
میشه راهنمایی کنید ؟
من با vb.net کار میکنم
این کد ها رو کجا کپی کنم ؟
کلاس ؟ فرم ؟
نمیشد برام برنامه شو میساختی و اپ میکردی ؟
حجمش زیاد نمیشد ها !!!
کمکم کنید منم بهتون ساکس رایگان میدم
منتظرم