プロが教えるわが家の防犯対策術!

先日からご回答を頂いて試行錯誤しているのですが、
どうしても実現できずに、再度質問させて頂きました。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2089161
の方法でMainWindowHandleを取得して、
そのウィンドウを最大化する動作なのですが、
スプラッシュウィンドウがあるせいか変化が見られません。
試しにHwndを取得する前にSTOPを入れて完全に起動する
まで待ってから実行したりもしてみたのですが、
やはり変化がありませんでした。

別の方法として、その起動したアプリケーションのIDやタイトルバーに出ているウィンドウの名前を
VBのサイトから引用させていただいた下記のコードで

Dim localByName As Process() = Process.GetProcessesByName("notepad")
Dim p As Process
For Each p In localByName
Console.WriteLine("{0} / {1} : {2}", p.Id, p.ProcessName, p.MainWindowTitle)
Next

知ることが出来たのでそのIDやMainWindowTitleを手がかりに
もう一度hWndを設定し直してShowWindow(hWnd, SW_MAXMIZE)を実行したいのですが、
hWndのところにはIDを入れてもだめなようなので、
IDの内容をhWndと同じ内容に変換する事が出来ればと考えています。


何度ももうしわけありませんが、どうかお助けください。m(__)m

A 回答 (1件)

開発用に個人ツールとして、最大化/最小化ボタンのないウィンドウを操作するために、あなたが求めているような機能を作成したことがあります。



記憶が薄いですが、、、私も最初は[API:ShowWindow()]を利用していたと思います。
しかし、何故か操作出来る窓/出来ない窓がありました。原因は未だ不明です。。。
(理由がわかれば、教えて欲しいぐらいです。)



そこで、、、
以前
[2080663:サイズ変更したフォームのサイズと位置を設定・取得したいです。]
http://okwave.jp/kotaeru.php3?q=2080663
にて、アドバイスをした
[API:GetWindowPlacement()]
[API:SetWindowPlacement()]
にて解消いたしました。


以前のサンプルは、自プロセスのフォームに対して行っておりますが、
Form1_Loadイベントの「Dim l_ptr As IntPtr = Me.Handle」をパラメータ化し、
「p.MainWindowHandle」を利用することにより、設定が可能かと思います。


-----------------------------
Imports System.Runtime.InteropServices
-----------------------------


  Dim p As Process
  For Each p In localByName
    'Call 最大化実行(p.MainWindowHandle)
  Next


Private Sub 最大化実行(ByVal p_Ptr As IntPtr)
  Dim l_WINDOWPLACEMENT As WINDOWPLACEMENT
  Dim l_blnRet As Boolean

  '構造体のサイズ情報を格納
  l_WINDOWPLACEMENT.Length = Marshal.SizeOf(GetType(WINDOWPLACEMENT))

  '取得実行
  l_blnRet = GetWindowPlacement(p_Ptr, l_WINDOWPLACEMENT)
  If Not l_blnRet Then
    MsgBox("取得失敗")
    Return
  End If

  '各情報の指定
  With l_WINDOWPLACEMENT
    '最大表示を指定
    .showCmd = showCmd_SW.SW_SHOWMAXIMIZED
  End With

  '設定実行
  l_blnRet = SetWindowPlacement(p_Ptr, l_WINDOWPLACEMENT)
  If Not l_blnRet Then
    MsgBox("設定失敗")
    Return
  End If
End Sub
    • good
    • 0
この回答へのお礼

できました。(^o^)
中々難しそうなコードだったのですが、コピペだけで使えるように上げて頂いてとてもたすかりました。(^^;)
こちらのコードも今後愛用させていただきたいと思います。ありがとうございました。!

お礼日時:2006/04/19 12:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています