Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.10.2011, 18:01
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию таймер

задание: запущено два окна Exel и Word, создать прогу которая закрывает второе окно через 10 сек. если закрыли первое. Помогите реализовать
Ответить с цитированием
  #2  
Старый 20.10.2011, 19:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

FindWindow, 2 таймера. Один таймер проверяет, что окна есть. Как только одно из них пропало, то первый таймер останавливается, а второй запускается и через 10 сек. убивает второе окно. Да, можно все уложить и в один таймер, но код будет непонятнее.
Ответить с цитированием
  #3  
Старый 22.10.2011, 17:31
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

хотелось бы кодом а то не совсем ясно
Ответить с цитированием
  #4  
Старый 22.10.2011, 18:47
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Вот тебе маленький пример - закрываю окно "Мой компьютер":
На форме две кнопки и Edit:
PHP код:
var
  
iHWND;   // Переменная для хранения хэндла

procedure TForm1.Button1Click(SenderTObject);
begin
  i
:= FindWindow(nil'Мой компьютер'); // Нахожу хэндл окна
  
Edit1.Text:=inttostr(i); // Вывожу в Edit
end;

procedure TForm1.Button2Click(SenderTObject);
begin
  PostMessage
(iWM_CLOSE00);  // Закрваю окно с указаным хэндлом
end
Тебе осталось организовать это все как подсказал товарищ выше.
Подскажу: если окно не будет найдено переменная i будет равна 0.
Ответить с цитированием
  #5  
Старый 25.10.2011, 17:28
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

в вин айпи только все это дело надо провернуть вот проьлема
Ответить с цитированием
  #6  
Старый 25.10.2011, 21:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В чём проблема? Вот костяк:
Код:
program Project1;

uses
  Windows, Messages;

const
  szAppName     = 'project1';
  szCaptionName = 'project1';

var
  Window        : HWND;
  Msg           : TMsg;
  WndClass      : TWndClassEX;
  PosX, PosY    : Integer;
  SizeX, SizeY  : Integer;

const
  cctrl         = 'comctl32.dll';

procedure InitCommonControls; external cctrl name 'InitCommonControls';

//---------------------------------------------------------

procedure InitApp(Wnd : HWND);
begin
end;

//---------------------------------------------------------

procedure DeInitApp(Wnd : HWND);
begin
end;

//---------------------------------------------------------

function MainProc(Wnd : HWND; Msg : Integer; wParam, lParam : Longint): Integer; stdcall;
begin
  Result := 0;

  case Msg of
    WM_CREATE :
    begin
      InitApp(Wnd);
    end;

    WM_CLOSE :
    begin
      DestroyWindow(Wnd);
    end;

    WM_DESTROY :
    begin
      DeInitApp(Wnd);
      PostQuitMessage(0);
      Exit;
    end;
  end;
  Result := DefWindowProc(Wnd, Msg, wParam, lParam);
end;

//---------------------------------------------------------

begin
  SizeX := 300;
  SizeY := 200;

  PosX := 0;
  PosY := 0;

  FillChar(WndClass, SizeOf(TWndClassEx), 0);
  WndClass.cbSize        := SizeOf(TWndClassEx);
  WndClass.style         := CS_HREDRAW or CS_VREDRAW;
  WndClass.lpfnWndProc   := @MainProc;
  WndClass.cbClsExtra    := 0;
  WndClass.cbWndExtra    := 0;
  WndClass.hInstance     := hInstance;
  WndClass.hCursor       := LoadCursor(0, IDC_ARROW);
  WndClass.hbrBackGround := GetSysColorBrush(COLOR_BTNFACE);
  WndClass.lpszClassName := szAppName;

  if RegisterClassEx(WndClass) = 0 then
    Halt(255);

  Window := CreateWindowEx(0, szAppName, szCaptionName,
                        WS_OVERLAPPEDWINDOW,
                        PosX, PosY, SizeX, SizeY, 0, 0, hInstance, NIL);

  InitCommonControls;
  ShowWindow(Window, CmdShow);

  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
  Halt(Msg.wParam);
end.
осталось добавить кнопки.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 02.12.2011, 14:48
BIG_BO BIG_BO вне форума
Прохожий
 
Регистрация: 09.10.2010
Сообщения: 29
Репутация: 10
По умолчанию

Код:
procedure asd (wnd:hwnd);
var
win:hwnd;
begin
win:= FindWindow(nil, 'Gamse');
PostMessage(win, WM_CLOSE, 0, 0);
end;

lmikle: пользуемся тегами!!!

вот добавил. окно с хендлом Gamse не закрывет

Последний раз редактировалось lmikle, 02.12.2011 в 23:56.
Ответить с цитированием
  #8  
Старый 02.12.2011, 21:22
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Значит не найдено такое окно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025