24-06-19, 07:20 PM
السلام عليكمم اخواني
*****************
اريد ان اجعل البرنامج يمكن استخدامه فوق لعبه (اريد عند ضغط علي form البرنامج ولا يختفي العبه وي يظهر الديسك توب)
استخدمت هذه الاكواد و لم تعمل
رجاء اذا استطاع احد مساعدتي فليفعل هذا
*****************
اريد ان اجعل البرنامج يمكن استخدامه فوق لعبه (اريد عند ضغط علي 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