Problemi di processi

lunedì 12 luglio 2004 - 15.00

Klaus-zanini Profilo | Senior Member

Ciao, ho un problemino

lancio il processo (file word)
Dim myProcess As Process = System.Diagnostics.Process.Start(sNomeFile)
creo un array di processi in questo modo
Dim proc, mine, procs() As System.Diagnostics.Process
procs = Process.GetProcessesByName("winword")
definisco il mio processo come il primo in array
mine=procs(0)
ciclo i processi all'interno dell'array e se il processo che sto esaminando ha uno starttime maggiore del mine allora rivalorizzo mine sul nuovo processo
For Each proc In procs
'il processo con orario di partenza maggiore è quello che ha richiamato
'la mia funzione e pertanto quello che definirò mine
If proc.StartTime > mine.StartTime Then
mine = proc
End If
Next

alla fine vado di waitforexit

mine.waitforexit()

Ora ho due problemini:
1. Sono un utente non amministratore. Mi si blocca al momento della creazione dell'array di processi perchè non ho le autorizzazioni necessarie per accedere ai processi di macchina. Hai idea di quali siano queste policy, ho provato anche come power user ma niente.
2. Sono un amministratore, passa il recupero dei processi ma poi mi si blocca con lo stesso problema sul waitforexit. (non hai le autorizzazioni necessarie per accedere ai processi di macchina... Accesso negato.... ma non sono amministratore??!!)

Brainkiller Profilo | Guru

Ciao Klaus,
allora fermiamoci un attimo.
Che cosa vorresti ottenere da questo codice, cosa vuoi effettivamente fare ? Almeno capisco e ti consiglio meglio.

ciao
david

Klaus-zanini Profilo | Senior Member

Lo scopo è il seguente:
lancio un'applicazione word e voglio recuperarne il processo per ucciderlo dopo un tempo prestabilito. Il problema è che con office 2003 anche se aprò 3 finestre word appare un solo processo: è possibile differenziarli?

Brainkiller Profilo | Guru

Non so se è possibile differenziarli.
Credo che tu possa fare in due modi.
O usi i PIAs e quindi puoi pilotare Word.
Oppure vai di interoperabilità, e usi la funzione FindWindow per trovare tutte le finestre che sono aperte nel PC, rilevare quella che vuoi chiudere, e mandare un messaggio con la SendMessage del tipo WM_QUIT.

E' una soluzione che non ho mai provato però potrebbe funzionare bene.

ciao
david

Klaus-zanini Profilo | Senior Member

gentilmente potresti farmi un esempio dell'uso di Findwindow?

Brainkiller Profilo | Guru

Non è per niente semplice.
Per fare queste cose si presume tu conosca molto bene l'architettura di Windows e come funzionano le applicazioni e i messaggi che lanciano i controlli/finestre e una buona base di C++ e Win32API.
In questo momento se dovessi realizzarti un esempio di quello di cui hai bisogno ci metterei almeno una mezz'oretta anche perchè c'è uno strato aggiuntivo per collegarti a .NET.
In C++ è un po' più semplice.

ciao
david
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5