Salve a tutti,
sono ormai due giorniche sbatto la testa contro il muro al fine di installare il mio servizio windows con proprietà di interagire con il desktop, opzione necessaria al fine di lanciare un programmino fatto da me.
Ho trovato una classe che dovrebbe fare al caso mio ma non mi cambia nulla, la posto qui sotto, magari qualcuno la conosce e può aiutarmi:
Public Class Interactive
Private Declare Function OpenWindowStation Lib "user32.dll" Alias "OpenWindowStationA" (ByVal lpszWinSta As String, ByVal fInherit As Boolean, ByVal dwDesiredAccess As Int32) As Int32
Private Declare Function OpenDesktop Lib "user32.dll" Alias "OpenDesktopA" (ByVal lpszDesktop As String, ByVal dwFlags As Int32, ByVal fInherit As Boolean, ByVal dwDesiredAccess As Int32) As Int32
Private Declare Function SetProcessWindowStation Lib "user32.dll" (ByVal hWinSta As Int32) As Int32
Private Declare Function SetThreadDesktop Lib "user32.dll" (ByVal hDesktop As Int32) As Int32
Public Sub MakeServiceInteractive()
Dim lngDefaultDesktop As Int32
Dim lngWinSta0 As Int32
lngWinSta0 = OpenWindowStation("WinSta0", False, &H37F)
Dim fatto1 = SetProcessWindowStation(lngWinSta0)
lngDefaultDesktop = OpenDesktop("Default", 0&, False, &H10000000)
Dim fatto = SetThreadDesktop(lngDefaultDesktop)
Shell("c:\TrueUpdateClient.exe", AppWinStyle.NormalFocus, False)
End Sub
End Class
L'unica cosa che funzionano sono le msgbox![]()
Installo il mio servizio in sistema locale.
Quando lo avvio non da errori e nel taskmanager mi trovo processo del programma che voglio aprire: TrueUpdateClient.exe
Se imposto io manualmente la proprietà di interazione con desktop funziona tutto correttamente.
Qualcuno può aiutarmi, come posso impostare la proprietà automaticamente in fase di installazione del mio servizio?????![]()
saluti e grazie in anticipo per l'aiuto![]()