Newsgroup: it.comp.appl.access
Titolo: [API di MsAccess]

Qualcuno che è addentro al Sistema sa se le NON DOCUMENTATE API di Access con la versione ACCDB hanno subito qualche complicazione...?
 
In particolare mi interessa questa, che con AXP(MDB) funzionava bene:
 
Private Declare Function GetTbDIB _
      Lib "msaccess.exe" Alias "#60" _
      (ByVal lngBmp As Long, _
       ByVal fLarge As Long, _
       bytBuffer() As Byte) As Long
 
 
Se apro con A365 il file VersioneXP.MDB funzionano, ma se lo converto in ACCDB, non recupera nulla, di fatto restituisce un Valore diverso da ZERO quindi non valido.
 
Ho abozzato a questa conversione, andando per intuito sapendo a cosa servono i Parametri passati:
 
 
# IF VBA7 THEN
 
	Private Declare PtrSafe Function GetTbDIB _
			Lib "msaccess.exe" Alias "#60" _
			(ByVal lngBmp As Long, _
			ByVal fLarge As Long, _
			bytBuffer() As Byte) As Long
 
	# IF Win64 Then
 
		Private Declare PtrSafe Function GetTbDIB _
			Lib "msaccess.exe" Alias "#60" _
			(ByVal lngBmp As LongPtr, _
			ByVal fLarge As LongPtr, _
			bytBuffer() As Byte) As Long
 
	# END IF
 
#ELSE
 
	Private Declare Function GetTbDIB _
			Lib "msaccess.exe" Alias "#60" _
			(ByVal lngBmp As Long, _
			ByVal fLarge As Long, _
			bytBuffer() As Byte) As Long
 
#END IF
 
Purtroppo però NON FUNZIONA con File ACCDB A365 e WIN10 a 32Bit.
 
Non trovo nulla in Rete che mi possa aiutare nella corretta conversione, ed era comoda per ottenete il ByteArray() dell'Immagine contenute nelle RIsorse di Access usate poi come Assegnazione al FACEID delle CommandBar.
 
Karl sicuramente devi avere qualche INFO di dettaglio...
 
Grazie
@Alex

 @Alex
 
Avevo un /mignon/ di spumante da una parte. Ho stappato e brindato ;-)
 
Prima di guardare la firma ho guardato l'oggetto.
Mi son detto "E' mo questo che vole? Vada da @Alex!" ;-)
 
-- 
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)

 @Alex
 
Alex@ che chiede aiuto.... questa me la sono stampata e incorniciata... 
 
:)))))
 
Alfio

 Karl sicuramente devi avere qualche INFO di dettaglio...
 
Mica tanto. In pratica non uso mai le API non documentate. Sarebbe 
troppo pericoloso ad ogni cambio di versione dai cliente che pagano. ;-)
 
Ho domandato un po' in giro per idee. L'unica idea finora era che da 
Access 2010 esiste una nouva proprietà che regola come i bitmap sono 
salvati:
 
Opzioni - Database corrente - Formato di memorizzazione proprietà immagini
 
Qui si trova una variante nuova e una compatibile con <= Access 2003. 
Puo darsi che quell'API solo funziona con la variante compatibile/vecchia?
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 

 salvati: ...
 
Non solo da 2010. Ora ho controllato che è già presente in 2007.


Avevo immaginato che la compatibilità con le nuove versioni fosse compromessa...
Concordo sull'evitare funzioni non documentare... ma pensando che molte delle API non documentare sono wrappate da WizHook, sempre non documentata, speravo... ;-)
 
Mi sono dovuto orientare con GDI+.
 
Ho fatto un Browser per le immagini native disponibili sia ImageMSO che le Bmp native delle Commanbar per poterle usare velocemente nei CommandButton...
 
Funziona tutto ovviamente solo qualche riga di codice in più...
 
Grazie Karl
@Alex


Scusate l'innioranza, ma quali sono le api 'non documentate' di Access?

 Scusate l'innioranza, ma quali sono le api 'non documentate' di Access?
 
Sono tante funzioni API nel msaccess.exe per l'uso interno della MS 
(assistenti, menu ecc.).
  Se cerchi un po' nel web puoi trovare liste ed esempi.
 
Qualche volta queste API o anche l'oggetto Wizhook (altro strumento 
interno) sarebbero comodo da usare per cose che non sono possibile o 
difficile con metodi ufficiali.
 
Però non sono documentate dalla MS, cioè l'informazione sull'uso, 
parametri ecc. è rara e non completa, spesso dai tempi di Access 97 
quando c'era il codice aperto dei assistenti, il Access Developers 
Handbook 97, il tool Depency Walker ecc. come risorse.
 
Soprattutto la MS puo cambiare qualcosa in ogni versione di Access senza 
segnalazione. Per questo il programmatore bravo e buono non le usa! ;-)


Karl affermazione giusta ma se vogliamo essere completi tutte le API non sarebbero da usare anche se documentate... ci basta pensare al passaggio 16bit/32bit/64bit ecc... che ovviamente ha richiesto parecchie modifiche ed adattamenti.
 
Purtroppo il VBA di Access ha qualche limite, ed il programmatore buono e bravo sa come risolverlo SEMPRE.
 
;-)
 
Grazie Karl
@Alex

 
 
Beh, la MS ha pubblicato siti come modificare ed adattare il codice VBA. 
Ok, sempre in principio e non esauriente. ;-)


 
 
Va beh ma a noi che ce frega?
Mica siamo buoni e bravi
Carini si, ma buoni e bravi no
Fuori i link o "..scateno l'inferno.."
(cit. da qualc film che nun me ricord)

 (cit. da qualc film che nun me ricord)
 
Io non supporto mai i cattivi! (e non temo l'inferno)
 
-- 
:-)


Si Karl MS ha sempre dato tutte le info, ci mancherebbe aggiungo, ma parliamo sempre di modifiche sostanziali...
 
Penso che una certa dose di manutenzione obbligatoria del codice sia sempre da mettere in conto.
 
@Alex

 Penso che una certa dose di manutenzione obbligatoria del codice sia sempre da mettere in conto.
 
Nelle mie presentazioni sulla manutenzione di software c'è sempre la 
sezione "linea guida per il fondamentalista di Access" con fogli su come 
sviluppare difensivamente: non usare elementi esterni, precedenza per 
metodi inclusi, Win API solo se non da evitare ecc.
 
Veramente anche in progetti con mille oggetti non uso mai più di una 
manciata delle funzioni API di Windows.
 
Beh, qui discutiamo le API di Access stesso ;-) e ora vedo che in questa 
parte della predica ho sempre dimenticato il punto "non usare metodi non 
documentati". Incredibile...ah, sarà lì per la prossima volta.


 Access FAQ: 
http://www.donkarl.com/it
 
 
Buona DOmenica.
 
@Alex