Newsgroup: it.comp.lang.visual-basic
Titolo: [??] Design o Run Time

Ok, a quanto mi pare di capire per sapere se il mio prog. sta girando da
dentro l'IDE o č compilato mi serve sapere se il processo del mio programma
č lo stesso di VB.
Quindi devo:
 - enumerare le instanze di VB (come cavolo si fa?)
 - per ognuna controllare se il processo č lo stesso della mia app (come
cavolo si fa?)
Adesso la mia domanda č... come cavolo si fa? :)
Grazie a tutti.
ciao


D' accordo che non e' molto fine, ma quali potrebbero essere le 
controindicazioni per una banalita' come questa:
Public Function IsIde() As Boolean
    On Local Error Resume Next
    Dim foo As Long
    foo = 1 \ 0
    If Err Then
       Err.Clear
       IsIde = True
    End If
End Function
Ciao
Aldo


Public Function IsIde() As Boolean
    On Local Error Resume Next
    debug.print 1 \ 0


End Function
Sarebbe troppo facile :)
Il mio problema non è sapere se sto programmando o no.
Forse ho posto male il problema.
Spiego: ho un mio ocx.
Dentro questo ocx (compilato) devo sapere se chi lo sta usando è un
programma nell'ide o un exe a se stante.
E' solo per mettere quelle limitazioni tipo shareware, ma solo se l'exe è
compilato.
Così uno può valutarsi l'ocx completamente dall'ide.
Chiaro?
P.S.: le proprietà di default sono una porcheria VB. Se le conosci le eviti
:)
(Err.Number <> 0) e non (Err) che tra l'altro così chissà se il compilatore
capisce che stai valutando una proprietà e non l'esistenza dell'oggetto...
sono questi dubbi del tipo "prova a vedere se va" che non sopporto. :)
Ciao

sono questi dubbi del tipo "prova a vedere se va" che non sopporto. :)
Ahi ahi, mi hai colto in castagna !
Chiedo l' attenuante perche' ho scritto direttamente in newspro :)
Ciao
Aldo

puo' rifiutare.
Eheh, pensavo anch'io fosse cosě, perň sarebbe stato troppo logico da parte
M$ :)
UserMode ti dice se sei in progettazione o in esecuzione.
Non se sei nell'ide o in un exe a parte... :(
Quindi le soluzioni sono ancora tutte da trovare...
Ciao.

 Chiedo l' attenuante perche' ho scritto direttamente in newspro :)
Bhe io le uso spesso di proposito.
Fin'ora non mi hanno MAI dato problemi, e mi hanno sempre evitato di
scrivere + del necessario.
Basti pensare ai RecordSet, c'e' una bella differenza tra scrivere:
    rs![Ciao Mondo]
e scrivere
    rs.fields("Ciao Mondo").Value
anche perchè la prima rende il listato + pulito e + leggibile (ovviemente
per saperlo leggere devi conoscere VB)
--
/\/\/\/\/\/\/\/\/\/\/\/\/
|  Partecipa alla stesura di progetti VB sviluppati in team,
|  informati sul Sito Comune sezione Leonardo. Io
|  partecipo al progetto Data Raptor, alleati con noi.
\/\/\/\/\/\/\/\/\/\/\/\/\
Ciao
Ettore Maronese, il Mes
http://www.maronese.com/mes
Sito Comune di questo NG
http://www.murialdo.it/it_lang_vb

 ha scritto nel messaggio
news:%OWl6.9132$q97.1...@twister1.tin.it...

Un IDE č un programma come un'altro che usa il tuo OCX.
Se ci posse un modo per distinguere tre gli IDE e non IDE, chi proibirrebbe
ad un programma qualsiasi di fingersi IDE per usare il tuo OCX.
E non puoi basarti sul nome del programma/processo/ecc.. perchč anche
ACCESS/EXCEL/e molti altri sono IDE e tu non li riconosceresti.
La distinzione tra DesignTime e RunTime invece ha senso ed č necessaria per
far comportare il controllo di conseguenza.
Non vedo soluzioni "pulite", o quantomeno, non ne conosco.


far comportare il controllo di conseguenza.
mmmh, effettivamente il ragionamento non fa una griglia...
Ciao

per saperlo leggere devi conoscere VB)
Ti ringrazio per le parole di comprensione :)
ma penso che Zanna abbia fatto bene a rimproverarmi
anche se e' vero quello che dici e anche se e' vero
che anch' io ometto per esempio di nominare la proprieta' Value
dei campi dei recordset. Invece, p. es. javascript la vuole
e tutte le volte che mi dimentico mi parte il just-in-time
debugger :(
Ho saputo di programmi che usavano un controllo di terze parti 
(mi pare una vecchia versione della True 
DBGrid di apex) che, per una carognata dei programmatori apex
che avevano modificato alcune proprieta' predefinite, si sono
riempiti di bug clamorosi in seguito all' aggiornamento del controllo.
In ogni caso, ci si mette nelle mani del compilatore o di qualche
simpatico service pack.
L' uso di proprieta' predefinite rende in effetti meno leggibile
e meno comprensibile il codice. Se sembra in effetti comodo con oggetti
quali textbox, sicuramente conosciuti, con oggetti non comuni cio'
diventa in effetti un problema.
Vb7 _non_ supportera' piu' le proprieta' predefinite,
quindi tanto vale abituarsi adesso.
Ciao
Aldo


Non so se nel frattempo l' hai gia' provato, ma pensavo che se sei
nell' ide di vb allora il processo che ti esegue l' ocx e' vb.
Quindi si potrebbe ipotizzare una cosa del genere:
Public Function IsVBIde() As Boolean
    Dim hModule As Long
    Dim strModuleName As String
    Dim nPos As Long
    ' cerca il nome dell' eseguibile del proprio processo
    hModule = GetModuleHandle(0&)
    strModuleName = String$(256, 0)
    Call GetModuleFilename (hModule, strModuleName, 256)
    ' strModuleName = Left$(strModuleName, Instr(strModuleName, Chr$(0)) - 1)
    ' verifica se il processo e' di vb
    nPos = Instr(strModuleName, "\vb32.exe", vbTextCompare)
    If nPos Then IsVBIde = True : Exit Function    
    nPos = Instr(strModuleName, "\vb5.exe", vbTextCompare)
    If nPos Then IsVBIde = True : Exit Function 
    nPos = Instr(strModuleName, "\vb6.exe", vbTextCompare)
    If nPos Then IsVBIde = True : Exit Function
End Function
Allo stesso modo si potrebbe verificare se l' ocx viene eseguito da
access, excel, vc, interdev o altro.
Ciao
Aldo

access, excel, vc, interdev o altro.
Ooooh, e ci voleva tanto? :)
Proprio quello che cercavo, solo che non sapevo da che parte cominciare.
P.s.: prima però lo devo provare... :)
Grazie
Ciao.


Gia', mi sono lasciato andare un po' troppo con gli esempi :(
Ciao
Aldo