تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[ تمّ الحل ] : جعل الآلة الحاسبة بمقدّمة الشاشة
#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

الرد }}}


الردود في هذا الموضوع
RE: جعل الآلة الحاسبة بمقدّمة الشاشة - بواسطة معاند الحظ - 15-08-20, 06:17 AM


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


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