كيف يمكن ان يكون البرنامج دائما في المقدمه - black coder - 24-06-19
السلام عليكمم اخواني
*****************
اريد ان اجعل البرنامج يمكن استخدامه فوق لعبه (اريد عند ضغط علي form البرنامج ولا يختفي العبه وي يظهر الديسك توب)
استخدمت هذه الاكواد و لم تعمل
رجاء اذا استطاع احد مساعدتي فليفعل هذا
PHP كود :
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, ByVal X As Long, _ ByVal Y As Long, ByVal CX As Long, ByVal CY As Long, _ ByVal wFlags As Long) As Long Private Const SWP_NO**** = 2 Private Const SWP_NOSIZE = 1 Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2
Public Sub SetOnTop(ByVal hwnd As Long, ByVal bSetOnTop As Boolean) Dim lR As Long If bSetOnTop Then lR = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NO**** Or SWP_NOSIZE) Else lR = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NO**** Or SWP_NOSIZE) End If End Sub
Private Sub Form_Load() SetOnTop Form1.hwnd, True End Sub
PHP كود :
Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Int32, ByVal hWndInsertAfter As Int32, ByVal x As Int32, ByVal y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal wFlags As Int32) As Int32 Const HWND_TOPMOST = -1 Const HWND_NOTOPMOST = -2 Const SWP_NOSIZE = &H1 Const SWP_NOMOVE = &H2 Const SWP_NOACTIVATE = &H10 Const SWP_SHOWWINDOW = &H40 'form load SetWindowPos(Handle, HWND_TOPMOST, Left / 15, Top / 15, Width / 15, Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
'******************************************************* '??????????????????????????????????????????????????????? Public Class Form2 Public Declare Function apiFindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer Public Declare Function apiGetTopWindow Lib "user32" Alias "GetTopWindow" (ByVal hwnd As Integer) As Integer Public Declare Function apiGetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Integer Dim rTopMost As New System.Threading.Thread(AddressOf ReturnTopMost) 'Declare thread for returning topmost
Delegate Function HandleDelegate() As Int32 Public hndl As HandleDelegate
Delegate Sub setTopMostDelegate() Public setTopMost As setTopMostDelegate
Delegate Sub setRefreshDelegate() Public setRefresh As setRefreshDelegate
Delegate Function getTextDelegate() As String Public getText As getTextDelegate
Public Sub setTopMostSub() Me.TopMost = True End Sub
Public Sub setRefreshSub() Me.Refresh() End Sub
Public Function getHandleFunc() As Int32 Return Me.Handle.ToInt32 End Function
Public Function getTextSub() As String Return Me.Text.ToString End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load hndl = New HandleDelegate(AddressOf getHandleFunc) setTopMost = New setTopMostDelegate(AddressOf setTopMostSub) setRefresh = New setRefreshDelegate(AddressOf setRefreshSub) getText = New getTextDelegate(AddressOf getTextSub)
rTopMost.Start() 'Start Return Top Most thread. End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing rTopMost.Abort() 'Abort TopMost thread if the main form is closed End Sub
Public Sub ReturnTopMost()
Dim iHndl As Int32
iHndl = Me.Invoke(hndl)
Try Do System.Threading.Thread.Sleep(1) 'Sleep for a short period If apiGetTopWindow(apiGetDesktopWindow) <> iHndl Then Me.Invoke(setTopMost) Me.Invoke(setRefresh) End If apiFindWindow(vbNullString, Me.Invoke(getText)) 'This throws an error if the main window has been terminated. Loop Catch ex As Exception MessageBox.Show(ex.Message) End Try
End Sub
End Class
PHP كود :
<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 UInt32) As Boolean End Function
ReadOnly HWND_TOPMOST As New IntPtr(-1) Shared ReadOnly SWP_NOSIZE As UInt32 = Convert.ToUInt32(&H1) Shared ReadOnly SWP_NOMOVE As UInt32 = Convert.ToUInt32(&H2)
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 'Either one of these does the trick SetWindowPos(Me.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) 'Me.TopMost = True End Sub
RE: كيف يمكن ان يكون البرنامج دائما في المقدمه - ابراهيم ايبو - 24-06-19
السلام عليكم اخي الكريم
تابع هذا الرابط
او اليك الكود وهو مجرب
كود :
Public Class Form1
' نضع هذه الاكواد اولا
Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Int32, ByVal hWndInsertAfter As Int32, ByVal x As Int32, ByVal y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal wFlags As Int32) As Int32
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
' ثم في حذث تحميل الفورم
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetWindowPos(Handle, HWND_TOPMOST, Left / 15, Top / 15, Width / 15, Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
End Sub
End Class
RE: كيف يمكن ان يكون البرنامج دائما في المقدمه - black coder - 25-06-19
(24-06-19, 07:50 PM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
تابع هذا الرابط
او اليك الكود وهو مجرب
كود :
Public Class Form1
' نضع هذه الاكواد اولا
Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Int32, ByVal hWndInsertAfter As Int32, ByVal x As Int32, ByVal y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal wFlags As Int32) As Int32
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
' ثم في حذث تحميل الفورم
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetWindowPos(Handle, HWND_TOPMOST, Left / 15, Top / 15, Width / 15, Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
End Sub
End Class
شكرا اخي سقوم بي التجربه و اخبارك بما حدث
|