منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف الحصول على حجم نوافذ عملية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اسف اذا كان الموضوع السابق كان مخالف للقوانين

كود :
           If Process.GetProcessesByName("calc").Length > 0 Then
            Dim calc_size As System.Drawing.Size
            Dim processWindowHandle As IntPtr = Process.GetProcessesByName("calc")(0).MainWindowHandle
            Dim s As Size = GetControlSize(processWindowHandle)
            calc_size = s
            Dim GWL_STYLE As Integer = -16
            Dim style As Integer = GetWindowLong(processWindowHandle, GWL_STYLE)
            original_style = style
            SetWindowLong(processWindowHandle, GWL_STYLE, original_style)
            MsgBox(calc_size.Width)
        End If
المشكلة ان الناتج 0
السلام عليكم

الكود ناقص،
الرجاء وضع كامل الكود لمعرفة التصحيح المناسب.
(06-03-17, 04:27 PM)مساعدة كتب : [ -> ]السلام عليكم

الكود ناقص،
الرجاء وضع كامل الكود لمعرفة التصحيح المناسب.

تم الحل بحمد الله

كود :
    Public Shared Function GetControlSize(hWnd As IntPtr) As Size
        Try
            Dim pRect As RECT
            Dim cSize As New Size()
            ' get coordinates relative to window
            GetWindowRect(hWnd, pRect)
            cSize.Width = pRect.Right - pRect.Left
            cSize.Height = pRect.Bottom - pRect.Top

            Return cSize
        Catch ex As Exception

        End Try
    End Function
     
 Dim p = (From x In Process.GetProcessesByName("calc") Order By x.StartTime).Last
       Dim processWindowHandle As IntPtr = p.MainWindowHandle
       Dim s As Size = GetControlSize(processWindowHandle)
       Dim calc_size As System.Drawing.Size
       calc_size = s
       MsgBox(calc_size.Width)

المشكلة ان كان يقرءة MainWindowHandle بعد اما يفتج المشروع

تم تصحيح الكود للافادة