名前 題名 ▼ Mr.XRAYさん > > ちょっと考えてみます. > > 前に > >Visible で Parent のないウィンドウを検出してやってみました. > > と書いたのですが,Parent ではなく Owner を持たないウィンドウを > 検出していましたが,これはなくてもいいようです. > 少なくても私の環境では. > テストしたコードと図です. > 図の TMemo はテストでハンドル名等を表示するために使用したものです. > 下のコードでは,そのコードは削除しています. > > 動作確認環境は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です. > Opera と FireFox で動作することを確認しています. > IDE 上でコンパイルして実行しても,作成した EXE を起動しても, > 位置とサイズが変更できることを確認しています. > > > //----------------------------------------------------------------------------- > // ウィンドウハンドルからウィンドウのクラス名を取得する関数 > //----------------------------------------------------------------------------- > function GetWindowClassNameStr(hWindow: HWND): String; > var > Buffer : array[0..MAX_PATH-1] of Char; > Len : Integer; > begin > FillChar(Buffer, SizeOf(Buffer), #0); > Len := GetClassName(hWindow, Buffer, Length(Buffer)); > if Len > 0 then Result := Buffer else Result := ''; > end; > > //----------------------------------------------------------------------------- > // アプリのウィンドウハンドルを取得するためのEnumWindowsのコールバック関数 > // クラス名が目的の名前で,VisibleがTrueのウインドウのハンドルを求める > //----------------------------------------------------------------------------- > function EnumWindowsProc(hWindow: HWND; lp: LPARAM): BOOL; stdcall; > var > ClassName : String; > begin > Result := True; > > ClassName := GetWindowClassNameStr(hWindow); > if UpperCase(ClassName) = UpperCase(Trim(Form1.Edit1.Text)) then begin > if IsWindowVisible(hWindow) then begin > LPDWORD(lp)^ := hWindow; > Result := False; > end; > end; > end; > > //============================================================================= > // フォーム生成時の処理 > //============================================================================= > procedure TForm1.FormCreate(Sender: TObject); > begin > Memo1.Lines.Clear; > Memo1.font.Name := 'MS ゴシック'; > Memo1.Font.Size := 10; > Memo1.ScrollBars := ssVertical; > end; > > //============================================================================= > // 指定クラス名のウィンドウの位置とサイズを変更してみる > //============================================================================= > procedure TForm1.Button1Click(Sender: TObject); > var > hTargetWnd : HWND; > Flags : Cardinal; > begin > hTargetWnd := 0; > > EnumWindows(@EnumWindowsProc, LPARAM(@hTargetWnd)); > if hTargetWnd <> 0 then begin > Flags := SWP_NOZORDER or SWP_SHOWWINDOW; > SetWindowPos(hTargetWnd, 0, 0, 0, 500, 800, Flags); > end; > end; > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link