| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Bechtle stärkt PLM-Geschäft mit Neugründung, eine Pressemitteilung
|
Autor
|
Thema: API: SolidWorks x64 oder 32bit? (3560 mal gelesen)
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 25. Jun. 2008 07:07 <-- editieren / zitieren --> Unities abgeben:         
Morgen zusammen! Ich wollte gerade mal eben kurz herausfinden, wie ich, oder besser VBA, herausfinden kann, ob ich nun SolidWorks x64 oder x32 benutze. In der API Hilfe habe ich folgendes gefunden: SwHtmlInterface::IsX64 Dann hat mir HenryV, nachdem es bei mir nicht geklappt hat und ich meinen Code wieder weggeworfen habe, dies hier zusammengesetzt: Code: Sub main() Dim pSldWorks As Object Dim iResult As IntegerSet pSldWorks = CreateObject("SwHtmlControl.SwHtmlInterface") iResult = pSldWorks.IsX64() Debug.Print iResult Select Case iResult Case 0 MsgBox "SWX 32-Bit" Case 1 MsgBox "SWX 64-Bit" Case Else MsgBox "kein Solidworks" End Select End Sub
Stellte sich dann heraus, dass mein Code nur ganz wenig abgewichen hatte; ich hatte kein Select Case, sondern ein IF Schlaufe mit Debug.Print  Jetzt noch der Verweis auf "SwHtmlControl 16.0 Type Library" (c:\....SolidWorks\swhtmlcontrol.dll" setzten und los (ich muss diese dll sogar zuerst noch registrieren -> Start -> Ausführen: regsvr32 "C:\Program Files (x86)\SolidWorks\SolidWorks\swhtmlcontrol.dll") (**)! Doch jetzt kommt bei mir die Meldung, dass das Objekt durch die ActiveX-Komponente nicht erstellt werden kann. In der Hilfe habe ich dann gefunden, dass das möglicherweise ein Problem ist, wenn ich in mein x64 nun x32 Applikationen einbinden möchte und desshalb nicht funktioniert. Kann das jemand bestätigen, jemand der auch SolidWorks 2008 (SP4.0) x64 installiert hat? Vielen Dank schon mal! G. Achja, das da hatte ich auch noch gefunden! Aber mein Computer kann leider kein .net .... (**) Komisch ist auch noch, dass mein x64 SolidWorks sich im 32bit Programmeverzeichnis installiert hat?! WTF?!?!?! ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...

 Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 25. Jun. 2008 13:58 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: ...Kann das jemand bestätigen, jemand der auch SolidWorks 2008 (SP4.0) x64 installiert hat? ...
Kann ich bestätigen, allerdings mit SWX 2007. Ich krieg das auch nicht zum Laufen. Zitat: Original erstellt von G. Dawg: ... (**) Komisch ist auch noch, dass mein x64 SolidWorks sich im 32bit Programmeverzeichnis installiert hat?! WTF?!?!?!
Bist du sicher, dass du die 64bit-Version installiert hast? ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 25. Jun. 2008 15:34 <-- editieren / zitieren --> Unities abgeben:         
Interessant! Ich werde mal den Support fragen! Ich werde jetzt kein Screenshot hochladen, aber Du kannst mir glauben, dass es wirklich x64 ist.  So stehts in der info: SolidWorks Office Premium 2008 x64 Edition, SP4.0, Seriennummer: 3145 9265 3589 7932  ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...

 Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 25. Jun. 2008 15:41 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 01. Jul. 2008 14:05 <-- editieren / zitieren --> Unities abgeben:         
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 09. Jul. 2008 14:17 <-- editieren / zitieren --> Unities abgeben:         
So, ich habe etwas anderes gefunden. Doch wie könnte es anders sein, funktioniert dies leider nicht zuverlässig! Kann mir da bitte jemand damit helfen? Code:
Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Declare Function GetCurrentProcess Lib "kernel32" () As Long Declare Function IsWow64Process Lib "kernel32" (ByVal hProc As Long, bWow64Process As Boolean) As Long Public x64OS As BooleanSub main() '#### SolidWorks x64 or SolidWorks 32-bit? ########## ' Assume initially that this is not a Wow64 process bolFunc = False ' Now check to see if IsWow64Process function exists handle = GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process") If handle > 0 Then ' IsWow64Process function exists ' Now use the function to determine if we are running under Wow64 IsWow64Process GetCurrentProcess(), bolFunc End If x64OS = bolFunc ' if TRUE then OS is x64 '#### SolidWorks x64 or SolidWorks 32-bit? ########## x64_Printer = "\\***\64***003" x64_PrinterDesc = "OCE TDS600 64bit" x32_Printer = "\\***\32***003" x32_PrinterDesc = "OCE TDS600 32bit" Select Case x64OS Case True Formular.PrinterPath.Caption = x64_Printer Formular.DruckerAuswahl.Value = x64_PrinterDesc Formular.Caption = "Drucken oder Konvertieren - x64" Case False Formular.PrinterPath.Caption = x32_Printer Formular.DruckerAuswahl.Value = x32_PrinterDesc Formular.Caption = "Drucken oder Konvertieren - 32bit" End Select End Sub
Bei mir will der Hund nicht durch den CASE gehen! x64OS ist zwar TRUE (wahr), will aber trotzdem nicht! Was mache ich falsch? Ja, ich weiss, hat mit SolidWorks nur indirekt etwas zu tun, da ich das für die Druckeinstellung brauche, aber ich frage trotzdem hier, weil das gesammt Projekt für SolidWorks ist. Vielen Dank schon mal! ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 09. Jul. 2008 14:24 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
Versuche es mal so: Code: Select Case True Case x64OS Formular.PrinterPath.Caption = x64_Printer Formular.DruckerAuswahl.Value = x64_PrinterDesc Formular.Caption = "Drucken oder Konvertieren - x64" Case x64OS = False Formular.PrinterPath.Caption = x32_Printer Formular.DruckerAuswahl.Value = x32_PrinterDesc Formular.Caption = "Drucken oder Konvertieren - 32bit" End Select
Das müsste klappen! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...

 Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 09. Jul. 2008 14:28 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 09. Jul. 2008 14:32 <-- editieren / zitieren --> Unities abgeben:         
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 09. Jul. 2008 14:36 <-- editieren / zitieren --> Unities abgeben:         
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...

 Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 09. Jul. 2008 15:01 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
Also bei mir geht's! Bau doch mal ein msgbox in die Zweige ein: Code: Select Case x64OS Case True Formular.PrinterPath.Caption = x64_Printer Formular.DruckerAuswahl.Value = x64_PrinterDesc Formular.Caption = "Drucken oder Konvertieren - x64" msgbox "64bit" Case False Formular.PrinterPath.Caption = x32_Printer Formular.DruckerAuswahl.Value = x32_PrinterDesc Formular.Caption = "Drucken oder Konvertieren - 32bit" msgbox "32bit" End Select
Vielen Dank übrigens für diesen Tipp! ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 09. Jul. 2008 15:54 <-- editieren / zitieren --> Unities abgeben:         
hab was "besseres" gefunden, dass bei mir zu 100% funktioniert! http://www.slopdog.com/source-code-tutorials/1066-vb6-mutli-processor-64-bit-detect ion.html geändert auf:
Code: Private Type SYSTEM_INFO dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long dwReserved As Long End TypePrivate Declare Function IsWow64Process Lib "kernel32" (ByVal hProcess As Long, ByRef Wow64Process As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Private Declare Sub GetNativeSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO) Private bol64Bit As Boolean Public Sub isx64OS() Dim Ret As Long IsWow64Process GetCurrentProcess, Ret If Ret = 0 Then bol64Bit = False Else 'Dim SysInfo64 As SYSTEM_INFO 'GetNativeSystemInfo SysInfo64 'CStr(SysInfo64.dwNumberOfProcessors) bol64Bit = True End If If debugger = True Then Debug.Print "OS: " & bol64Bit End Sub
Mich interessiert die Anzahl CPUs eh nicht!  ------------------ [Diese Nachricht wurde von G. Dawg am 09. Jul. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...

 Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 09. Jul. 2008 16:57 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
|

| |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 10. Jul. 2008 07:15 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von KMassler: Und jetzt noch aufräumen (nicht benötigte Declarationen rausschmeißen)
Jaja, ich mag nicht aufräumen! Besonders nicht VBA! Das ist mir immer zu unübersichtlich und zu kompliziert! Ok, so scheint es noch zu funktionieren:
Code: '--------------------------------------- ' Project: Determine OS (64-Bit) ' Author: Hash ' Date: 17/6/08 12.00am ' http://tinyurl.com/6fkx7z '---------------------------------------Private Declare Function IsWow64Process Lib "kernel32" (ByVal hProcess As Long, ByRef Wow64Process As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Public x64OS as Boolean Public Function isx64OS() Dim Ret As Long IsWow64Process GetCurrentProcess, Ret If Ret = 0 Then x64OS = False Else x64OS = True End If If debugger = True Then Debug.Print "x64 OS: " & x64OS End Function
------------------ [Diese Nachricht wurde von G. Dawg am 10. Jul. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |