Because I want to use it in Revit 2021 I just tried it in Revit 2023 and CPython3.
This is what I get, when I print every variable:
code:
import ctypes
EnumWindows = ctypes.windll.user32.EnumWindows
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
GetWindowText = ctypes.windll.user32.GetWindowTextW
GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
IsWindowVisible = ctypes.windll.user32.IsWindowVisible
titles = []
def foreach_window(hwnd, lParam):
if IsWindowVisible(hwnd):
length = GetWindowTextLength(hwnd)
print(length)
buff = ctypes.create_unicode_buffer(length + 1)
print(buff)
GetWindowText(hwnd, buff, length + 1)
print(buff)
print(buff.value)
titles.append(buff.value)
return True
EnumWindows(EnumWindowsProc(foreach_window), 0)
print(titles)
OUT = titles
console CPython3:
Python Script: []
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 13
Python Script: <ctypes.c_wchar_Array_14 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_14 object at 0x000001FC3EF24DC0>
Python Script: Python Script
Python Script: 6
Python Script: <ctypes.c_wchar_Array_7 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_7 object at 0x000001FC3EF24DC0>
Python Script: Dynamo
Python Script: 68
Python Script: <ctypes.c_wchar_Array_69 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_69 object at 0x000001FC3EF24DC0>
Python Script: Autodesk Revit 2023.1 - [gjgfj.rvt - Zeichenansicht: 090_TITELBLATT]
Python Script: 96
Python Script: <ctypes.c_wchar_Array_97 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_97 object at 0x000001FC3EF24DC0>
Python Script: Try to get all names of program windows to pull Revit to the foreground - Dynamo - Google Chrome
Python Script: 51
Python Script: <ctypes.c_wchar_Array_52 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_52 object at 0x000001FC3EF24DC0>
Python Script: Posteingang - leonard.moelders@zueblin.de - Outlook
Python Script: 38
Python Script: <ctypes.c_wchar_Array_39 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_39 object at 0x000001FC3EF24DC0>
Python Script: Giannis und Michaela | Microsoft Teams
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 43
Python Script: <ctypes.c_wchar_Array_44 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_44 object at 0x000001FC3EF24DC0>
Python Script: 096b151e-74ab-476f-9448-9733dae7020dMonitor
Python Script: 21
Python Script: <ctypes.c_wchar_Array_22 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_22 object at 0x000001FC3EF24DC0>
Python Script: Unbenannt - Paint 3D
Python Script: 8
Python Script: <ctypes.c_wchar_Array_9 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_9 object at 0x000001FC3EF24DC0>
Python Script: Paint 3D
Python Script: 7
Python Script: <ctypes.c_wchar_Array_8 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_8 object at 0x000001FC3EF24DC0>
Python Script: Rechner
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 7
Python Script: <ctypes.c_wchar_Array_8 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_8 object at 0x000001FC3EF24DC0>
Python Script: Rechner
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 10
Python Script: <ctypes.c_wchar_Array_11 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_11 object at 0x000001FC3EF24DC0>
Python Script: MainWindow
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 32
Python Script: <ctypes.c_wchar_Array_33 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_33 object at 0x000001FC3EF24DC0>
Python Script: Microsoft Text Input Application
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 45
Python Script: <ctypes.c_wchar_Array_46 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_46 object at 0x000001FC3EF24DC0>
Python Script: FindWindows.py - VS Code - Visual Studio Code
Python Script: 0
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_1 object at 0x000001FC3EF24DC0>
Python Script:
Python Script: 15
Python Script: <ctypes.c_wchar_Array_16 object at 0x000001FC3EF24DC0>
Python Script: <ctypes.c_wchar_Array_16 object at 0x000001FC3EF24DC0>
Python Script: Program Manager
Python Script: ['', '', '', 'Python Script', 'Dynamo', 'Autodesk Revit 2023.1 - [gjgfj.rvt - Zeichenansicht: 090_TITELBLATT]', 'Try to get all names of program windows to pull Revit to the foreground - Dynamo - Google Chrome', 'Posteingang - leonard.moelders@zueblin.de - Outlook', 'Giannis und Michaela | Microsoft Teams', '', '', '096b151e-74ab-476f-9448-9733dae7020dMonitor', 'Unbenannt \u200e- Paint 3D', 'Paint 3D', 'Rechner', '', 'Rechner', '', 'MainWindow', '', '', '', '', '', 'Microsoft Text Input Application', '', 'FindWindows.py - VS Code - Visual Studio Code', '', 'Program Manager']
console IronPython:
Python Script: []
EDIT:
I made further investigations and I think I found the problem:
in CPython3 my platform is win32:
but in IronPython:
Now this could be the reason why I get no results in IronPython as this quote says:
ctypes
exports the cdll , and on Windows windll and oledll objects, for loading dynamic link libraries.
So I think in IronPython the ctypes library has no windll and therefore I don’t get any results.
I this logical?
EDIT#2:
Hmm but I can access windll: