タイトル : Re^11: メモ帳のカーソル位置 投稿日 : 2012/07/09(Mon) 19:20 投稿者 : 魔界の仮面弁士
> FindWindowでハンドルを取得できずEnumWindowで取得出来ることなんてあるのでしょうか? EnumWindows は、トップレベルウィンドウの全列挙ですが、 FindWindow は、クラス名/ウィンドウ名による検索です。 通常はどちらでも取得できるはずですが、たとえば、Unicodeテキストなウィンドウ名に対して うっかり ANSI バージョンである FindWindow(Ex)A を呼び出していたり、あるいは、 半角/全角、マイナスとハイフン、空白文字の有無などの指定ミスがあったとすれば、 FindWindow(Ex) での取りこぼしはありえるかと思います。 > EnumWindowでハンドルを取得しそれをSetWindowPosで動かしたら出来そうなサイトが > 見つかったのでそちらも試してみます。 > http://monta.moe.in/wp/2010/03-21/13-20_721 移動自体は、MoveWindow でも SetWindow でも問題ないはずです。 Private Declare Function MoveWindow Lib "user32" _ ( _ ByVal hWnd As OLE_HANDLE, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long, _ ByVal bRepaint As Long _ ) As Long Private Enum SWPIA HWND_NOTOPMOST = -2 '自身が最前面なら、どの最前面ウィンドウよりも後ろに移動する HWND_TOPMOST = -1 '最前面にないどのウィンドウよりも手前に移動する HWND_TOP = 0 '先頭に移動する HWND_BOTTOM = 1 '一番後ろに移動する End Enum Private Enum SWP SWP_NOSIZE = &H1 'ウィンドウのサイズを変更しない(cx と cy を無視する) SWP_NOMOVE = &H2 'ウィンドウの位置を変更しない(X と Y を無視する) SWP_NOZORDER = &H4 'Zオーダーを変更しない(hWndInsertAfter を無視する) SWP_NOREDRAW = &H8 '再描画しない SWP_NOACTIVATE = &H10 'ウィンドウをアクティブ化しない SWP_FRAMECHANGED = &H20 '新しい枠線スタイルの設定を適用する SWP_DRAWFRAME = SWP_FRAMECHANGED '枠線を描画する SWP_SHOWWINDOW = &H40 'ウィンドウを表示する SWP_HIDEWINDOW = &H80 'ウィンドウを非表示にする SWP_NOCOPYBITS = &H100 'クライアント領域のすべての内容を破棄する SWP_NOOWNERZORDER = &H200 'オーナーウィンドウのZオーダーを変更しない SWP_NOOWNERZORDER = SWP_NOREPOSITION SWP_NOSENDCHANGING = &H400 'WM_WINDOWPOSCHANGING メッセージを抑制する SWP_DEFERERASE = &H2000 'WM_SYNCPAINT メッセージを抑制する SWP_ASYNCWINDOWPOS = &H4000 'UIスレッドへ要求する End Enum Private Declare Function SetWindowPos Lib "user32" _ ( _ ByVal hWnd As OLE_HANDLE, _ ByVal hWndInsertAfter As OLE_HANDLE, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As SWP _ ) As Long |