0

以下の方法があれば教えていただきたいです。

アプリが起動しますが、フォームは作成されません。2 番目のアプリ インスタンスが開始され、1 つのインスタンスが既に実行されていることが検出されます (これは既に並べ替えられています)。

BROADCAST を使用せずに、2 番目のインスタンスが 1 番目のインスタンスにメッセージを送信するようにします。最初のインスタンスへのハンドルを見つけて、メッセージを直接送信する方法が欲しいです。

最初のインスタンスには、2 番目のインスタンスがまだ作成されていないクラス名が含まれている必要があります。これにより、それ自体にメッセージが送信されなくなります。

このシナリオで FindWindow を使用するにはどうすればよいですか? FindWindow で識別可能なウィンドウのないクラス/オブジェクトを作成するにはどうすればよいですか?

4

3 に答える 3

2

FindWindow でウィンドウのないオブジェクトを見つけることはできません。

ただし、 AllocateHWnd関数を使用して非表示のウィンドウを作成できます。例として TTimer ソースを参照してください。SetWindowText を使用して、簡単に検索できるようにタイトルを設定します

于 2012-11-11T03:49:27.487 に答える
1

共有メモリを使用してデータを渡すことができます。詳細については、この記事を参照してください

于 2012-11-11T08:37:12.037 に答える
1

TApplicationプロパティの値がわかっている場合は、ウィンドウにメッセージを送信できますTitle。送信インスタンスはTitle、混乱しないように一時的に別の値に設定できますFindWindow()。受信インスタンスは、TApplication.OnMessageイベントまたはTApplication.HookMainWindow()メソッドを使用してメッセージを受信できます。

于 2012-11-11T19:01:09.873 に答える