Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ingrandire finestra selezionata con AppActivate.

66 views
Skip to first unread message

Riccardo Baldinotti

unread,
Jun 27, 2011, 9:23:27 AM6/27/11
to
In un'applicazione seleziono un programma esterno mediante AppActivate
"titolo".
Purtroppo, se la finestra dell'applicazione è ridotta a icona, esce un
messaggio:
"errore di automazione. Il server ha sollevato un'eccezione."
E non mi viene intercettato da un comando OnError.
Peraltro, tutto viene eseguito come previsto e se apro la finestra
vedo le cose come dovrebbero essere, ma capite bene che non è bello.
C'è modo di comandare l'apertura di una finestra presente nella barra
delle applicazioni?
Grazie a tutti
Riccardo Baldinotti

@Alex

unread,
Jun 27, 2011, 5:10:46 PM6/27/11
to
Riccardo Baldinotti ha scritto:

Si puoi ricavarne l'hWnd e forzarne la visualizzazione con ShowWindow(API).
Se invece è un'applicazione che espone interfaccia OLE puoi recuperare
l'istanza con GETOBJECT ed a quel punto potrebbe bastare il VISIBLE=TRUE.

@Alex

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it


Riccardo Baldinotti

unread,
Jun 28, 2011, 6:16:55 AM6/28/11
to
@Alex ha scritto:

> Riccardo Baldinotti ha scritto:

> > In un'applicazione seleziono un programma esterno mediante AppActivate
> > "titolo".

> > Purtroppo, se la finestra dell'applicazione � ridotta a icona, esce un


> > messaggio:
> > "errore di automazione. Il server ha sollevato un'eccezione."
> > E non mi viene intercettato da un comando OnError.
> > Peraltro, tutto viene eseguito come previsto e se apro la finestra

> > vedo le cose come dovrebbero essere, ma capite bene che non � bello.
> > C'� modo di comandare l'apertura di una finestra presente nella barra


> > delle applicazioni?
> > Grazie a tutti
> > Riccardo Baldinotti

> Si puoi ricavarne l'hWnd e forzarne la visualizzazione con ShowWindow(API).

> Se invece � un'applicazione che espone interfaccia OLE puoi recuperare


> l'istanza con GETOBJECT ed a quel punto potrebbe bastare il VISIBLE=TRUE.

> @Alex

Ho cercato hWnd nell'Help di Access ma non ho trovato riferimenti al di
fuori di oggetti di Access, per cui non so come ricavare l'hWnd del
programma, che � Lotus Notes.
Sono andato a cercare su Google e mi sono registrato su vari siti ma senza
esito. Davvero, ci ho provato.
Ho trovato qualche pagina che parla di hWnd di un'applicazione aperta con
Shell, ma nel mio caso l'applicazione � gi� aperta.
Ho provato a dare dei comandi GetObject, ma mi esce l'errore: "Il
componente ActiveX non � in grado di creare l'oggetto".
A questo punto, a costo di essere accusato di "pappaprontite", chiedo lumi
ulteriori.
Riccardo Baldinotti

Lucia Spere

unread,
Jun 28, 2011, 7:45:27 AM6/28/11
to
On Tue, 28 Jun 2011 12:16:55 +0200, riccardo....@qualcosa.it
(Riccardo Baldinotti) wrote:

>Ho cercato hWnd nell'Help di Access ma non ho trovato riferimenti al di
>fuori di oggetti di Access, per cui non so come ricavare l'hWnd del
>programma, che è Lotus Notes.

>Sono andato a cercare su Google e mi sono registrato su vari siti ma senza
>esito. Davvero, ci ho provato.
>Ho trovato qualche pagina che parla di hWnd di un'applicazione aperta con
>Shell, ma nel mio caso l'applicazione è già aperta.

>Ho provato a dare dei comandi GetObject, ma mi esce l'errore: "Il
>componente ActiveX non è in grado di creare l'oggetto".

>A questo punto, a costo di essere accusato di "pappaprontite", chiedo lumi
>ulteriori.
>Riccardo Baldinotti

forse ce la fai con programmi tipo Spy++

ciao

Riccardo Baldinotti

unread,
Jun 28, 2011, 8:08:03 AM6/28/11
to
Lucia Spere ha scritto:

> ciao


Ti ringrazio. Disgraziatamente Access � l'unico programma che possiamo
usare, non mi funziona nemmeno un file batch se non installato
appositamente.

Lucia Spere

unread,
Jun 28, 2011, 8:22:30 AM6/28/11
to
On Tue, 28 Jun 2011 14:08:03 +0200, riccardo....@qualcosa.it
(Riccardo Baldinotti) wrote:

>Lucia Spere ha scritto:
>
>> On Tue, 28 Jun 2011 12:16:55 +0200, riccardo....@qualcosa.it
>> (Riccardo Baldinotti) wrote:
>
>> >Ho cercato hWnd nell'Help di Access ma non ho trovato riferimenti al di
>> >fuori di oggetti di Access, per cui non so come ricavare l'hWnd del

>> >programma, che è Lotus Notes.


>> >Sono andato a cercare su Google e mi sono registrato su vari siti ma senza
>> >esito. Davvero, ci ho provato.
>> >Ho trovato qualche pagina che parla di hWnd di un'applicazione aperta con

>> >Shell, ma nel mio caso l'applicazione è già aperta.


>> >Ho provato a dare dei comandi GetObject, ma mi esce l'errore: "Il

>> >componente ActiveX non è in grado di creare l'oggetto".


>> >A questo punto, a costo di essere accusato di "pappaprontite", chiedo lumi
>> >ulteriori.
>> >Riccardo Baldinotti
>
>> forse ce la fai con programmi tipo Spy++
>
>> ciao
>
>

>Ti ringrazio. Disgraziatamente Access è l'unico programma che possiamo


>usare, non mi funziona nemmeno un file batch se non installato
>appositamente.
>Riccardo Baldinotti

ma Spy ( o similari ) lo usi solo nello sviluppo
dopo non ri serve


@Alex

unread,
Jun 28, 2011, 9:26:08 AM6/28/11
to
...

> Ho cercato hWnd nell'Help di Access ma non ho trovato riferimenti al di
> fuori di oggetti di Access, per cui non so come ricavare l'hWnd del
> programma, che � Lotus Notes.
> Sono andato a cercare su Google e mi sono registrato su vari siti ma senza
> esito. Davvero, ci ho provato.
> Ho trovato qualche pagina che parla di hWnd di un'applicazione aperta con
> Shell, ma nel mio caso l'applicazione � gi� aperta.
> Ho provato a dare dei comandi GetObject, ma mi esce l'errore: "Il
> componente ActiveX non � in grado di creare l'oggetto".
> A questo punto, a costo di essere accusato di "pappaprontite", chiedo lumi
> ulteriori.
> Riccardo Baldinotti

Per ricavare l'hWnd di una WindowForm si usa l'API FINDWINDOW, in quel
modo passando il CLASSNAME e la Caption se puoi...!

Usando SPY++ il ClassName di LotusNotes � "NOTES".
Quindi usando l'API suggerita, dando per scontato ci sia solo 1 istanza di
LN puoi ottenere l'hWnd cos�:


Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim ClassName As String
Dim strCaption As String
Dim hWnd As Long

ClassName = "NOTES"
strCaption = ""

hWnd = FindWindow(ClassName, strCaption )

MessageBox "hWnd di LOTUS =" &(CStr(hWnd))

Ovvio che se hai pi� istanze devi assolutamente passare anche il parametro
CAPTION che identifica la singola Form.

A quel punto passi l'hWnd a ShowWindow come meglio credi...

@Alex

Riccardo Baldinotti

unread,
Jun 28, 2011, 10:27:49 AM6/28/11
to
@Alex ha scritto:

> ...


> Per ricavare l'hWnd di una WindowForm si usa l'API FINDWINDOW, in quel
> modo passando il CLASSNAME e la Caption se puoi...!

> Usando SPY++ il ClassName di LotusNotes � "NOTES".
> Quindi usando l'API suggerita, dando per scontato ci sia solo 1 istanza di
> LN puoi ottenere l'hWnd cos�:


> Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
> (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

> Dim ClassName As String
> Dim strCaption As String
> Dim hWnd As Long

> ClassName = "NOTES"
> strCaption = ""

> hWnd = FindWindow(ClassName, strCaption )

> MessageBox "hWnd di LOTUS =" &(CStr(hWnd))

> Ovvio che se hai pi� istanze devi assolutamente passare anche il parametro
> CAPTION che identifica la singola Form.

> A quel punto passi l'hWnd a ShowWindow come meglio credi...

> @Alex

Ho preparato la seguente funzione:
Function fHandleDiNotes()


Dim ClassName As String
Dim strCaption As String

ClassName = "NOTES"
strCaption = ""

fHandleDiNotes = FindWindow(ClassName, strCaption)
End Function

e poi la chiamo cos�

Call ShowWindow(fHandleDiNotes(), SW_RESTORE)

avendo dichiarato la ShowWindow e la costante SW_RESTORE.
Non succede nulla, e ottengo lo stesso errore che avevo da AppActivate
quando Notes era iconizzato.
Usando la Sub come l'hai scritta, ottengo che hWnd=0, anche se al posto di
"NOTES" scrivo, per esempio, "Excel".

Ho trovato la pagina
http://support.microsoft.com/kb/147659/en-us
in cui si descrive una funzione FindWindowLike e prover� a capirci
qualcosa.
Intanto grazie.
Riccardo Baldinotti

@Alex

unread,
Jun 28, 2011, 11:17:52 AM6/28/11
to
....

> Ho preparato la seguente funzione:
> Function fHandleDiNotes()
> Dim ClassName As String
> Dim strCaption As String

> ClassName = "NOTES"
> strCaption = ""

> fHandleDiNotes = FindWindow(ClassName, strCaption)
> End Function

> e poi la chiamo cos�

> Call ShowWindow(fHandleDiNotes(), SW_RESTORE)

> avendo dichiarato la ShowWindow e la costante SW_RESTORE.
> Non succede nulla, e ottengo lo stesso errore che avevo da AppActivate
> quando Notes era iconizzato.

Scusa ma se usi il RIGTHCLICK sull'icona nella Task e selezioni Ripristina
che succede...?
Ti chiedo in quanto alcune applicazioni vogliono "Ingrandisci" che poi �
SW_MAXIMIZE=3...

> Usando la Sub come l'hai scritta, ottengo che hWnd=0, anche se al posto di
> "NOTES" scrivo, per esempio, "Excel".

LotusNotes ed Excel sono 2 cose diverse ed il fatto che tu abbia provato a
passare "EXCEL" � solo il sintomo che non hai capito di cosa stiamo
parlando...!
Excel come CLASSNAME="XLMAIN"....!

Ti allego un'elenco di CLASSNAME classici:
Class Name Application
SciCalc CALC.EXE
CalWndMain CALENDAR.EXE
Cardfile CARDFILE.EXE
Clipboard CLIPBOARD.EXE
Clock CLOCK.EXE
CtlPanelClass CONTROL.EXE
XLMain EXCEL.EXE
Session MS-DOS.EXE
Notepad NOTEPAD.EXE
pbParent PBRUSH.EXE
Pif PIFEDIT.EXE
PrintManager PRINTMAN.EXE
Progman PROGMAN.EXE (Windows Program manager)
Recorder RECORDER.EXE
Reversi REVERSI.EXE
#32770 SETUP.EXE
Solitaire SOL.EXE
Terminal TERMINAL.EXE
WFS_Frame WINFILE.EXE
MW_WINHELP WINHELP.EXE
#32770 WINVER.EXE
OpusApp WINWORD.EXE
MSWRITE_MENU WRITE.EXE

Ti invito a documentarti bene per� prima di nebulizzare acqua.

> Ho trovato la pagina
> http://support.microsoft.com/kb/147659/en-us
> in cui si descrive una funzione FindWindowLike e prover� a capirci
> qualcosa.
> Intanto grazie.
> Riccardo Baldinotti

Nel tuo caso la funzione in questione [FindWindowLike] non ti serve in
quanto si usa per ricerche anche nelle CHILD WINDOWS, infatti non � altro
che una ricorsiva che si basa sui fondamentali, ma i parametri da passare
sono quelli che devi usare per la FINDWINDOW che ti ho suggerito io, che
nel caso di MAIN_FORM � la pi� indicata.

Hai le idee troppo confuse.

@Alex

Riccardo Baldinotti

unread,
Jun 28, 2011, 12:14:46 PM6/28/11
to
@Alex ha scritto:

> ....


>> Scusa ma se usi il RIGTHCLICK sull'icona nella Task e selezioni Ripristina
> che succede...?
> Ti chiedo in quanto alcune applicazioni vogliono "Ingrandisci" che poi �
> SW_MAXIMIZE=3...

Mi si apre il menu contestuale con "Ripristina" in grassetto,
"Ingrandisci" e "Chiudi".


> > Usando la Sub come l'hai scritta, ottengo che hWnd=0, anche se al posto di
> > "NOTES" scrivo, per esempio, "Excel".

> LotusNotes ed Excel sono 2 cose diverse ed il fatto che tu abbia provato a
> passare "EXCEL" � solo il sintomo che non hai capito di cosa stiamo
> parlando...!
> Excel come CLASSNAME="XLMAIN"....!

Convengo di essere piuttosto ignorante. Non avevo ancora trovato il
CLASSNAME di Excel e l'avevo buttata l�.
Dunque, se in quella sub scrivo XLMAIN, suppongo che dovrei trovare
l'handle della mia finestra di Excel, che � aperto. Per� ottengo sempre 0.
Ho anche provato "Notepad", pure quello aperto.


> Ti allego un'elenco di CLASSNAME classici:

Grazie. Mi ci sarebbe voluto un bel po' di tempo per trovarli.


> Ti invito a documentarti bene per� prima di nebulizzare acqua.

? Questa non la conoscevo. Per ora sto nebulizzando un po' di sudore, ma
immagino che la metafora sia un'altra... :-)


> Nel tuo caso la funzione in questione [FindWindowLike] non ti serve in
> quanto si usa per ricerche anche nelle CHILD WINDOWS, infatti non � altro
> che una ricorsiva che si basa sui fondamentali, ma i parametri da passare
> sono quelli che devi usare per la FINDWINDOW che ti ho suggerito io, che
> nel caso di MAIN_FORM � la pi� indicata.

L'avevo immaginato. Ahim�, mi ci � voluta la lettura e semicomprensione
del codice per averne conferma.


> Hai le idee troppo confuse.

Questa � una delle cose che ho pi� chiare.

Grazie ancora
Riccardo Baldinotti

Riccardo Baldinotti

unread,
Jun 29, 2011, 3:34:38 AM6/29/11
to
Riccardo Baldinotti ha scritto:

> @Alex ha scritto:

> > ....
> >> Scusa ma se usi il RIGTHCLICK sull'icona nella Task e selezioni Ripristina
> > che succede...?
> > Ti chiedo in quanto alcune applicazioni vogliono "Ingrandisci" che poi �
> > SW_MAXIMIZE=3...

Scusa, ho risposto a capocchia.
Se scelgo "Ripristina, la finestra si apre nello stato in cu isi trovava
prima di essere iconizzata: a tutto schermo oppure dimensionata.

Riccardo Baldinotti

unread,
Jun 29, 2011, 3:36:10 AM6/29/11
to
Lucia Spere ha scritto:

> >
> >> forse ce la fai con programmi tipo Spy++
> >
> >> ciao
> >
> >
> >Ti ringrazio. Disgraziatamente Access è l'unico programma che possiamo
> >usare, non mi funziona nemmeno un file batch se non installato
> >appositamente.
> >Riccardo Baldinotti

> ma Spy ( o similari ) lo usi solo nello sviluppo
> dopo non ri serve

Ahim�, lo sviluppo avviene su un pc parimenti blindato.

Riccardo Baldinotti

unread,
Jun 29, 2011, 4:41:34 AM6/29/11
to
Risolto!

Sostituendo a
strCaption = ""
in


hWnd = FindWindow(ClassName, strCaption )

la costante vbNullString, cos�
hWnd = FindWindow(ClassName, vbNullString)
ottengo il valore desiderato e la ShowWindow funziona come richiesto.

In mancanza di una preparazione decente, la disponibilit� altrui e le
risorse in rete suppliscono egregiamente.

Grazie.
Riccardo Baldinotti

@Alex

unread,
Jun 29, 2011, 7:28:54 AM6/29/11
to
Riccardo Baldinotti ha scritto:

> Risolto!

> Sostituendo a
> strCaption = ""
> in
> hWnd = FindWindow(ClassName, strCaption )
> la costante vbNullString, cos�
> hWnd = FindWindow(ClassName, vbNullString)
> ottengo il valore desiderato e la ShowWindow funziona come richiesto.

> In mancanza di una preparazione decente, la disponibilit� altrui e le
> risorse in rete suppliscono egregiamente.

> Grazie.
> Riccardo Baldinotti

La sostituzione che hai fatto � anomala... nel senso che vbNullstring=""
quindi non si spiega... tuttavia non svegliamo il cane che dorme.

In tutti i modi se non hai SPY++, che non viene distribuito senza VB6(DEV)
puoi provare questo TOOL che non si avvicina minimamente a SPY, ma �
utilissimo... in sua assenza:
http://www.codeproject.com/KB/dialog/FindWindow.aspx

Ciao
@Alex

Riccardo Baldinotti

unread,
Jun 29, 2011, 10:54:06 AM6/29/11
to
@Alex ha scritto:

> Riccardo Baldinotti ha scritto:

> > Risolto!

> > Sostituendo a
> > strCaption = ""
> > in
> > hWnd = FindWindow(ClassName, strCaption )
> > la costante vbNullString, cos�
> > hWnd = FindWindow(ClassName, vbNullString)
> > ottengo il valore desiderato e la ShowWindow funziona come richiesto.

> > In mancanza di una preparazione decente, la disponibilit� altrui e le
> > risorse in rete suppliscono egregiamente.

> > Grazie.
> > Riccardo Baldinotti

> La sostituzione che hai fatto � anomala... nel senso che vbNullstring=""
> quindi non si spiega... tuttavia non svegliamo il cane che dorme.

Mi sono deciso alla sostituzione quando nell'help di Access ho letto che
vbNullString "Non equivale a una stringa di lunghezza zero ("");"
Francamente, queste sottigliezze le prendo per buone senza capirle a fondo.


> In tutti i modi se non hai SPY++, che non viene distribuito
> senza VB6(DEV)
> puoi provare questo TOOL che non si avvicina minimamente
> a SPY, ma �
> utilissimo... in sua assenza:
> http://www.codeproject.com/KB/dialog/FindWindow.aspx

Siccome tutto sul mio pc mi � impedito, tranne usare Access, per trovare
il ClassName di una finestra aperta mi sono riferito a
http://www.vb6.us/tutorials/activate-window-api

Grazie ancora una volta
Riccardo Baldinotti

Lucia Spere

unread,
Jun 30, 2011, 2:10:55 AM6/30/11
to
On Tue, 28 Jun 2011 16:27:49 +0200, riccardo....@qualcosa.it
(Riccardo Baldinotti) wrote:

>@Alex ha scritto:
>
>> ...
>> Per ricavare l'hWnd di una WindowForm si usa l'API FINDWINDOW, in quel
>> modo passando il CLASSNAME e la Caption se puoi...!
>

>> Usando SPY++ il ClassName di LotusNotes è "NOTES".


>> Quindi usando l'API suggerita, dando per scontato ci sia solo 1 istanza di

>> LN puoi ottenere l'hWnd così:


>
>
>> Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
>> (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
>
>> Dim ClassName As String
>> Dim strCaption As String
>> Dim hWnd As Long
>
>> ClassName = "NOTES"
>> strCaption = ""
>
>> hWnd = FindWindow(ClassName, strCaption )
>
>> MessageBox "hWnd di LOTUS =" &(CStr(hWnd))
>

>> Ovvio che se hai più istanze devi assolutamente passare anche il parametro


>> CAPTION che identifica la singola Form.
>
>> A quel punto passi l'hWnd a ShowWindow come meglio credi...
>
>> @Alex
>
>Ho preparato la seguente funzione:
>Function fHandleDiNotes()
> Dim ClassName As String
> Dim strCaption As String
>
> ClassName = "NOTES"
> strCaption = ""
>
> fHandleDiNotes = FindWindow(ClassName, strCaption)
>End Function

modifica il codice così



Dim ClassName As String
Dim strCaption As String
Dim hWnd As Long

'SciCalc è la calcolatrice di windows
'deve essere aperta o minimizzata

ClassName = "SciCalc"

strCaption = ""

hWnd = FindWindow(ClassName, strCaption)
hWnd = FindWindow(ClassName, vbNullString)

MsgBox "hWnd di Calc=" & (CStr(hWnd))


@Alex

unread,
Jun 30, 2011, 3:50:31 AM6/30/11
to
....

> Mi sono deciso alla sostituzione quando nell'help di Access ho letto che
> vbNullString "Non equivale a una stringa di lunghezza zero ("");"
> Francamente, queste sottigliezze le prendo per buone senza capirle a fondo.

Effettivamente nella guida ci sono delle contraddizioni... ma in realt�
vanno spiegate meglio... e facendo il punto possiamo spiegare anche il
perch� di quanto ci ha stupito...!!

La guida riporta correttamente quello che hai detto, nell'HELP c'� scritto
questo:

Const vbNullString = ""
Membro di VBA.Constants

Facendo poi queste prove dalla finestra immediata usando il VBA:
? LEN(vbNullString)
0

? LenB(vbNullstring)
0

? vbnullstring=""
Vero

? strcomp("",vbnullstring,vbBinaryCompare)
0 (dalla guida 0=Stringhe uguali)

? strcomp("",vbnullstring,vbTextCompare)
0 (dalla guida 0=Stringhe uguali)

Possiamo dire che le Funzioni VBA che valutano le STRINGHE
avvallano la considerazione che:

vbNullstring="".

In realt� in effetti non � vero, una differenza esiste tra le 2 cose, ma
riguarda un livello diverso di programmazione che riguarda i POINTER in
MEMORIA.
Vale a dire che vbNullString non occupa memoria, quindi l'indirizzo di
memoria generato dal riferimento di vbNullString � nullo, non esiste.
Mentre l'indirizzo di memoria di "" esistre quindi si alloca memoria.

Come facciamo a capire questo...?
Cos� sempre dalla Finestra immediata:

? StrPtr("")
300043892

? StrPtr(vbNullstring)
0

Detto questo, la chiamata API richiede proprio un riferimento a Pointer
NULLO... e questo spiega il motivo della differenza reale generata.

Chiarito l'arcano.


> Grazie ancora una volta
> Riccardo Baldinotti

Ciao
@Alex

Riccardo Baldinotti

unread,
Jul 1, 2011, 8:26:01 AM7/1/11
to
On 30 Giu, 09:50, ik2...@libero.it (@Alex) wrote:
> ....
>
> > Mi sono deciso alla sostituzione quando nell'help di Access ho letto che
> > vbNullString "Non equivale a una stringa di lunghezza zero ("");"
> > Francamente, queste sottigliezze le prendo per buone senza capirle a fondo.
>
> Effettivamente nella guida ci sono delle contraddizioni... ma in realtà

> vanno spiegate meglio... e facendo il punto possiamo spiegare anche il
> perchè di quanto ci ha stupito...!!
>
> La guida riporta correttamente quello che hai detto, nell'HELP c'è scritto

> questo:
>
> Const vbNullString = ""
>     Membro di VBA.Constants
>
> Facendo poi queste prove dalla finestra immediata usando il VBA:
>    ? LEN(vbNullString)
>      0
>
>    ? LenB(vbNullstring)
>      0
>
>    ? vbnullstring=""
>      Vero
>
>    ? strcomp("",vbnullstring,vbBinaryCompare)
>      0  (dalla guida 0=Stringhe uguali)
>
>    ? strcomp("",vbnullstring,vbTextCompare)
>      0  (dalla guida 0=Stringhe uguali)  
>
> Possiamo dire che le Funzioni VBA che valutano le STRINGHE
> avvallano la considerazione che:
>
>   vbNullstring="".
>
> In realtà in effetti non è vero, una differenza esiste tra le 2 cose, ma

> riguarda un livello diverso di programmazione che riguarda i POINTER in
> MEMORIA.
> Vale a dire che vbNullString non occupa memoria, quindi l'indirizzo di
> memoria generato dal riferimento di vbNullString è nullo, non esiste.

> Mentre l'indirizzo di memoria di "" esistre quindi si alloca memoria.
>
> Come facciamo a capire questo...?
> Così sempre dalla Finestra immediata:

>
>    ?  StrPtr("")
>       300043892
>
>    ?  StrPtr(vbNullstring)
>       0
>
> Detto questo, la chiamata API richiede proprio un riferimento a Pointer
> NULLO... e questo spiega il motivo della differenza reale generata.
>
> Chiarito l'arcano.
>
> > Grazie ancora una volta
> > Riccardo Baldinotti
>
> Ciao
> @Alex

mmm... quando si parla di "data mining", si intende che bisogna
scavare dentro al computer fino a rintracciare, non dico l'ultimo
byte, ma anche l'ultimo elettrone girovago? :-)
Grazie per la spiegazione, che mi aiuta a ricordare che un computer è
**un tantinello** più complesso di un tostapane (e richiederebbe
maggiori competenze).
Ahimé, sono anch'io vittima di quelli che, alla domanda: "cosa si può
fare con un computer?", rispondono "qualunque cosa!", dimenticandosi
di aggiungere: "...tu sia in grado di fare...".
Grazie a te e a Lucia. Oggi uno dei miei arzigogoli mi ha fruttato i
complimenti; li giro pari pari alle mie fonti d'istruzione.
Riccardo Baldinotti

0 new messages