EnumWindows
何も返されません。結果が通常そこから取得される方法は、コールバック関数がデータをグローバルに格納することがよくあります。 this questionにその例があります。
もう1つの方法は、変更可能なコンテナオブジェクト(list
など)をextra
引数として渡し、呼び出されるたびに(最初の引数がウィンドウハンドルである)コールバックに2番目の引数として渡されます。
次に、コールバック関数が変更するローカルリストオブジェクトをEnumWindows()
に渡す2番目の手法を使用した例ですが、ウィンドウが表示されている場合のみです。
import win32gui
def my_callback(hwnd, list_object):
if win32gui.IsWindowVisible(hwnd):
title = win32gui.GetWindowText(hwnd)
if title:
list_object.append(title)
def print_windows_titles():
my_list = [] # local variable
win32gui.EnumWindows(my_callback, my_list) # populates my_list
# print result of calling EnumWindows
print('Titles of Visible Windows:')
for window_title in my_list:
print(' {!r}'.format(window_title))
print_windows_titles()
お返事ありがとうございました。これは私が考えているものです。グローバル変数は問題をうまく解決します。グローバル変数を避けることは初心者の経験則であるため、私はアクセスする方法があるかどうかを判断するためにこれについて考えています。コールバック内での操作とグローバルhwndは、この質問の解決策です。 –
あなたは余分なものにlist_objectを渡して、関数からlist_objectを得ることができるのですか?what_i_need_return = win32gui.EnumWindows(a_function、list_object).list_object? –
いいえ、あなたは 'EnumWindows'にリストオブジェクトを渡すことができ、***コールされるたびにコールバック関数に渡されることを意味します***。しかし、あなたはそれがグローバル変数の使用を避ける方法であることについて正しいです。 – martineau