ورود

View Full Version : سوال: مسیر پنجره



terminator68
شنبه 13 مهر 1387, 18:29 عصر
سلام.

من دنبال کدی هستم که مثلا شما رفتید توی درایو d و وارد پوشه pic شدید.

من می خوام شما الان که تو این مسیر هستید رو برنامه بیاد داخل یک textbox نشون بده.

همین.:لبخند:

با تشکر.

Armin060
شنبه 13 مهر 1387, 18:39 عصر
به نظرم اين كد در گوشه ای از سايت هست. اما كجا نميدونم. خلاصه من از قبل داشتم، ديگه همينجا بزارم :
يك پروژه جديد باز كنيد و يك TextBox و يك تايمر به فرمتون اضافه كنيد. Interval تايمر رو 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
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 = FindWindow("CabinetWClass", vbNullString)
If Hwnd <> 0 Then
Hwnd = FindWindowEx(Hwnd, 0, "WorkerW", vbNullString)
Hwnd = FindWindowEx(Hwnd, 0, "ReBarWindow32", vbNullString)
Hwnd = FindWindowEx(Hwnd, 0, "ComboBoxEx32", vbNullString)
Dim r As Long
Dim s As String
s = String(201, Chr(0))
r = SendMessageByString(Hwnd, WM_GETTEXT, 200, s)
If Left(s, r) = "My Computer" Then Exit Sub
Address = Left(s, r)
End If
Text1.Text = Address
End Sub
حالا برنامتون رو اجرا كنيد و وارد يكي از پوشه هاتون بشيد بعد برنامه رو چك كنيد، ميبينيد كه مسير فعال رو نشون ميده.

r0ot$harp
شنبه 13 مهر 1387, 18:52 عصر
سلام.

من دنبال کدی هستم که مثلا شما رفتید توی درایو d و وارد پوشه pic شدید.

من می خوام شما الان کهتو این مسیر هستید رو برنامه بیاد داخل یک textbox نشون بده.

همین.:لبخند:

با تشکر.


دوست عزیز شما باید هندل Edit این کلاس رو پیدا کنید . برای این کار از کد زیر استفاده کنید :




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 WM_GETTEXTLENGTH = &HE

Private Const WM_GETTEXT = &HD

Private Sub Form_Load()

Dim Main As Long

Dim Child As Long

Main = FindWindow("CabinetWClass", vbNullString)
Child = FindWindowEx(Main, 0&, "WorkerW", vbNullString)
Child = FindWindowEx(Child, 0&, "ReBarWindow32", vbNullString)
Child = FindWindowEx(Child, 0&, "ComboBoxEx32", vbNullString)
Child = FindWindowEx(Child, 0&, "ComboBox", vbNullString)
Child = FindWindowEx(Child, 0&, "Edit", vbNullString)

Dim Buffer As String

Dim Length As Long

Length = SendMessage(Child, WM_GETTEXTLENGTH, 0, 0) + 1
Buffer = Space$(Length)

If Length = 0 Then Exit Sub

SendMessage Child, WM_GETTEXT, Length, ByVal Buffer
MsgBox Buffer

End Sub






باتشکر احسان