スケジュールナースGUIは、複数画面の存在を許しています。(内部ソルバーは、一個しか許していないので求解を同時に行うことは出来ませんがソフトを複数起動することは可能です。)なので、前回のコードでは、複数のスケジュールナースを検出してしまう可能性があります。
幸い、次のリリースから、project_file_nameという変数にプロジェクトファイル名を入れているので、これをANDに取れば、複数の検出は防げます。
import win32com.client import win32gui import ctypes MB_TOPMOST=0x00040000 MB_YESNOCANCEL=0x00000003 def winEnumHandler( hwnd, ctx ): if win32gui.IsWindowVisible( hwnd ): text=win32gui.GetWindowText( hwnd ) print (hex(hwnd),text ) if ('スケジュールナース' in text or "Schedule Nurse" in text) and project_file_name in text: global sc3_hwnd sc3_hwnd=hex(hwnd) print("Detected",sc3_hwnd) sc3_hwnd=0 win32gui.EnumWindows( winEnumHandler, None ) MessageBox = ctypes.windll.user32.MessageBoxW hwnd=int(int(sc3_hwnd,0)) print("hwnd=",hwnd) #res=MessageBox(0, '本当に色付き出力にしますか?色付きにするとすごく時間がかかります。', '色付き出力選択',MB_TOPMOST|MB_YESNOCANCEL) res=MessageBox(hwnd, '本当に色付き出力にしますか?色付きにするとすごく時間がかかります。', '色付き出力選択',MB_TOPMOST|MB_YESNOCANCEL)
0 件のコメント:
コメントを投稿