View Full Version : سوال: بستن پنجره برنامه از قبل اجرا شده قبل از اجرای دوباره
mbshareat
جمعه 13 دی 1398, 07:12 صبح
سلام
فکر می کنم این بحث یا مشابهش رو دیده بودم اما نمی دونستم چطور جستجو بدم.
من یه برنامه دارم که کنار ساعت ویندوز قرار میگیره.میخوام همیشه فقط یه نسخه از برنامه قابل اجرا باشه.یعنی اگر برنامه قبلا اجرا شده بود بسته بشه و جدید از نو اجرا بشه که دو تا آیکن برنامه در system tray نباشه.
mbshareat
جمعه 13 دی 1398, 07: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, 20:01 عصر
خدمت شما
151240
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.