私には2つのアプリケーションがあり、最初のアプリケーションは2番目のアプリケーション(これも私自身のもの)からフォームのハンドルを見つける必要がありますが、異なるアプリケーション(インスタンスではなく、異なるアプリケーション)です。私はいくつかのテクニックを見てきましたが、私がやりたいことが安全かどうか、またはこれを行うための効率的な方法は何かを知りたいです。
FindWindow
クラス名を渡すことができる関数を使用することを考えていたので、フォームのWinClassName
メンバーをCreateParams
一意の値(GUIDなど)に変更すると、大きなウィンドウでこのウィンドウを簡単に見つけることができます。たぶんそれは私のアプリケーションからのものです。
フォームを見つける必要があるアプリケーション:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WinClassName := '{1EE65C52-2F4B-4600-AAE2-079C29AD2220}';
end;
前のアプリケーションからフォームを見つける必要がある他のアプリケーション:
procedure TForm1.Button1Click(Sender: TObject);
var
FormHandle: HWND;
begin
FormHandle := FindWindow('{1EE65C52-2F4B-4600-AAE2-079C29AD2220}', nil);
ShowMessage(IntToStr(FormHandle));
end;
私の質問は:
のこのメンバーをTCreateParams
私が望むものに変更するのは安全ですか、それとも何かで安全ではありませんか?または、独自の別のアプリケーション(アプリケーションインスタンスではなく、独自の別のアプリケーション)からフォームのハンドルをどのように探しますか?
どうもありがとう!