Мы переходим от Citrix к RDS для некоторых наших приложений.Однако в начальных выпусках мы заметили, что заголовок окна панели задач (т. Е. Вы наводите указатель мыши или щелкаете значок на панели задач и получаете мозаичный предварительный просмотр с заголовками) не обновляется вместе с заголовком окна приложения.Вместо этого написано (RDBROKER.SITE.NET)
.Что еще хуже, это несколько противоречиво.
![RDS_Title_Issue](https://i.stack.imgur.com/43CGl.png)
Я изменил код из этого ответа и использую его во время загрузки формы:
Class NameChangeTracker
Delegate Sub WinEventDelegate(ByVal hWinEventHook As IntPtr, ByVal eventType As UInteger, ByVal hwnd As IntPtr, ByVal idObject As Integer, ByVal idChild As Integer, ByVal dwEventThread As UInteger, ByVal dwmsEventTime As UInteger)
<DllImport("user32.dll")>
Private Shared Function SetWinEventHook(ByVal eventMin As UInteger, ByVal eventMax As UInteger, ByVal hmodWinEventProc As IntPtr, ByVal lpfnWinEventProc As WinEventDelegate, ByVal idProcess As UInteger, ByVal idThread As UInteger, ByVal dwFlags As UInteger) As IntPtr
End Function
<DllImport("user32.dll")>
Private Shared Function UnhookWinEvent(ByVal hWinEventHook As IntPtr) As Boolean
End Function
Const EVENT_OBJECT_NAMECHANGE As UInteger = &H800C
Const WINEVENT_OUTOFCONTEXT As UInteger = 0
Shared procDelegate As WinEventDelegate = New WinEventDelegate(AddressOf WinEventProc)
Public Shared Sub Main()
Dim hhook As IntPtr = SetWinEventHook(EVENT_OBJECT_NAMECHANGE, EVENT_OBJECT_NAMECHANGE, IntPtr.Zero, procDelegate, 0, 0, WINEVENT_OUTOFCONTEXT)
'MessageBox.Show("Tracking name changes on HWNDs, close message box to exit.")
UnhookWinEvent(hhook)
End Sub
Private Shared Sub WinEventProc(ByVal hWinEventHook As IntPtr, ByVal eventType As UInteger, ByVal hwnd As IntPtr, ByVal idObject As Integer, ByVal idChild As Integer, ByVal dwEventThread As UInteger, ByVal dwmsEventTime As UInteger)
If idObject <> 0 OrElse idChild <> 0 Then
Return
End If
'Console.WriteLine("Text of hwnd changed {0:x8}", hwnd.ToInt32())
End Sub
End Class
Этот код неверен?Есть ли что-то еще, что я должен сделать, чтобы заставить это работать?Я могу сделать это вручную с помощью ctrl+alt+end
, чтобы принудительно обновить окна RDS, но мы не сможем заставить наших пользователей сделать это.