Newsgroup: it.comp.appl.access
Titolo: Comando SHELL in Access 2003 non funziona.

Saluto tutti,
vi espongo questo problema.
Ho una piccola applicazione scritta in VBA con Access2003.
Funzionava tutto prima della reinstallazione di XP SP2 + Office 2003 (ultimo 
office update aggiornato).
Ora sembra che le chiamate al comando SHELL siano interdette.
Principalmente alla pressione di un pulsante tutto quello che faceva (e 
funzionava ovviamente) era
una cosa stupida tipo:
Shell "start mailto:
pi...@pluto.it
"
Ora debuggando step-by-step mi accorgo che l'esecuzione di quella riga non 
fa nulla :-O
Ho provato a disabilitare il sandbox Strumenti\Macro\Protezione\Basso.
Ma la cosa non cambia.
Ho provato ad invocare direttamente il Kerne32 chiamate del tipo con:
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
   lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
   lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
   ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
   ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
   lpStartupInfo As STARTUPINFO, lpProcessInformation As _
   PROCESS_INFORMATION) As Long
...
...
Niente: non va. L'esegue e non fa nulla.
Lo stesso MDB su un'altra macchina funzia.
Indizio: Mi successe una cosa simile in un'altra "fresh install" di XP... 
poi non so come tutto tornò al suo posto.
Qualche lume lo chiedo a voi che magari ci siete già sbattuti contro,
Grazie per ogni aiuto,
AlGOr 

 ha scritto nel messaggio 
news:Zfcke.10355$Jd....@tornado.fastwebnet.it...

Ciao,
in merito al fatto che la chiamata al comando "Shell" non funzione non sò 
cosa dirti nulla in merito ma se il tuo scopo è spedire una email, avviare 
un'applicazione, lanciare una stampa etc...puoi utilizzare la funzione 
"ShellExecute" delle Api di windows nel seguente modo:
-------------
Sezione generale del form
--------------
Option Compare Database
Dim destinatario As String
Dim oggetto As String
Dim testo As String
Private Declare Function ShellExecute Lib "shell32.dll" Alias 
"ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal 
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, 
ByVal nShowCmd As Long) As Long
-----------------------------
Private Sub Pulsante_Click()
Dim ritorno As Long
testo = "testo della email"
oggetto = "oggetto della email"
destinatario = "
pi...@pluto.it
"
ritorno = ShellExecute(Me.hWnd, "Open", "mailto:" & destinatario & 
"?subject=" & oggetto & "&body=" & testo, vbNullString, vbNullString, 
SW_HIDE)
End Sub
-------------------
Se funziona e se vuoi utilizzare questa funzione (o cmq documentarti su 
altre funzioni...) trovi ampia documentazione sul sito 
http://members.xoom.virgilio.it/CesareRizzi/
Buona giornata
Gaspare

 AlGOr
Lasci aperdere le API per il processo, non lanciano un'esecuzione,
hai letto SDK prima...?
Eventualmente era da usare ShellExecute.
Shell "cmd /c start mailto:
vbma...@pandora.be
?subj­ect=Info" 
Call ShellExecute(0, "open", "mailto:
vbma...@pandora.be
?sub­ject=Info",
vbNullString, vbNullString, 1) 
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 SW_HIDE)
Correggi SW_HIDE (non precedentemente definita) con "1" come suggeriva
Alessandro, anche.
Provato, quindi, ma non fa assolutamente nulla.
il TRACE di passa attraverso senza battere ciglio e nulla accade.
E' come se le chiamate a Shell fossero "bloccate"/"filtrate".
Ora provo a disabilitare AVirus e Firewall...
mi è rimasta solo quella come ipotesi.
AlGOr 

 mi č rimasta solo quella come ipotesi.
Niente.
Disabilitando AV e FW non cambia nulla...
Disinstallo O2003 e lo reinstallo, nel tardo pomeriggio.
(Odio arrendermi a chi critica prodotti MS quando fanno cosě...
ma alla fine č vero: non avere il controllo totale di cosa accade
e perchč č sempre un problema)
Se a qualcuno gli si accende una *lampadina* sulle possibili
cause della (parrebbe) mancata interazione con Shell32, faccia
un fischio.
AlGOr 


Ciao,
il mio era solo 1 esempio "banale" per cercare di "scandire" più a fondo il 
problema -> lascia perdere le Api se non ti interessano...la mia è una 
"distorsione personale" giacchè sfrutto le funzioni di sistema quando 
posso....
Perchè non provi a richiamare la funzione (Api) da un'altro applicativo 
Microsoft invece di disinstallare ed installare Access?
Ti consiglio di utilizzare quest'espediente perchè penso che "qualcosa" 
(protezioni etc...)  non ti faccia comunicare con i file dll del 
sistema...tutto qui!
Gaspare 

 dll del sistema...tutto qui!
OK, dopo varie prove (vedi orario di post...) install &disinstall
alla fine scopro che una buona parte delle cause era (è) Kaspersky
che blocca ogni azione verso Shell (buona cosa... magari chiedere... :-# 
grrr)
Ok, ora ho "superato" il problema *dialogo* con shell32.dll
pare interagire....
La novità? :-O
Il mio bel vecchio e semplice codice NON funziona.
NON trova il file "START"... :-? :-| :-O
Nel senso che la mi riga di comando era:
Shell "start mailto:" & Trim(email) & "?subject=""Pagamento Articolo [" & 
articolo & "]""&body=""" & TestoEmail & """ "
ed ha sempre funzionato alla perfezione...
Ora se l'eseguo mi dice
 "Errore di runtime 53 (Impossibile trovare il file)"
come se cercasse di eseguire un file/batch di nome START e questo non gli 
piace.
Infatti se antepongo "CMD /C ..." il tutto parte (con i problemi 
seguenti)...
Come è possibile che una semplice chiamata a shell "start 
mailto:
pi...@pluto.it
" rompa le **?
(e soprattutto se prima del format funzionava perfettamente!)
Comunque, ora il problema è le virgolette... la mia email è "bella lunga" ed 
ora non mi riesce
fargli lanciare un semplice mailto del tipo
start mailto:
i...@tu.com
?subject="prima parola seconda parola"?body="bla1 bla2 
bla3"
Naturalmente non vorrei che appaiano nel subject le virgolette, idem nel 
body.
Qualche dritta? sto rinco°°°°ndo!
grazie,
AlGOr

 nel body.
Ok, ho dedotto che sostituire %20 agli spazi mi risolve il discorso subject 
ma il body non ne vuole sapere.
Che mi dite? (io vň a letto ora...)
AlGOr
PS:
Ma la cosa + assurda č la domanda che mi rituona nella testa: č 4 mesi che 
usavo il mio codice senza
tutto sto casino e funzionava semplicemente come vi avevo detto.
Come mai CMD (o chi per lei) ora si comporta cosě?