تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[ تمّ الحل ] : جعل الآلة الحاسبة بمقدّمة الشاشة
#1
السّلام عليكم و رحمة الله و بركاته
إخواني الأفاضل هل هناك إمكانيّة جعل الآلة الحاسبة عند الضغط على زر معيّن تظهر بمكان معيّن بمقدّمة الشاشة ال MDIParent!!
حاولت بشتى الطرق لكنها تظهر خلف الشاشة ..
جربت
Me.TopMost = True
جربت
SendToBack
لكن لا حياة لمن تنادي
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: حريف برمجة
#2
وعليكم السلام

لانها مجرد فورم آلة حاسبة فلم لا تجعلها نافذة عادية بمعنى لا تحدد لها MDIParent
ولكن اظهرها بهذه الطريقة
formCalculate.Show(Me) 'لتجعلها في الاعلى تم تحديد Me بين الاقواس
الرد }}}
#3
شكرا أخي مسعود ..
لا .. أنا أقصد حاسبة الوينداوز
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: حريف برمجة
#4
وعليك السلام ورحمة الله وبركاته

اخوي عبد العزيز ربما تحتاج استخدام مكتبات WinApi لتنفيذ ماتريد وبالمصادفة وجدت الكود التالي وهو لسائل يريد التحكم بنافذة الحاسبة ايضا


اضف الكلاس التالي الى مشروعك

وقم بتعريف متغيير منه ضمن الفورم الذي تستخدمه


كود :
Imports System.Runtime.InteropServices

Public Class WinPos

    <DllImport("user32.dll")>
    <MarshalAs(UnmanagedType.Bool)>
    Private Shared Function GetWindowRect(ByVal hWnd As IntPtr, <Out> ByRef lpRect As RECT) As Boolean
    End Function

    <StructLayout(LayoutKind.Sequential)>
    Public Structure RECT
        Public Left As Integer        ' x position of upper-left corner
        Public Top As Integer         ' y position of upper-left corner
        Public Right As Integer       ' x position of lower-right corner
        Public Bottom As Integer      ' y position of lower-right corner
    End Structure


    Private ReadOnly HWND_BOTTOM As New IntPtr(1)
    Private ReadOnly HWND_NOTOPMOST As New IntPtr(-2)
    Private ReadOnly HWND_TOP As New IntPtr(0)
    Private ReadOnly HWND_TOPMOST As New IntPtr(-1)
    Private Const SWP_NOSIZE As Integer = &H0001
    Private Const SWP_NOZORDER As Integer = &H0004
    Private Const SWP_SHOWWINDOW As Integer = &H0040

    <DllImport("user32.dll", SetLastError:=True)>
    Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As Integer) As Boolean
    End Function

    Private process As Process

    Public Sub New()
        InitializeComponent()
        process = Process.GetProcessesByName("calc").FirstOrDefault()
    End Sub

   
End Class

وفي حدث الضغط على الزر


كود :
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        If process Is Nothing Then Return
        Dim handle As IntPtr = process.MainWindowHandle

        If handle IsNot IntPtr.Zero Then
            Dim rct As RECT
            GetWindowRect(handle, rct)
            Dim screen As Rectangle = Screen.FromHandle(handle).Bounds
            Dim pt As Point = New Point(screen.Left + screen.Width / 2 - (rct.Right - rct.Left) / 2, screen.Top + screen.Height / 2 - (rct.Bottom - rct.Top) / 2)
            SetWindowPos(handle, IntPtr.Zero, pt.X, pt.Y, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_SHOWWINDOW or HWND_TOPMOST )
        End If
    End Sub


SetWindowPos In PInvoke

الرد }}}
#5
السّلام عليكم و رحمة الله و بركاته
أخي الكريم معاند الحظ ..
أشكرك جزيل الشكر على المساعدة
بارك الله فيك و لك و جزاك خير الجزاء
لم أتمكن يا غالي من تجربة الكود ..  يظهر خطأ بهذا السطر على مستوى الكلاس
كود :
<MarshalAs(UnmanagedType.Bool)>

تحياتي واحتراماتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: حريف برمجة , حريف برمجة
#6
معليش اخوي عبد العزيز انا نسخت الكود من موقع codeproject وعلى طول حطيته في ردي

لكن الان عدلت الكود وياليت تحذف الكود السابق اللي اعطيتك اياه وتستخدم التالي

مع ملاحظة استيراد فضاء الاسماء

كود :
Imports System.Runtime.InteropServices


كود :
<DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As SetWindowPosFlags) As Boolean
    End Function
    
    Private ReadOnly HWND_BOTTOM As New IntPtr(1)
    Private ReadOnly HWND_NOTOPMOST As New IntPtr(-2)
    Private ReadOnly HWND_TOP As New IntPtr(0)
    Private ReadOnly HWND_TOPMOST As New IntPtr(-1)

    <Flags()> _
    Private Enum SetWindowPosFlags As UInteger
        SynchronousWindowPosition = &H4000
   
        DeferErase = &H2000
    
        DrawFrame = &H20
      
        FrameChanged = &H20
      
        HideWindow = &H80
  
        DoNotActivate = &H10
       
        DoNotCopyBits = &H100
    
        IgnoreMove = &H2
      
        DoNotChangeOwnerZOrder = &H200
      
        DoNotRedraw = &H8
    
        DoNotReposition = &H200
     
        DoNotSendChangingEvent = &H400
     
        IgnoreResize = &H1
      
        IgnoreZOrder = &H4
     
        ShowWindow = &H40
    End Enum

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    
        setWindowOnTop(True)

    End Sub

    Private process As Process

    Sub setWindowOnTop(Optional bool As Boolean = True)

        process = process.GetProcessesByName("calc").FirstOrDefault()
        If process Is Nothing Then Return
        Dim hwnd As IntPtr = process.MainWindowHandle
        Dim theFlags As String = SetWindowPosFlags.IgnoreMove Or SetWindowPosFlags.IgnoreResize Or SetWindowPosFlags.ShowWindow

        If Not hwnd = IntPtr.Zero Then

            If bool Then
                'وضع الحاسبة في اعلى الشاشة
                SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, theFlags)

            Else
                'اعادة الحاسبة الى الوضع العادي

                SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, theFlags)
            End If
        End If

    End Sub

الرد }}}
#7
السّلام عليكم و رحمة الله و بركاته
و الله بجد أخي الكريم معاند الحظ .. أرجو المعذرة .. لم أتمكن من ضبط ذلك
شوف الملف لو تكرّمت بارك الله فيك و لك و جزاك خير الجزاء
تحياتي واحتراماتي


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 74.92 ك ب / التحميلات : 9)
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: حريف برمجة , حريف برمجة
#8
(15-08-20, 10:43 PM)عبد العزيز البسكري كتب :
السّلام عليكم و رحمة الله و بركاته
و الله بجد أخي الكريم معاند الحظ .. أرجو المعذرة .. لم أتمكن من ضبط ذلك
شوف الملف لو تكرّمت بارك الله فيك و لك و جزاك خير الجزاء
تحياتي واحتراماتي

طيب اخي
قبل اشغل برنامجك  اسالك هل عندما شغلت البرنامج وقبل ضغط الزر كانت الحاسبة تعمل ولو في وضع التصغير
لان الكود السابق يجعل الحاسبة فوق كل النوافذ فقط اذا كانت الحاسبة قيد التشغيل

لكن لو كانت الحاسبة مغلقه فيجب تعديل الكود ليقوم اولا بتشغيل الحاسبة ثم يقوم بجعلها فوق النوافذ الاخرى

الرد }}}
#9
لا أخي الغالي .. الحاسبة غير شغالة إطلاقا
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: حريف برمجة , حريف برمجة
#10
الحمد لله تم حل 

تفضل اخوي واسف على التاخير 



.rar   WindowsApplication1.rar (الحجم : 71.97 ك ب / التحميلات : 20)

الرد }}}


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Star دقة الشاشة 1080 waataanys 1 222 05-01-24, 12:45 AM
آخر رد: HALIM ELEULMA
  [VB.NET] سوال على الحاسبة عفيف الاثوري 6 3,212 03-01-24, 04:24 PM
آخر رد: الخير19
  [VB.NET] كيف يمكن إخفاء ظهور الشاشة السوداء فى الـــ console AmeenRashed 2 316 15-11-23, 03:51 PM
آخر رد: justforit
  البرنامج لدي يعمل على ويندوز 11 والان لا يعمل على ويندوز 10 ماهو الحل moh61 1 280 01-09-23, 04:38 AM
آخر رد: اسامه الهرماوي
  ممكن الحل masport tv 0 295 07-04-23, 11:36 AM
آخر رد: masport tv
  ارجو ان لا تبخلو علينا با الحل ahmedbezia 3 466 06-12-22, 01:29 PM
آخر رد: ahmedbezia
  عمل تحديث الشاشة mohamedassim 1 418 21-09-22, 09:26 AM
آخر رد: Taha Okla
  [سؤال] [تم الحل] انشاء المسارات وتمرير البارامترات لها وقت التشغيل سعود 7 1,220 03-09-22, 09:44 AM
آخر رد: Taha Okla
  مشكلة واجهتني كتير وزهقت منها فاللي عنده الحل ياريت يفيدني بيه ميدو الفنان 7 1,023 03-09-22, 03:33 AM
آخر رد: ميدو الفنان
  [سؤال] * تم الحل * التحكم بمخرجات السريال بورت واعادة تحويلها mohamedallams 1 431 30-08-22, 06:42 PM
آخر رد: mohamedallams

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم