掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
LazarusでFindWindowが常に0を返してしまう件について (ID:148846)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
フォームに TMemoとTButton 貼りつけて、イカの(結構手抜き)コードで、Windowを列挙すると・・・ 「Window/Form1」と取得できる行があります。 ですので、Delphiのように、クラス名で検索することはできないようですね。 var memo:TMemo; function EnumWindowsProc(hWindow: HWND; lParam: LPARAM):WINBOOL; stdcall; var WinClass, WinText :array[0..255]of char; newText :String; begin Result:= True; GetClassName(hWindow, WinClass, 256); GetWindowText(hWindow, WinText, 256); newText := PChar(@WinClass[0]); if CompareText(newText, 'IME') <> 0 then begin //'IME'が邪魔だったのでスキップ newText := newText + '/' + PChar(@WinText[0]); memo.Lines.Add(newText); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Clear; memo := Memo1; EnumWindows(@EnumWindowsProc, 0); end; また、Mr.XRAYさんのレスにある CreateParams を使う方法を試すと・・・ 相変わらず「Window/Form1」で取得できてしまうという。 ですので、Lazarusは、固有のクラス名としては利用していないのかもしれませんね。 なお、前回は記述していませんでしたが、テスト環境は、Windows 2000 SP4(Virtual BOX) + Lazarusは2.0.8 です。 一応報告まで。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.