Détecter si Lo est 32 ou 64 bits

Bonjour,

Je cherche le moyen pour détecter si la version installée de LO est 32 bits ou 64 bits (API LibreOffice ou Windows).

D'avance merci.

Didier Dorange-Pattoret

Bonjour de CAHORS et joyeuses fêtes à tous .

Je me pose la même question et je profite de l'occasion.
Merci à tous pour votre collaboration
Raoul

Bonjour,

Bonjour,

Je cherche le moyen pour détecter si la version installée de LO est 32 bits ou 64 bits (API LibreOffice ou Windows).

D'avance merci.

Didier Dorange-Pattoret

Pour Windows, c'est indiqué dans Panneau de configuration > Système.

Dans le Gestionnaire de tâches de Windows les noms des processus 32bits en exécution sont suivis de la mention 32bit.

Bernard

Bonjour à tous,

Merci pour cette réponse. Mais ce n'est pas ce que j'attendais.

Je cherche un moyen par programmation.
Donc en utilisant l'API (application programing interface) soit de LibreOffice, soit de Windows.

Bien cordialement.

Didier Dorange-Pattoret

Désolé, j'avais lu un peu vite la question (en relisant je vois qu'il est effectivement question de l'API). Mais là, ça sort du champ de mes compétences :slight_smile:

Bernard

Bonjour,

Il suffit d'utiliser en programmation macro Basic la fonction ENVIRON avec
le paramètre "PROCESSOR_ARCHITECTURE" selon le modèle ci-dessous :

si LO 32 bits => environ("PROCESSOR_ARCHITECTURE") retourne x86
si LO 64 bits => environ("PROCESSOR_ARCHITECTURE") retourne AMD64

Bonsoir,

Il suffit d'utiliser en programmation macro Basic la fonction ENVIRON avec
le paramètre "PROCESSOR_ARCHITECTURE" selon le modèle ci-dessous :

si LO 32 bits => environ("PROCESSOR_ARCHITECTURE") retourne x86
si LO 64 bits => environ("PROCESSOR_ARCHITECTURE") retourne AMD64

La commande fonctionne sous Windows XP mais pas sous Linux (Debian).

Ce qui semble normal puisque le wiki OOo [1] dit :
"The Environ function returns the environmental variables of the operating system. Depending on the system and configuration, various types of data are saved here. [...]"
(la fonction Environ retourne la valeur des variables d'environnement du système d'exploitation. En fonction du système et de sa configuration, différentes sortes de données y sont stockées.)

Ce que demande Didier c'est de pouvoir reconnaître la version de LibO, pas celle de l'OS. Et, désolé, pas trouvé. J'avais bien pensé à getSolarVersion mais ça ne répond pas non plus à la demande... /o\

[1] https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Other_Functions_(Runtime_Library)

Bonsoir,

Merci pour vos réponses.

J'ai trouvé un solution qui semble bonne.
Elle est basée sur l'observation suivante : Dans les Win 64 bits, les applications 32 bits sont dans un dossier nommé Program Files (x86) ...

Cordialement.

Function IsLO5Win64 As Boolean
     If (getGuitype = 1 And Instr(GetRepertoirePath("inst"),"x86") = 0 and OOoNumVersion()>=500 and ENVIRON("PROCESSOR_ARCHITECTURE")="AMD64") Then
         IsLO5Win64 = True
     Else
         IsLO5Win64 = False
     Endif
End Function

Function GetRepertoirePath(sInstPath as String) as String 'donne le répertoire correspondant
     Dim oPathSubstSrv as Object
     Dim sPath as String
         sInstPath = "$("+sInstPath+")"
         oPathSubstSrv = createUnoService("com.sun.star.comp.framework.PathSubstitution")
         sPath = ConvertFromUrl(oPathSubstSrv.getSubstituteVariableValue(sInstPath))
         GetRepertoirePath = sPath
End Function

Function OOoNumVersion() As Integer
       Dim aSettings, aConfigProvider
       Dim aParams2(0) As new com.sun.star.beans.PropertyValue
       Dim sProvider$, sAccess$
       sProvider = "com.sun.star.configuration.ConfigurationProvider"
       sAccess = "com.sun.star.configuration.ConfigurationAccess"
       aConfigProvider = createUnoService(sProvider)
       aParams2(0).Name = "nodepath"
       aParams2(0).Value = "/org.openoffice.Setup/Product"
       aSettings = aConfigProvider.createInstanceWithArguments(sAccess, aParams2())
       If aSettings.hasbyname("ooSetupVersionAboutBox") Then
       sOOOVersion = aSettings.getbyname("ooSetupVersionAboutBox")
       Else
       sOOOVersion = aSettings.getbyname("ooSetupVersion")
       EndIf
       If Len(sOOOVersion) = 3 Then sOOOVersion = sOOOVersion & ".0"
       OOoNumVersion = Cint(Mid(sOOOVersion,1,1))*100 + Cint(Mid(sOOOVersion,3,1))*10 + Cint(Mid(sOOOVersion,5,1))
End Function

Bonsoir,

ATTENTION!!!
Comme le précise Jean-Francois Nifenecker, cette solution ne fonctionne
*que* pour les applications tournant sous Windows *quelque soit la version*
: XP, 7, 8.1, 10...
En effet, la variable d'environnement "PROCESSOR_ARCHITECTURE" n'existe que
pour le système Windows.

Il en va de même pour la solution trouvée (sur un autre forum...et que je
connais) par Didier Dorange-Pattoret car dans la fonction IsLO5Win64, la
fonction getGuitype est testée avec une valeur de retour à 1 qui correspond
à WINDOWS mais pas aux autres systèmes.
https://help.libreoffice.org/3.6/Basic/GetGuiType_Function_Runtime/fr
<https://help.libreoffice.org/3.6/Basic/GetGuiType_Function_Runtime/fr>
https://books.google.fr/books?id=cHVIk-BlwA0C&pg=PA145&lpg=PA145&dq=getGuitype&source=bl&ots=DWJVHkpR_G&sig=ym_omreHmGBmxtxTa2upBJfrhWY&hl=fr&sa=X&ved=0ahUKEwiDu4vmz4bKAhWBUhoKHZO0CxUQ6AEIVTAF#v=onepage&q=getGuitype&f=false
<https://books.google.fr/books?id=cHVIk-BlwA0C&pg=PA145&lpg=PA145&dq=getGuitype&source=bl&ots=DWJVHkpR_G&sig=ym_omreHmGBmxtxTa2upBJfrhWY&hl=fr&sa=X&ved=0ahUKEwiDu4vmz4bKAhWBUhoKHZO0CxUQ6AEIVTAF#v=onepage&q=getGuitype&f=false>

Bonjour à tous,

Meilleurs voeux de santé et de bonheur pour tous.

Bonsoir,

ATTENTION!!!
Comme le précise Jean-Francois Nifenecker, cette solution ne fonctionne
*que* pour les applications tournant sous Windows *quelque soit la version*
: XP, 7, 8.1, 10...
En effet, la variable d'environnement "PROCESSOR_ARCHITECTURE" n'existe que
pour le système Windows.

Le but de la fonction ISLO5WIN64 est de détecter si la version de LibreOffice installée dans un environnement Windows est en 64 bits.
Et je crois qu'elle remplit bien son rôle.
En tout cas, elle n'a pas encore été mise en défaut.

Sa raison d'être est de me permettre de contourner ce bug : https://bugs.documentfoundation.org/show_bug.cgi?id=96663

Cordialement.