Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не открыть бы несколько раз... ...окно моего приложения... 
:(
    Опции темы
_hunter
Дата 21.5.2004, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



to Chyslyvchyk
подключи Windows.pas


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Chyslyvchyk
Дата 21.5.2004, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: 1
Всего: 5



Дык вроде прописано:
uses
Windows, ...


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
_hunter
Дата 21.5.2004, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



фиг его знает smile.gif
тогда просто определи такое сообщение и при его получении разворачивай форму


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
z-END
Дата 21.5.2004, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Chyslyvchyk
FindWindow возвращает handle окна соответственно a должна быть - Thandle или Cardinal как тебе больше понравитьсяsmile.gif
а по поводу WM_ACTIVEAPP то можно сделать так:
Код
const WM_MYACTIVEAPP=66655;

и использовать вместо WM_ACTIVEAPP ее



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
<Spawn>
Дата 21.5.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



WM_ACTIVATEAPP в Messages лежит


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
_hunter
Дата 21.5.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



???
а как это:
Цитата
Declared in Winuser.h, include Windows.h

понимать?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Chyslyvchyk
Дата 21.5.2004, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: 1
Всего: 5



To All: WM_ACTIVATEAPP точно в Messages лежит smile.gif

To nJIaKca.spb:
...
private
procedure WndProc(var Message: TMessage); override;
....
procedure TForm1.WndProc(var Message: TMessage);
begin
if (Message.Msg = WM_ACTIVATEAPP) and (Message.WParam = Handle)
then
begin
А КАКИЕ, НАПРИМЕР, НЕОБХОДИМЫЕ ДЕЙСТВИЯ ПО РАЗВЕРТЫВАНИЮ ПРОГИ НУНО ЗДЕСЬ ВЫПОЛНЯТЬ? smile.gif
end
else
inherited
end;



--------------------
Простота - сестра таланта!
PM MAIL   Вверх
z-END
Дата 22.5.2004, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Chyslyvchyk
ну например
Код
Form1.Show;
 Form1.WindowState := wsNormal;
 Applcation.Restore;
ShowMessage('Программа уже запущена');

ну и т.п. все зависит от того как у тебя сприятана прога и че необходимо сделатьsmile.gif


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
<Spawn>
Дата 22.5.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Цитата(_hunter @ 21.5.2004, 09:25)
???
а как это:
Цитата
Declared in Winuser.h, include Windows.h

понимать?

Ну дак это для Си smile.gif В Дельфях свои модули.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Chyslyvchyk
Дата 22.5.2004, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: 1
Всего: 5



НичАво не работает....
Так, гляньте, что не так. В project.dpr прописывается:
Код
program Project1;

uses
 Windows,
 syncobjs,
 Forms,
 Messages,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var
a : Thandle;

begin
if (FindWindow (PAnsiChar ('Tform1'), PAnsiChar ('Form1')) = 0)
   or
 (FindWindow (nil, PAnsiChar ('Delphi 6')) <> 0)
{когда запущен Delphi то прога может найти это же окно в delphi и передумать запускаться}
then          
begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end
else
begin
 a := FindWindow (PAnsiChar ('TForm1'),PAnsiChar('Form1'));
SendMessage(A, WM_ACTIVATEAPP, a, 0); //посылает сообщение с параметром равным handle окна
end;
end.


В юнит:
Код
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ShellAPI;
type
 TForm1 = class(TForm)
 
 private
    procedure WndProc(var Message: TMessage); override;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WndProc(var Message: TMessage);
begin
if (Message.Msg = WM_ACTIVATEAPP) and (Message.WParam = Handle)
  then
    begin
        Form1.Show;
        //Form1.WindowState := wsNormal;
        //Applcation.Restore;
        ShowMessage('Программа уже запущена');
    end
else
  inherited
end;

end.


To nJIaKca.spb:
Цитата
ну и т.п. все зависит от того как у тебя сприятана прога и че необходимо сделать
Нужно только форму развернуть, када она свернутая.


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
z-END
Дата 22.5.2004, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Chyslyvchyk
сразу скажу при запущеных дельфях это неработаетsad.gif
у тя хоть сообщение появлентся что прога запущена?
а вообще для того чтобы развенруть форму нуно WindowSate:=wsNormal а если у тебя приложение свернуто то Application.Restore
Добавлено @ 19:49
ЗЫ если тебя это неустраивает то убери етот кусок
Цитата
  or
(FindWindow (nil, PAnsiChar ('Delphi 6')) <> 0)
{когда запущен Delphi то прога может найти это же окно в delphi и передумать запускаться}

но тогда (по крайней мере у меняsmile.gif ) прога при запуске находит Design-Time форму и не запускается...


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Chyslyvchyk
Дата 22.5.2004, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: 1
Всего: 5



nJIaKca.spb: Все работает, если проект в дельфях закрыть. hehe.gif
Только проблемка в том, что и WindowSate:=wsNormal, и Application.Restore - просто разворачивают прогу фоном, а фокус на нее не передают. Было испробовано сначала удалить одну запись, потом другую. А нужно, чтобы она еще и поверх всех окон "вылазила". smile.gif


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
z-END
Дата 23.5.2004, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Chyslyvchyk для этого используй BringToFront а еше лучше SetForegroundWindow щас нет Дельфей под руками так что более конкретно сказать несмогу.
а чтобы поверх всех то это FromStyle:=fsStayonTop и Application.RestoreTopMost

Это сообщение отредактировал(а) nJIaKca.spb - 23.5.2004, 19:37


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Akella
Дата 24.5.2004, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



В процедуре показа формы напиши
Код
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);

PM MAIL   Вверх
Albinos_x
Дата 27.5.2004, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Также можно прописать приведённый пример в
procedure TForm1.FormCreate(Sender: TObject);
и перед завершение проги выдавать сообщение
ShowMessage()
с предупреждением, что прога уже запущена!

Это сообщение отредактировал(а) Albinos_x - 27.5.2004, 22:05


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.