掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
LazarusでFindWindowが常に0を返してしまう件について (ID:148841)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
EXE を作成したら IDE を閉じてから,EXE を起動してテストしてみてください. sLineBreak は #13#10 です.Lazarus になければ置き換えてください. procedure TForm1.Button1Click(Sender: TObject); var H : HWND; begin H := FindWindow('Window', nil); if H <> 0 then begin ShowMessage(IntToStr(H) + sLineBreak + IntToStr(Form1.Handle)); PostMessage(H, WM_CLOSE, 0, 0); end; end; Delphi のフォームのクラス名は内部的に使用されるものですが, デフォルトではこのクラス名がフォームのウィンドウのクラス名として使われます. このウィンドウのクラス名は CreateParams メソッドを使用して変更できます. procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited; Params.WinClassName := 'TMyMainFormClass'; end; procedure TForm1.Button1Click(Sender: TObject); var LhWnd : HWND; begin LhWnd := FindWindow('TMyMainFormClass', nil); if LhWnd <> 0 then begin PostMessage(LhWnd, WM_CLOSE, 0, 0); end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.