Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Повторный запуск программы / 4 сообщений из 4, страница 1 из 1
19.08.2003, 11:48
    #32240010
Алекceй
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторный запуск программы
При запуске приложения проверяю запущено ли оно.
Если оно запущено и минимизировано пытаюсь поднять его главное окно.
Нахожу его handle через FindWindow, далее вызываю
ShowWindow(hwnd, SW_RESTORE);
BringWindowToTop(hwnd);
Окно всплывает, но кнопка Minimize в нем НЕ РАБОТАЕТ и если щелкнуть
правой кнопкой мыши по задаче (от которой это окно) на панели задач, пункт
Restore в Popup-меню подсвечен, как будто команды Restore еще не было. При
выборе пункта Restore он хайдится и кнопка Minimize главного окна начинает
функционировать.
Я пробовал и SendMessage и ShowWindow, но ничего не помогает.
Чего-то не хватает для полного восстановления окна программно. Не подскажете ли, чего ?
...
Рейтинг: 0 / 0
19.08.2003, 11:56
    #32240029
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторный запуск программы
А если так:

Код: plaintext
ShowWindow(hwnd, SW_SHOWNORMAL);
...
Рейтинг: 0 / 0
19.08.2003, 12:53
    #32240131
oleg_e
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторный запуск программы
А для какого окна ты делаешь ShowWindow(hwnd, SW_RESTORE) ?
Попробуй сделать для Aplication.
...
Рейтинг: 0 / 0
19.08.2003, 13:42
    #32240253
Andrew Campball
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Повторный запуск программы
VCLUnit.pas (RXLib)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
function ActivatePrevInstance(const MainFormClass, ATitle: string): Boolean;
var
  PrevWnd, PopupWnd, ParentWnd: HWnd;
{$IFDEF WIN32}
  IsDelphi: Longint;
{$ELSE}
  S: array[ 0 .. 255 ] of Char;
{$ENDIF}
begin
  Result := False;
  PrevWnd := FindPrevInstance(MainFormClass, ATitle);
  if PrevWnd <>  0  then begin
    ParentWnd := GetWindowParent(PrevWnd);
    while (ParentWnd <> GetDesktopWindow) and (ParentWnd <>  0 ) do begin
      PrevWnd := ParentWnd;
      ParentWnd := GetWindowParent(PrevWnd);
    end;
    if WindowClassName(PrevWnd) = 'TApplication' then begin
{$IFDEF WIN32}
      IsDelphi :=  0 ;
      EnumThreadWindows(GetWindowTask(PrevWnd), @WindowsEnum,
        LPARAM(@IsDelphi));
      if Boolean(IsDelphi) then Exit;
{$ELSE}
      GetModuleFileName(GetWindowTask(PrevWnd), S, SizeOf(S) -  1 );
      if AnsiUpperCase(ExtractFileName(StrPas(S))) = 'DELPHI.EXE' then Exit;
{$ENDIF}
      if IsIconic(PrevWnd) then begin { application is minimized }
        SendMessage(PrevWnd, WM_SYSCOMMAND, SC_RESTORE,  0 );
        Result := True;
        Exit;
      end
      else ShowWinNoAnimate(PrevWnd, SW_SHOWNOACTIVATE);
    end
    else ActivateWindow(PrevWnd);
    PopupWnd := GetLastActivePopup(PrevWnd);
    if (PrevWnd <> PopupWnd) and IsWindowVisible(PopupWnd) and
      IsWindowEnabled(PopupWnd) then
    begin
{$IFDEF WIN32}
      SetForegroundWindow(PopupWnd);
{$ELSE}
      BringWindowToTop(PopupWnd);
{$ENDIF}
    end
    else ActivateWindow(PopupWnd);
    Result := True;
  end;
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Повторный запуск программы / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]