View Full Version : [VB] API "CreateProcess" .. cosa ritorna ?
Salve,
per avviare un'applicazione esterna o utilizzato l'api CreateProcess ....
Ora ci sono alcuni applicativi che quando vado a richiamarli in condizioni particolare generano errori ma il tutto avviene in modo trasparente nel senso che non mi producono il file che dovrebbero ... quindi basta che controllo o meno l'esistenza di un file....
Ce n'è uno in particolare però che mi genera un errore mostrandomi una finestra di windows e affinché il mio programma continui la sua esecuzione occorre prima cliccare su ok quando avviene questo errore ... Ora mi chiedevo se è possibile nascondere questo errore in modo che il programma mio cmq prosegui la sua esecuzione ...
Possibile ?
Vi allego anche la procedura realizzata :
Public Sub Esegui_comando(comando As String)
Dim ret As Long
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO
start.cb = LenB(start)
ret = CreateProcess(0&, comando, 0&, 0&, False, CREATE_NO_WINDOW, 0&, 0&, start, proc) 'CREATE_NEW_CONSOLE
Do
ret = WaitForSingleObject(proc.hprocess, &HFFFF)
Loop Until ret = WAIT_OBJECT_0
End Sub
veramente non capisco cosa c'entri il subject col resto del messaggio: CreateProcess torna un BOOL, ovvero un int da interpretare come valore booleano. per quanto riguarda la finestre dipende: che finestra è? che ti dice?
veramente non capisco cosa c'entri il subject col resto del messaggio: CreateProcess torna un BOOL, ovvero un int da interpretare come valore booleano. per quanto riguarda la finestre dipende: che finestra è? che ti dice?
Veramente ritorna un valore di tipo long e non bool ... quello che mi interessava sapere e se è possibile capire quando questo errore viene generato e fermare la finestra prima ancora che venga mostrato ...
Veramente ritorna un valore di tipo long e non bool ...strano, Microsoft non è dello stesso parere :)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp
quello che mi interessava sapere e se è possibile capire quando questo errore viene generato e fermare la finestra prima ancora che venga mostrato ...e se non mi dici che errore è!! :mbe: che ti dice st'errore?
strano, Microsoft non è dello stesso parere :)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp
e se non mi dici che errore è!! :mbe: che ti dice st'errore?
Mah ... guarda qua : http://forums.aspfree.com/archive/t-18406/API-CreateProcess
Quanto all'errore appena lunedì si ripropone te lo posto ...
Mah ... guarda qua : http://forums.aspfree.com/archive/t-18406/API-CreateProcess
sapevo che Visual Basic facesse schifo, ma così tanto..!! :)
addirittura non esiste distinzione tra BOOL e LONG!
leadergl
21-05-2005, 11:52
sapevo che Visual Basic facesse schifo, ma così tanto..!! :)
addirittura non esiste distinzione tra BOOL e LONG!
a dire il vero mamma Microsoft dice:
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
ovvero che il valore di ritorno è ZERO se la funzione fallisce, altrimenti è un valore DIVERSO DA ZERO (non necessariamente 1, può pure essere 17564) se tutto è ok...
Questa è la descrizione della funzione:
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
ovvero che il valore di ritorno è ZERO se la funzione fallisce, altrimenti è un valore DIVERSO DA ZERO (non necessariamente 1, può pure essere 17564) se tutto è ok...
embè? che c'entra? perché, secondo te un BOOL non può assumere un valore di 17564?
embè? che c'entra? perché, secondo te un BOOL non può assumere un valore di 17564?
Ah si ??? e che cavolo di bool è ??? un bool ingrassato ?
Ah si ??? e che cavolo di bool è ??? un bool ingrassato ?
ahahah che divertente... ahah... ah... a... silenzio
tu prova in C a dichiarare una variabile BOOL e vedi quanti possibili valori può assumere: più di 4 miliardi!! ;)
leadergl
21-05-2005, 13:44
embè? che c'entra? perché, secondo te un BOOL non può assumere un valore di 17564?
Beh in Architettura degli Elaboratori ed in Programmazione insegnano che Boolean può assumere valori quali VERO e FALSO che in logica binaria possono tranquillamente essere 1 e 0.
17654 lo veco più come un numero...e credo si avvicini molto più ad una variabile di tipo LONG che BOOLEAN...
poi nn so :D
P.S. inoltre volendo possiamo anche dire che tutte le variabili sono numeri visto che in memoria vengono tutti scritti allo stesso modo...non credo proprio esista la stringa :D
io ho detto la mia...poi...
Beh in Architettura degli Elaboratori ed in Programmazione insegnano che Boolean può assumere valori quali VERO e FALSO che in logica binaria possono tranquillamente essere 1 e 0.
17654 lo veco più come un numero...e credo si avvicini molto più ad una variabile di tipo LONG che BOOLEAN...
poi nn so :D
ma i tipi "Boolean" e "BOOLEAN" che hai citato non esistono ne' in C standard ne' in Win32 ;)
ahahah che divertente... ahah... ah... a... silenzio
tu prova in C a dichiarare una variabile BOOL e vedi quanti possibili valori può assumere: più di 4 miliardi!! ;)
ma lascia perdere la flessibilità che può darti un compilatore ...
credo che se è come dici te (e ti credo figurati) che senso ha definire tanti tipi ?
Se so a priori che la mia variabile potrà solo conservare due valori uso bool .. stop .... io da buon programmatore ho fatto quello che era più corretto ... ma che poi il compilatore c è tanto flessibile a me non importa ...
ma lascia perdere la flessibilità che può darti un compilatore ... che non c'entra nulla in questo caso...
credo che se è come dici te (e ti credo figurati) che senso ha definire tanti tipi ? semantica (ad esempio)
Se so a priori che la mia variabile potrà solo conservare due valori uso bool .. stop .... il fatto che continui a scrivere "bool" minuscolo mi fa pensare che tu confonda tra "BOOL" e "bool"...
io da buon programmatore ho fatto quello che era più corretto ... ma che poi il compilatore c è tanto flessibile a me non importa ... la flessibilità non c'entra, e se hai definito il risultato della CreateProcess come LONG anziché BOOL non hai fatto quello che era più corretto (che d'altra parte non potevi fare, da quanto intuisco del visual basic...)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.