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

Вниз

Загрузка приложения   Найти похожие ветки 

 
KVBr   (2002-10-11 15:56) [0]

Загрузка приложения происходит несколько секунд. Если нетерпеливый пользователь во время загрузки кликает на иконку еще раз, то вылетает ошибка. Как этого избежать?


 
neodiX   (2002-10-11 16:00) [1]

Автор не я, некий "Vladimir" (damageinc@e-mail.ru)

program My1;uses Forms, Windows, Dialogs, SysUtils,var g_hAppMutex: THandle; Wnd : hWnd; buff: array [0..127] of Char; s:string; i:integer;function OneInstance: boolean;begin g_hAppMutex:=CreateMutex(nil,false,PChar("AnUniqueString"+IntToStr(GetDesktopWindow))); Result:=(WaitForSingleObject(g_hAppMutex,0)<>WAIT_TIMEOUT);end;begin Application.Initialize; Application.Title := "SmartDecoder"; Application.HelpFile := "Decoder.hlp"; //создаём инстанс, если его ещё нету на текущем рабочем столе g_hAppMutex:=0; if OneInstance then begin
Application.CreateForm(TMainFrm, MainFrm); Application.R!
un; end; if LongBool(g_hAppMutex) then //если уже есть begin ReleaseMutex(g_hAppMutex); CloseHandle(g_hAppMutex); if ParamStr(1)="" then ShowMessage("Программа уже запущена на этом рабочем столе. Нажмите кнопку "OK" для передачи управления уже запущенной копии программы."); Wnd:=GetWindow(GetTopWindow(0),gw_HWndFirst); while Wnd<>0 do begin //Если не собственное и не дочернее окно if (Wnd<>Application.Handle)and(GetWindow(Wnd,gw_Owner)=0) then begin
GetWindowText(Wnd,buff,sizeof(buff!
)); if Copy(StrPas(buff),1,12)="SmartDecoder" then if Wnd=GetWindowLong(Wnd,GWL_USERDATA) then begin ShowWindow(Wnd,SW_ShowNormal); SetForegroundWindow(Wnd); i:=1; while ParamStr(i)<>"" do begin s:=ParamStr(i);
PostMessage(Wnd,WM_OPEN_FILE,GlobalAddAtom(PChar(s)),0); &!
nbsp; inc(i); end; Application.Terminate; Exit; end; end; Wnd:=GetWindow(Wnd,gw_hWndNext); end; end;end.
Если программа уже запущена, управление будет передано существующей
копии.


 
neodiX   (2002-10-11 16:04) [2]

Блин! Короче я тебе майл сейсас вышлю...


 
REA   (2002-10-11 16:05) [3]

Ну замутили... я как то попроще делал.


 
neodiX   (2002-10-11 16:07) [4]

Согласен есть и проще, но иногда главное что бы рабатоло.


 
Pumpkin   (2002-10-11 16:08) [5]

http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988619824&n=15


 
Zemal   (2002-10-11 16:10) [6]

Я предложу более простой вариант без всяких заморочек:

program Program1;

uses
Forms,
Windows,
Dialogs,
uMain in "uMain.pas" {fMain};

{$R *.res}

var
UniqueMapping: THandle;
begin
UniqueMapping := CreateFileMapping($ffffffff,
nil, PAGE_READONLY, 0, 32, "MyMap");
if UniqueMapping = 0 then
begin
ShowMessage("Ошибка выделения памяти!");
Halt;
end else
if GetLastError = ERROR_ALREADY_EXISTS then
begin
ShowMessage("Вторую копию запускать нельзя!");
Halt;
end;
Application.Initialize;
Application.CreateForm(TfMain, fMain);
Application.Run;
end.

Пользуйся наздоровье :).




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

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

Наверх





Память: 0.56 MB
Время: 0.078 c
7-69046
maxim2
2002-08-13 13:39
2002.10.21
Можно ли заблокировать правую кнопку мыши?


4-69056
Polevi
2002-09-06 14:38
2002.10.21
наследование OVERLAPPED


1-68737
The
2002-10-11 11:49
2002.10.21
слетела справка в виде НТМЛ (файлы *.chm)


3-68618
Filat
2002-09-29 12:23
2002.10.21
СРОЧНО!!!! User


14-68949
FLIZ
2002-09-27 17:04
2002.10.21
я просто фигел, вот полюбуйтесь





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский