View Full Version : سوال: مسیر پنجره
  
terminator68
شنبه 13 مهر 1387, 19:29 عصر
سلام.
 
من دنبال کدی هستم که مثلا شما رفتید توی درایو d و وارد پوشه pic شدید.
 
من می خوام شما الان که تو این مسیر هستید رو برنامه بیاد داخل یک textbox نشون بده.
همین.:لبخند:
 
با تشکر.
Armin060
شنبه 13 مهر 1387, 19: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, 19: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
باتشکر احسان
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.