PDA

View Full Version : بدست اوردن هندل برنامه مورد نظر



aleas2
دوشنبه 19 بهمن 1394, 11:15 صبح
سلام خسته نباشید
من به هندل یه برنامه نیاز دارم که از برنامه مورد نظرم فقط یه قسمت از عنوان پنجره اصلی برنامه دارم بطور مثال عنوانش "barname 10" است ولی من فقط میدونم اولش "baname" چون قسمت دومش با هر دفعه اجرا تغییر میکنه

حالا چطور میتونم هندل بدست بیارم؟


فکری که به ذهنم به یه کد نیاز دارم که لیست عنوان های پروسه های در حال داخل لیست باکس نمایش بده بعد یکی یکی چک کنه هر کدوم که "barname" بود هندل اونو بدست بیار


ممنون میشم راهنمایی کنید برای اینکار کدهارو بلد نیستم !


یا حداقل بگین چطور میتونم لیست هندل پروسه ها داخل یه لیست باکس داشته باشم؟

meys34
سه شنبه 20 بهمن 1394, 17:37 عصر
سلام

اینجا دقیقا همون چیزی هست که میخواید:
http://www.freevbcode.com/ShowCode.asp?ID=336

من به مقدار تغییرش دادم:
Option Explicit

Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long

Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Declare Function GetNextWindow Lib "user32" _
Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) _
As Long

'call it like so
'call msgbox(dlhfindwin&(me,"text of window",false))
'or to Get the caption Do this
'call msgbox(getcaption$(dlhfindwin&(me,"text of window",false)))

Public Function GetCaption(lhWnd As Long) As String

Dim sA As String, lLen As Long

lLen& = GetWindowTextLength(lhWnd&)

sA$ = String(lLen&, 0&)

Call GetWindowText(lhWnd&, sA$, lLen& + 1)
GetCaption$ = sA$

End Function

Public Function DLHFindWin(lhWnd As Long, WinTitle As String, _
CaseSensitive As Boolean) As Long

Dim sA As String

Do

DoEvents
If lhWnd& = 0 Then Exit Do
If CaseSensitive = False Then
sA$ = LCase$(GetCaption(lhWnd&))
WinTitle$ = LCase$(WinTitle$)
Else
sA$ = GetCaption(lhWnd&)
End If

If InStr(sA$, WinTitle$) Then
DLHFindWin& = lhWnd&
Exit Do
Else
DLHFindWin& = 0
End If

lhWnd& = GetNextWindow(lhWnd&, 2)

Loop

End Function



Private Sub Command1_Click()
MsgBox (DLHFindWin&(0, "barname", False))
End Sub

atf_1379
پنج شنبه 20 مهر 1396, 03:01 صبح
سلام
من میخواهم وقتی برنامه ای که قسمتی از نام (کپشن) آن را میدانم اجرا شد برنامه من بسته شود .
مثلاً عنوان آن برنامه 1Learning Farsi Access 2010_sourcecodes.ir.pdf است ومن فقط Access 2010 این عنوان را میدانم .
با استفاده از کدبالا نتوانستم به نتیجه برسم