Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-68816
Ionv
2002-10-10 07:49
2002.10.21
Как вывести на эран число 16-ом виде?


3-68648
Archie
2002-09-30 11:05
2002.10.21
Как затолкать QRCompositeReport в QRPreview? Где есть информация


14-68984
Aga
2002-09-29 09:16
2002.10.21
Кто-нибудь подскажет, где можно скачать Perl


1-68762
Леха11111
2002-10-09 16:26
2002.10.21
Нужно разместить несколько строк в ячейке StringGrid.


6-68889
Yuriy
2002-08-17 15:30
2002.10.21
URL из активного окна IE




   Наверх