Windows 7 Delphi5 FormPaint и TopMost не работают - PullRequest
1 голос
/ 03 апреля 2012

У меня есть программа app1, которая запускает другое приложение, используя:

app2Server := CreateOleObject('app2.Server');
  1. В некоторых случаях она передает данные и управление в app2, вызывая процедуру app2Server.SendData, а затем вызывает app2Server.TopMost и устанавливает переменную dataSent = True

  2. Когда пользователь возвращается в app1, событие Form1.OnPaint проверяет, является ли dataSent = True, а затем получает некоторые данные из app2.

В основном на Windows7 шаг 2 не работает.Мне кажется, что в Window7 не работают две вещи: OleObject app2 не установлен в TopMost и форма app1 не рисуется (после первоначального создания).

Это известная проблема с Win7и если да, то может ли кто-нибудь предложить способ

  1. Установить мое приложение 2 как TopMost и
  2. Получить форму моего приложения 1, чтобы распознавать, когда оно вернется в режиме реального времени.

Большое спасибо

Редактировать: Чтобы изменить Z-порядок app1 и app2, я использую следующее:

SetWindowPos(Form1.Handle,HWND_BOTTOM,0,0,0,0,swp_NOMOVE or swp_NOSIZE);
app2Server.TopMost;

Не похоже, что они работают.

ps Я унаследовал этот код, мне просто нужно, чтобы он работал:)

1 Ответ

0 голосов
/ 05 апреля 2012

Мое решение в значительной степени таково:

  1. Я использовал таймер в app1 для постоянной проверки оплаты в приложении 2, так как OnPaint, похоже, не работает в Win7.

  2. Form1.TopMost фактически работает на Win7, но только если приложение свернуто.Любые предложения приветствуются.

спасибо

...