نمایش نتایج 1 تا 2 از 2

نام تاپیک: تغییر متن یک TextBox واقع در برنامه دیگر!

  1. #1

    تغییر متن یک TextBox واقع در برنامه دیگر!

    دو تا برنامه (فرم) مستقل رو در نظر بگیرید اولی رو خودمون مینویسیسم دومی کلا یک نرم افزار دیگه است.
    چطور میشه از طریق برنامه خودمون که میخوایم بنویسیم متن داخل textbox فرم برنامه دوم رو عوض کرد.
    تا اینجا میدونم که باید از api هایی مثل getwindowcaption و ... استفاده کرد اما کل فرایند رو نمیدونم.

  2. #2
    کاربر دائمی آواتار Mr'Jamshidy
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    Network
    پست
    994
    شما باید اول Handle کنترل مورد نظر رو بگیری
    Option Explicit

    Const WM_SETTEXT = &HC
    Const GWL_STYLE = (-16)
    Const GWL_EXSTYLE = (-20)
    Const WM_GETTEXT = &HD
    Const WM_GETTEXTLENGTH = &HE
    Const GWL_HWNDPARENT = (-8)
    Const WM_COMMAND = &H111
    Const MIN_ALL = 419
    Const MIN_ALL_UNDO = 416
    Const MAX_PATH = 260
    Const SW_SHOW = 5
    Const SW_RESTORE = 9
    Const SW_SHOWMINIMIZED = 2
    Const SW_SHOWMAXIMIZED = 3
    Const SW_SHOWNORMAL = 1

    Private Type POINTAPI
    x As Long
    y As Long
    End Type

    Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type

    Private Type WINDOWPLACEMENT
    Length As Long
    flags As Long
    showCmd As Long
    ptMinPosition As POINTAPI
    ptMaxPosition As POINTAPI
    rcNormalPosition As RECT
    End Type

    Private lpwndpl As WINDOWPLACEMENT
    Private CursorLoc As POINTAPI

    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 Declare Function GetWindowRect Lib "user32" _
    (ByVal hWnd As Long, lpRect As RECT) As Long

    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
    (ByVal hWnd As Long, ByVal lpClassName As String, _
    ByVal nMaxCount As Long) As Long

    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long) As Long

    Private Declare Function GetCursorPos Lib "user32" _
    (lpPoint As POINTAPI) As Long

    Private Declare Function WindowFromPoint Lib "user32" _
    (ByVal xPoint As Long, ByVal yPoint As Long) As Long

    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 GetWindowThreadProcessId Lib "user32" _
    (ByVal hWnd As Long, lpdwProcessId As Long) As Long

    Private Declare Function GetWindowPlacement Lib "user32" _
    (ByVal hWnd As Long, lpwndpl As WINDOWPLACEMENT) As Long

    Private Declare Function SetForegroundWindow Lib "user32" _
    (ByVal hWnd As Long) As Long

    Private Declare Function ShowWindow Lib "user32" _
    (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

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

    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Dim lLength As Long
    Dim sText As String

    Private Sub cmdMinAll_Click()
    Dim lHnd As Long

    lHnd = FindWindow("Shell_TrayWnd", vbNullString)
    Call PostMessage(lHnd, WM_COMMAND, MIN_ALL, 0&)
    End Sub

    Private Sub cmdQuit_Click()
    Unload Me
    End Sub


    Private Sub cmdShow_Click()
    Dim sAppName As String
    Dim lState As Long
    Dim lHandle As Long

    sAppName = Trim$(txtApp)
    If sAppName = "" Then Exit Sub
    '
    ' Find the window with the correct caption.
    '
    lpwndpl.Length = 44
    lHandle = FindWindow(vbNullString, sAppName)
    If lHandle = 0 Then Exit Sub
    '
    ' Get the window's state and activate it.
    '
    lState = GetWindowPlacement(lHandle, lpwndpl)
    Select Case lpwndpl.showCmd
    Case SW_SHOWMINIMIZED
    Call ShowWindow(lHandle, SW_RESTORE)
    Case SW_SHOWNORMAL, SW_SHOWMAXIMIZED
    Call ShowWindow(lHandle, SW_SHOW)
    End Select
    Call SetForegroundWindow(lHandle)
    End Sub


    Private Sub cmdUndo_Click()
    Dim lHnd As Long

    lHnd = FindWindow("Shell_TrayWnd", vbNullString)
    Call PostMessage(lHnd, WM_COMMAND, MIN_ALL_UNDO, 0&)
    End Sub

    Private Sub Timer1_Timer()
    Dim lHandle As Long
    Dim lProcessId As Long
    Dim lThreadId As Long
    Dim lStrLen As Long
    Dim lParentHWnd As Long
    Dim sClass As String
    Dim sCaption As String
    Dim sText As String
    Dim sParentText As String
    Dim lpRect As RECT
    '
    ' Get the cursor's coordinates.
    '
    Call GetCursorPos(CursorLoc)
    lblMouseCoords = CursorLoc.x & ", " & CursorLoc.y
    '
    ' Get the handle of the window at those coordinates.
    '
    lHandle = WindowFromPoint(CursorLoc.x, CursorLoc.y)
    '
    ' Get the window's caption.
    '
    lStrLen = MAX_PATH
    sCaption = Space$(MAX_PATH)
    Call GetWindowText(lHandle, sCaption, lStrLen)
    lStrLen = GetWindowText(lHandle, sCaption, lStrLen)
    sCaption = Left$(sCaption, lStrLen)
    '
    ' Get the window's process and thread ID.
    '
    lThreadId = GetWindowThreadProcessId(lHandle, lProcessId)
    '
    ' Get the coordinates if the window.
    '
    Call GetWindowRect(lHandle, lpRect)
    '
    ' Get the window's class.
    '
    sClass = Space$(MAX_PATH)
    Call GetClassName(lHandle, sClass, 255)
    sClass = Left$(sClass, InStr(sClass, vbNullChar) - 1)
    '
    ' Get the handle of its parent window.
    '
    lParentHWnd = GetWindowLong(lHandle, GWL_HWNDPARENT)
    '
    ' Get the window's text's length.
    ' Get the window's text.
    '
    sText = fWindowText(lHandle)
    sParentText = fWindowText(lParentHWnd)

    If sText = Empty Then
    lLength = SendMessage(lHandle, WM_GETTEXTLENGTH, 0, ByVal 0&)
    sText = Space$(lLength + 1)
    sText = "Romina2006"
    Call SendMessage(lHandle, WM_SETTEXT, lLength + 1, ByVal sText)
    End If

    lblInfo.Caption = _
    "Caption = " & sCaption & vbCrLf _
    & "Text = " & sText & vbCrLf _
    & "Position = " & lpRect.Left & ", " & lpRect.Top & vbCrLf _
    & "Size = " & (lpRect.Right - lpRect.Left) & ", " & (lpRect.Bottom - lpRect.Top) & vbCrLf _
    & "Class = " & sClass & vbCrLf _
    & "Style = " & Hex$(GetWindowLong(lHandle, GWL_STYLE)) & vbCrLf _
    & "Extended style = " & Hex$(GetWindowLong(lHandle, GWL_EXSTYLE)) & vbCrLf _
    & "Handle = " & lHandle & vbCrLf _
    & "Parent window handle = " & lParentHWnd & vbCrLf _
    & "Parent window text = " & sParentText & vbCrLf _
    & "Process ID = " & CStr(lProcessId) & vbCrLf _
    & "Thread ID = " & CStr(lThreadId)
    End Sub


    Public Function fWindowText(hWnd As Long) As String
    Dim lLength As Long
    Dim sText As String
    '
    ' Return the text of a window.
    '
    '
    ' Get the text's length.
    '
    lLength = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, ByVal 0&)
    sText = Space$(lLength + 1)
    '
    ' Get the text.
    '
    Call SendMessage(hWnd, WM_GETTEXT, lLength + 1, ByVal sText)
    fWindowText = Left$(sText, lLength)
    End Function

    باقیش هم سادست فقط یکم وقت بزاری مشکلت حل میشه

تاپیک های مشابه

  1. تغییر ارتفاع lineبا تغییر ارتفاع Textbox در گزارش
    نوشته شده توسط payam59 در بخش Access
    پاسخ: 22
    آخرین پست: یک شنبه 03 شهریور 1387, 15:41 عصر
  2. تغییر رنگ Textbox با یک رنگ خاص
    نوشته شده توسط amirferdowsi در بخش VB.NET
    پاسخ: 3
    آخرین پست: شنبه 05 آبان 1386, 18:05 عصر
  3. تغییر زبان یا حداقل جهت نوشتن یک textbox در صفحه
    نوشته شده توسط Masuod در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: سه شنبه 07 آذر 1385, 14:51 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •