Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [vb.net] creazione servizio windows con USER32

    salve,
    ho scaricato una demo per creare un servizio ed installato con "installutil". Tutto funziona bene.
    Il servizio controlla l'esistenza di un file e lo trascrive in un log.
    Ho creato un una form dove mi legge le cartelle aperte usando "user32". Tutto funziona bene.
    codice:
        <DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)>
        Private Shared Function FindWindowByCaption(
         ByVal zero As IntPtr,
         ByVal lpWindowName As String) As IntPtr
        End Function
        <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
        Private Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
        End Function
    e lo richiamo con
    codice:
          Const WM_CLOSE As Long = &H10
            Dim zero As IntPtr = IntPtr.Zero
            Dim windowName As String = "nome_della_cartella_da_cercare"
            Dim dialogHandle As IntPtr = FindWindowByCaption(zero, windowName)
            writeTxtFile(blnCheckExists(strControlPath & strEndCodeFile).ToString(), dialogHandle)
            If dialogHandle <> 0 Then
                'ho trovato la cartella aperta e la chiudo
                PostMessage(dialogHandle, WM_CLOSE, 0&, 0&)
            Else
                'non trovo la cartella aperta
            End If
    Ho inserito solo il codice della form dentro il servizio ma non va. Non riesco a capire il perchè
    In allegato il progetto
    Grazie
    File allegati File allegati
    Carpe diem
    Preferisco tentare che rinunziare

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non va cosa vuol dire? A che serve il servizio?

    Cosa fai per capire che non va?

    Dove hai inserito, nel servizio, quel codice?
    Quante volte (o ogni quanto tempo) viene eseguito quel codice?

    Con quale utente gira il servizio?


    P.S. Non so perché ma il forum non mi permette di scaricare il .zip
    Ultima modifica di oregon; 25-10-2017 a 11:49
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ho dato un'occhiata più approfondita e penso proprio che operi con un sistema operativo più recente ...

    Da Windows Vista in poi i servizi lavorano in Session 0 e tutto il resto da Session 1 in poi. Quindi le funzioni di tipo

    FindWindow...

    non possono trovare le finestre perché la ricerca non avviene tra sessioni.

    Non c'è modo per superare questa difficoltà.

    Puoi usare un Task Schedulato al posto di un servizio.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.