View Full Version : سوال: بستن پنجره برنامه از قبل اجرا شده قبل از اجرای دوباره
  
mbshareat
جمعه 13 دی 1398, 08:12 صبح
سلام
فکر می کنم این بحث یا مشابهش رو دیده بودم اما نمی دونستم چطور جستجو بدم.
من یه برنامه دارم که کنار ساعت ویندوز قرار میگیره.میخوام همیشه فقط یه نسخه از برنامه قابل اجرا باشه.یعنی اگر برنامه قبلا اجرا شده بود بسته بشه و جدید از نو اجرا بشه که دو تا آیکن برنامه در system tray نباشه.
mbshareat
جمعه 13 دی 1398, 08:39 صبح
این کد دقیقا همون که میخواستم نیست ولی کافیه:
function ProcessCount(const ExeName: String): Integer;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize:= SizeOf(FProcessEntry32);
  ContinueLoop:= Process32First(FSnapshotHandle, FProcessEntry32);
  Result:= 0;
  while Integer(ContinueLoop) <> 0 do begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeF ile)) =
      UpperCase(ExeName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeName))) then Inc(Result);
    ContinueLoop:= Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  If ProcessCount(ExtractFileName(Application.ExeName))>1 then
    Application.terminate;
persia_hrn
شنبه 21 دی 1398, 21:01 عصر
خدمت شما
151240
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.