Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Открыть ParamStr(1) и не загрузить программу заново.   Найти похожие ветки 

 
Adil ©   (2006-07-01 00:08) [0]

Как это делается?? Мне надо делать так чтобы когда Открывал файл(файл открывается через мою прогу) он не загружал прогу если оно уже есть, а открывал его в сушествующем окне проги.

Многие способы придумал от WinAPI до COM. На некоторых(а может у всех) это через DDE делали.

Вообшим как это законно делат??


 
koha   (2006-07-01 06:14) [1]

В вайле проекте .dpr может быть стоит использовать функцию FindWindow("Class окна","Caption окна") для поиска уже запущенной копии своей проги. Вот например сдесь прога будет запускаться находить свою копию уже запущенной и вырубаться, а ты в своем случае можешь послать сообщение своей проге.

program New;
uses
 Forms,SysUtils,Windows,Classes,
 Unit1 in "Unit1.pas" {Fm};
Var
 hw: HWND;
{$R *.res}

begin  

 if FindWindow("TFm","Fm") <> 0 then Application.Terminate;

 Application.Initialize;
 Application.CreateForm(TFm, Fm);
 Application.Run;
end.


 
Юрий Зотов ©   (2006-07-01 12:33) [2]

> koha   (01.07.06 06:14) [1]

Это не самый лучший способ. Многие программы довольно долго инициализируются ДО создания своего первого окна. Если в это время запустить вторую копию, то FindWindow, естественно, ничего не найдет и она спокойно запустится. А также запустятся третья копия, четвертая и т.д. - сколько угодно, пока одна из копий не создаст окно.

Давайте отвлечемся от окон и посмотрим на саму идею. Она состоит в том, что первая копия создает в системе некий уникальный объект, а другие копии проверяют существование этого объекта.

В приведенном Вами примере таким объектом выбрано окно. Но кто сказал, что им может быть только окно? Никто. Им может служить любой объект, к которому система разрешает глобальный доступ. Например, memory mapped file, мьютекс, семафор и пр.

Преимущество такого решения состоит в том, что если программа требует длительной инициализации, то создавать окно ПЕРЕД ней - плохо (получится как бы "зависшее" окно и чтобы избежать эффекта "зависания", придется мудрить с потоками, что усложняет программу). А вот создать перед этой инициализацией не окно, а НЕВИДИМЫЙ объект - это никто мешает и это никому не мешает. И программа практически не усложняется.

> Adil ©   (01.07.06 00:08)

Здесь пример готового решения:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=904


 
Desdechado ©   (2006-07-01 13:32) [3]

а что значит "Открыть ParamStr(1)" ?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
2-1151515879
GudenTak
2006-06-28 21:31
2006.07.16
функция PosEx


1-1149059111
n-neo
2006-05-31 11:05
2006.07.16
Работа с большими числами


2-1151498664
UMU
2006-06-28 16:44
2006.07.16
Объединение строк в Rave Reports


6-1141329303
Aven
2006-03-02 22:55
2006.07.16
Сокеты без окон


15-1150368553
DillerXX
2006-06-15 14:49
2006.07.16
ftp.exe почему не работает?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский