Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Windows - Ricavare il percorso del file eseguibile
Forum - Windows - Ricavare il percorso del file eseguibile - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:34
Mercoledì, 12/11/2014
Funziona tutto alla grande su ognuno dei computer sui quali ho testato il programma. Sono un drago! (e dai, lasciatemelo credere...)

Sul modo di fare di Microsoft... sì, sono andato a controllare: è nella nuova documentazione. Peccato che io usi una documentazione "antica" (quella nuova non mi risulta che sia agevolmente disponibile in un unico e comodo documento da utilizzare offline) nella quale non si faceva cenno alle differenze... perché ancora non esistevano!

E' anche vero che è un problema aggirabile (infatti l'ho aggirato, ma solo dopo essermici spaccato la testa per giorni perché mai mi sarei immaginato un passo simile da parte di Microsoft), ma vien da chiedersi quanti programmi "antichi" il trucchetto abbia messo potenzialmente fuori uso. A mio umile avviso, le API più datate non dovrebbero essere modificate, tutt'al più affiancate da altre, diverse, con le nuove funzionalità. Essendo portato a vedere cattive intenzioni quando ci sono in ballo questioni commerciali, penso di non essere lontano dal vero ipotizzando un certo livello di dolo nel modo di procedere "alla Microsoft", anche perché evitare passi di questo genere sarebbe davvero facile e a costo zero per l'azienda.

Ultima modifica effettuata da il 12/11/2014 alle 15:35
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:34
Mercoledì, 12/11/2014
Tutta questa "dietrologia" su Microsoft non la condivido mai. Non è interesse di Microsoft modificare API ... figuriamoci.

Non so di quale documentazione parli ma quella che c'è in rete è chiara.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 23:31
Mercoledì, 12/11/2014
Rendere non funzionanti i programmi "del passato" obbliga ad aggiornare. Siccome gli aggiornamenti sono a pagamento...

La documentazione alla quale faccio riferimento risale a Win32 nella versione di Windows 98 (la più recente che son riuscito a trovare in unico file .hlp facilmente scaricabile). In quella documentazione si legge:

==================================

GetModuleFileName

The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module.

Windows 95: The GetModuleFilename function will return long filenames when an application's version number is greater than or equal to 4.00 and the long filename is available. Otherwise, it returns only 8.3 format filenames.

DWORD GetModuleFileName(
    HMODULE hModule,    // handle to module to find filename for
    LPTSTR lpFilename,    // pointer to buffer for module path
    DWORD nSize             // size of buffer, in characters
);

Parameters

hModule
Identifies the module whose executable filename is being requested. If this parameter is NULL, GetModuleFileName returns the path for the file used to create the calling process.

lpFilename
Points to a buffer that is filled in with the path and filename of the given module.

nSize
Specifies the length, in characters, of the lpFilename buffer. If the length of the path and filename exceeds this limit, the string is truncated.

Return Values

If the function succeeds, the return value is the length, in characters, of the string copied to the buffer.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

If a module is loaded in two processes, its module filename in one process may differ in case from its module filename in the other process.

See Also

GetModuleHandle(), LoadLibrary()

====================

"The string is truncated" non necessariamente significa che il terminatore è assente, ed è comunque assurdo che in una versione manchi e in un'altra sia presente, documentazione o non documentazione, perché il "doppio comportamento" rischia di mandare nel pallone programmi non pensati per fare fronte esplicitamente all'ambiguità. Siccome non riesco a pensare che un'intera squadra di esperti della levatura di quelli che lavorano a un sistema operativo come Windows possa fare errori del genere, non mi resta che pensare che si tratti di "direttive dall'alto" impartite per ragioni di, diciamo così, marketing.

Comunque sia, fuori d'ogni (inutile) polemica e di affermazioni che potrebbero essere illazioni (le mie), sapresti indicarmi dove trovare una documentazione altrettanto compatta da scaricare in quattro e quattr'otto senza dover installare interi SDK? Io non son riuscito a reperirne, e consultare l'MSDN in linea è scomodissimo. Al momento mi sarebbe molto utile un file .hlp o .chm sulla falsariga di quello che già ho per Windows 98 (son riuscito a metter le mani solo su quello per GDI+ e mi è utilissimo).

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:09
Giovedì, 13/11/2014
Non stiamo parlando di "doppio comportamento" ma di un comportamento noto dovuto, secondo me, ad un semplicissimo bug che c'è ancora fino ad XP: se il buffer non è sufficiente il risultato sarà troncato. Dopo XP il bug è stato corretto.

Che c'entra il marketing, sinceramente, non lo capisco ...

La documentazione ufficiale è MSDN online. E' così vasta che non esiste in maniera differente. Da Win95 ne è passata di acqua sotto i ponti ...



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:42
Giovedì, 13/11/2014
A parte tutto ... per ottenere le varie parti del full path potresti usare semplicemente la funzione

_splitpath


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:33
Giovedì, 13/11/2014
E certo che potrei, però non sapevo neppure che esistesse! Ora la conosco (dopo la tua indicazione l'ho cercata su MSDN) e sicuramente la userò anche oltre il contesto del quale stiamo discutendo.

Grazie davvero, questo dimostra che a volte anche le discussioni sul sesso degli angeli possono portare a cose utili. Sei una miniera di informazioni... mi sa che ti "sfrutterò" altre volte, se sarai disponibile.

P.S. _spltpath() fa parte di una intera categoria di funzioni che non ho mai incontrato nei manuali che son solito consultare: quell'underscore all'inizio del nome per me è una assoluta novità. Approfondisco immediatamente e mi creo un bel "catalogo" di funzioni utili per me nuove.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo