PDA

View Full Version : خواندن متن کپشن یک پنجره فعال و اجرای خودکار یک کلید



micro_bhk
چهارشنبه 20 بهمن 1389, 13:24 عصر
سلام و خسته نباشید
میخواستم بدونم چطور میتونم یه متن نوشته شده تو کپشن یه پنجره فعال رو با vb بخونم و یک کلید مثل "yes" یا "ok" رو خودکار اجرا کنم.
اگه با مثال باشه ممنون میشم

با تشکر

pcdownload.bloghaa.com
پنج شنبه 21 بهمن 1389, 00:43 صبح
این متن کپشن پنجره فعال را گرفته و در تکست باکس قرار میدهد.و اگر آن متن برابر phoenix باشد دکمه cmdok را فشار میدهد.
یه تایمر با اینتروال 1 روی فرم قرار دهید

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Const WM_GETTEXT = &HD
Dim Address As String
Private Sub Timer1_Timer()
On Error Resume Next
Dim Hwnd As Long
Dim i As Integer
Hwnd = GetForegroundWindow
If Hwnd <> 0 Then
Dim r As Long
Dim s As String
s = String(201, Chr(0))
r = SendMessageByString(Hwnd, WM_GETTEXT, 200, s)
Address = Left(s, r)
End If
If Address = "phoenix" Then
cmdok_click
End
End Sub

micro_bhk
دوشنبه 25 بهمن 1389, 13:01 عصر
خیلی ممنون از راهنماییتون.

ولی یه مشکلی دارم؛ من میخوام که یکی از دکمه های همون پنجره فعال رو اجرا کنم.

ببینید، وقتی که درخواست دیدن وبکم رو میدیم، میخوام برنامه تشخیص بده که پنجره view webame باز شده (تا اینجاش مشکلی نیست)، بعد این که تشخیص داد بیاد آی دی که این درخواست رو داده بخونه، و اگه یه آیدی که تعریف که مشخص کردم باشه دکمه yes پنجره رو اجرا کنه و اگه نباشه دکمه no رو.

چطور میتونم این دکمه ها رو تشخیص و اجرا کنم.

محسن واژدی
دوشنبه 25 بهمن 1389, 13:46 عصر
سلام
برای اینکار باید از دستور SendMessage یا PostMessage استفاده کنین؛ کدای کلیک بر روی یک دکمه رو در زیر براتون گذاشتم این کد یک دکمه را با کپشن Exit که درفرم قرار داره رو فشار میده، البته ببخشید به وی بی دسترسی نداشتم وگرنه سورسش رو میزاشتم:
برای اینکه کدا کار کنن چندتا کار زیر رو اول انجام بدین:


یه صفحه جدید باز کنیم
دوتا دکمه با نامها Command1 و Command2 بزارین
کپشن Command2 رو Exit بزارین
کدای زیر رو در ماژول فرم برنامه تون کپی کنین




Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long

Private Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) _
As Long

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) _
As Long

Private Const BM_CLICK = &HF5

Private Sub Command1_Click()
Dim hwnd As Long

hwnd = FindWindow(vbNullString, Me.Caption)
If hwnd <> 0 Then
hwnd = FindWindowEx(hwnd, 0&, vbNullString, "Exit")
If hwnd <> 0 Then
Call SendMessage(hwnd, BM_CLICK, 0&, ByVal 0&)
End If
Else
Call MsgBox("Requiered window handle not found...", , "Error...")
Exit Sub
End If
End Sub

Private Sub Command2_Click()
Call MsgBox("Hello...Press OK to exit...")
End
End Sub
موفق باشید