منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
كيف الحصول على حجم نوافذ عملية - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : كيف الحصول على حجم نوافذ عملية (/showthread.php?tid=19543)



كيف الحصول على حجم نوافذ عملية - Mohamed20 - 06-03-17

اسف اذا كان الموضوع السابق كان مخالف للقوانين

كود :
           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


RE: كيف الحصول على حجم نوافذ عملية - مساعدة - 06-03-17

السلام عليكم

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


RE: كيف الحصول على حجم نوافذ عملية - Mohamed20 - 06-03-17

(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 بعد اما يفتج المشروع

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