• 締切済み

GUIへの外部ソフトウェアのウィンドウ組込み

こんにちは。 現在PythonでGUIを作成しているのですが、 外部ソフトウェアのウィンドウをGUIに組み込むことはできるのでしょうか? また、可能な場合どのような手順で行えばいいのでしょうか? 言葉で上手く説明できる自信が無いのでサンプル画像を載せました。 (GUIにメモ帳のウィンドウを組み込んだ例です) ちなみにこのような機能が実現できるならPythonで無くても構いません。 自分でも色々と調べてみたのですが 思うような情報が得られなかったためこちらに投稿しました。 分かる方がいましたらよろしくお願いします。

みんなの回答

回答No.1

 こんにちは。  メモ帳ウィンドウを見つけ出さなくてはいけません。  見つけたメモ帳ウィンドウの「親ウィンドウ」に、自分自身のウィンドウを指定すれば出来ます。  当方、Pythonは未経験ですが、どの様な言語であっても、Windows上でウィンドウに対して突っ込んだ操作を仕掛けるならば、Win32APIが必要な筈です。  以下はVisual Studio 2005 MFC(C/C++)で書いていますが、Win32API部分に関しては、どの言語からも共通の筈です。 //※1 以下はメモ帳ウィンドウを置く為のスタティックコントロールウィンドウ(自分側) CWnd* pWnd = GetDlgItem(IDC_STATIC_LAND); //メモ帳ウィンドウを探す //http://msdn.microsoft.com/ja-jp/library/cc364634.aspx HWND hNotePad = ::FindWindow(TEXT("Notepad"), NULL); //メモ帳ウィンドウの親ウィンドウを※1に設定する //http://msdn.microsoft.com/ja-jp/library/cc411061.aspx ::SetParent(hNotePad, pWnd->GetSafeHwnd()); //メモ帳ウィンドウのスタイルを取る //http://msdn.microsoft.com/ja-jp/library/cc364760.aspx const DWORD dwStyle = ::GetWindowLong(hNotePad, GWL_STYLE); //メモ帳ウィンドウのスタイルに子ウィンドウスタイルを付加する //http://msdn.microsoft.com/ja-jp/library/cc411203.aspx ::SetWindowLong(hNotePad, GWL_STYLE, dwStyle | WS_CHILD); //メモ帳ウィンドウのスタイルが変わった事を通知する //http://msdn.microsoft.com/ja-jp/library/cc411206.aspx ::SetWindowPos(hNotePad, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); //メモ帳ウィンドウの位置やサイズ調整する為クライアント領域を取る //http://msdn.microsoft.com/ja-jp/library/cc364604.aspx RECT rc; ::GetClientRect(pWnd->GetSafeHwnd(), &rc); //メモ帳ウィンドウを動かして位置とサイズの調整する //http://msdn.microsoft.com/ja-jp/library/cc410924.aspx ::MoveWindow(hNotePad, 0, 0, rc.right, rc.bottom, TRUE);