Newsgroup: it.comp.programmare.win32
Titolo: How to obtain a file number

I'm writing a program in VC++ that uses a dll written in Visual Basic,
and I have to call a function passing the file number of a specific
file.
How can I obtain the file number in C++?
Thanks.

How can I obtain the file number in C++?
AFAIK, you can't. 
A weak workaround could be to generate a positive random number
between 0x3FFF and 0x7FFF: it's highly probable that the dll VB
hasn't open so much files!
-- 
hth, hal
p.s. ma sei italiano?

 hasn't open so much files!
In realtà credo che il parametro dovrebbe indicare alla dll quale file
utilizzare, quindi dovrebbe essere il file number di un file già
aperto in C++.
Purtroppo quella dll non ha documentazione, per cui è solo una mia
supposizione (ho contattato anche l'autore comunque).
L'unica cosa che ho a disposizione è il prototipo della funzione:
Private Declare Function UOGLitePatchFile Lib "uoglite2.dll" (FilePtr
As long, NewFilePtr:DWORD, Encryption As long, MultiUO As Long, NoID
As Long) As Long
Il comportamento di questa funzione dovrebbe essere fondamentalmente
creare un file (specificabile) modificato, a partire da un altro file
(specificabile), secondo una serie di regole (queste specificate dai
parametri Encryption, MultiUO e NoID).
Magari voi siete in grado di capirci più di me :-)

As Long) As Long
Ma non avevi detto:
"I'm writing a program in VC++ that uses a dll written in Visual
Basic," ?
In realta' mi sembra che stai scrivendo in visual basic un programma
che usa una dll scritta C. O sbaglio?
Se ho capito, il tutto deriva da qui: 
http://www.uogateway.com/
,
purtroppo e' un argomento che non conosco.
-- 
ciao, hal

 purtroppo e' un argomento che non conosco.
Esattamente! :-)

funzionare...
Innanzi tutto con visual basic NON si possono scrivere dll standard,
come con C, C++, Pascal, ecc., ma solo dll activex. Quindi, se si
tratta di una dll activex dovresti usare COM per chiamarla, a meno di
non fare altri rigiri che pero' non conosco.
-- 
ciao, hal

 aperto in C++.
Le API restituiscono un handle (che e` un puntatore), stesso discorso
per le funzioni ANSI (fopen e amiche). Le uniche che restituiscono un
numero sono le funzioni POSIX (open e amiche), potresti provare a usare
quelle, ma ho forti dubbi che possa funzionare.
--
Lorenzo

 non fare altri rigiri che pero' non conosco.
Uhm, purtroppo conosco molto limitatamente il Visual Basic, ma non mi
pare ci siano problemi nel fare dll standard in VB. Mi pare che in
questo campo l'unica differenza fra C e VB sia che il VB supporta
esclusivamente la convenzione di chiamata stdcall.
Ad ogni modo ho risolto il problema: contattando l'autore mi ha
spiegato che semplicemente il parametro long da passare era un
puntatore ad una stringa castato.
Quindi il problema era dovuto ad un'incomprensione mia per la mancanza
di documentazione.
Grazie comunque :-)

esclusivamente la convenzione di chiamata stdcall.
Nel senso di VB che chiama dll esterne, ma le dll prodotte con vb sono
solo dll activeX.
-- 
ciao, hal

 Fidati: NON si puo'.
oh, con un paio di trucchetti di linker, tutto si può
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.1. C, C++ and ASM developers
                               and beta testers are welcome!

 oh, con un paio di trucchetti di linker, tutto si può
Ni. Passando gli adeguati parametri al linker è possibile far esportare
le funzioni volute ad una dll scritta in VB, e quindi fare in modo che
possa essere utilizzata come se fosse una dll "normale", ma comunque
*non* lo diventa (una dll standard), perché rimane comunque una dll AX. 
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.