Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

Creazione operazione pianificata

  1. #1
    roccolamann non  in linea Scribacchino
    Con questa routine cerco di impostare un'operazione pianificata (avviare il Notepad) da far compiere periodicamente al PC
    Sub cvfrty()
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
     errJobCreated = objNewJob.Create("Notepad.exe", "********123000.000000-420", True, 1 Or 4 Or 16, , , JobID)
    MsgBox errJobCreated
    End Sub
    
    ma non funziona; mi da semplicemente il messaggio di errore (numero 2) previsto nella penultima riga della routine.
    Qualche suggerimento?
    (uso Windows Seven e Office 2003)

  2. #2
    Fornisci tutto il percorso di notepad
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    roccolamann non  in linea Scribacchino
    Grazie per il suggerimento, ma non mi funziona.
    Ho corretto la routine sulla base delle tue indicazioni:
    Sub OperazionePianificata()
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
    errJobCreated = objNewJob.Create("C:\Windows\notepad.exe", "********012500.000000-420", True, 4, , True, JobId)
    If errJobCreated <> 0 Then
    MsgBox "Error on task creation"
    Else
    MsgBox "Task created"
    End If
    
    il risultato un messaggio MsgBox "Error on task creation"

  4. #4
    Quote Originariamente inviato da roccolamann Visualizza il messaggio
    ...
    errJobCreated = objNewJob.Create("C:\Windows\notepad.exe", "********012500.000000-420", True, 4, , True, JobId)
    If errJobCreated <> 0 Then
    MsgBox "Error on task creation"
    Else
    MsgBox "Task created"
    End If
    
    il risultato un messaggio MsgBox "Error on task creation"
    Non ho la minima idea di come funziona, ho guardato adesso per la prima volta Win32_ScheduledJob.Create e ho trovato questo:
    "Il metodo restituisce un valore intero che pu essere interpretato nel modo seguente: 0 - Operazione completata 1 - Non supportato 2 - Accesso negato 8 – Errore sconosciuto 9 - Percorso non trovato 21 - Parametro non valido 22 - Servizio non avviato Altro – Per valori interi diversi da quelli elencati, consultare la documentazione relativa ai codici di errore di Win32".
    Potresti sostituire quella "gestione dell'errore", nel senso che quando non restituisce 0 compare sempre "Error on task creation", con un avviso che dica il numero dell'errore. Dovrebbe essere sufficiente
    'If errJobCreated <> 0 Then
    MsgBox errJobCreated
    'Else
    'MsgBox "Task created"
    'End If
    
    Che valore ha JobID?

    Nel frattempo ho proseguito con l'analisi. Probabilmente il valore di JobID non ha alcuna relazione con l'errore.
    Da me andato senza problemi: WindowsXP SP3 (da riga comandi) e inserendo il tutto in un pulsante di comando Ms Access (quindi VBA). Ho letto che hai Win7. Potresti avere qualche grana con il controllo accesso utenti (noto con l'acronimo inglese UAC) e/o se hai il sistema a 64bit (questo non lo posso verificare adesso, non ce l'ho sotto mano)
    Ultima modifica di Phil_cattivocarattere; 06-03-2015 13:11 

  5. #5
    L'avatar di willy55
    willy55 non  in linea Scribacchino
    Come indicato anche da Phil... (controlla la mancante assegnazione di errJobCreated) prova infatti a seguire esattamente l'esempio fornito da Microsoft:
    https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
    Ultima modifica di willy55; 07-03-2015 01:47 
    ℹ️ Leggi di pi su willy55 ...

  6. #6
    Quote Originariamente inviato da roccolamann Visualizza il messaggio
    Grazie per il suggerimento, ma non mi funziona.
    Ho corretto la routine sulla base delle tue indicazioni:
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
    errJobCreated = objNewJob.Create("C:\Windows\notepad.exe", "********012500.000000-420", True, 4, , True, JobId)
    'If errJobCreated <> 0 Then
    'MsgBox "Error on task creation"
    MsgBox errJobCreated
    'Else
    'MsgBox "Task created"
    'End If
    
    Salvato in un file vbs ed eseguito da riga comandi su Win7 64bit con UAC disattivato: funziona (compare la finestra di messaggio con 0). Anche con il doppio clic da una finestra di esplora risorse stesso risultato. Ovviamente i programmi di "sicurezza" (quelli li tengo attivi) hanno segnalato l'operazione ma una volta autorizzata stata portata a termine senza problemi.
    Niente test da VBA

  7. #7
    Quote Originariamente inviato da roccolamann Visualizza il messaggio
    Grazie per il suggerimento, ma non mi funziona.
    Se non mostri il valore d'errore restituito non si potr capire perch fallisce.

    EDIT: Ora che lo noto, ma come hai scritto qui

    objWMIService.Get("Win32_ScheduledJobrJobCreated = objNewJob.Create

    ?????
    Ultima modifica di AntonioG; 07-03-2015 09:29 
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Operazione pianificata con utente disconnesso
    Da Brontolo nel forum Microsoft Windows
    Risposte: 16
    Ultimo Post: 11-10-2020, 16:30
  2. Operazione pianificata & VBA
    Da roccolamann nel forum Microsoft Word
    Risposte: 0
    Ultimo Post: 01-10-2012, 13:47
  3. Risposte: 0
    Ultimo Post: 12-10-2011, 07:17
  4. Risposte: 8
    Ultimo Post: 26-02-2009, 11:01
  5. [VB6] eliminare operazione pianificata
    Da nikasp nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 19-06-2008, 14:04