کامپوننت Kylix_SMS_v5.5.0.4_Fulll
function TForm1.ServiceIsPresent(sMachine, sService: PChar): Boolean;
var
SCManHandle, SvcHandle: SC_Handle;
begin
SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
if (SCManHandle > 0) then
begin
SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
if (SvcHandle > 0) then
begin
Result := True;
CloseServiceHandle(SvcHandle);
end
else
Result := False;
CloseServiceHandle(SCManHandle);
end;
end;
روش استفاده :
if ServiceIsPresent(nil,pchar('sqlserver')) then
// some code
end;
در صورتیکه نام سرویس را میدانیم و میخواهیم فولدری که از آنجا اجرا شده را بیابیم :
function TForm1.GetServiceExecutablePath(strMachine: string; strServiceName: string): String;
var
hSCManager,hSCService: SC_Handle;
lpServiceConfig: PQueryServiceConfigA;
nSize, nBytesNeeded: DWord;
begin
Result := '';
hSCManager := OpenSCManager(PChar(strMachine), nil, SC_MANAGER_CONNECT);
if (hSCManager > 0) then
begin
hSCService := OpenService(hSCManager, PChar(strServiceName), SERVICE_QUERY_CONFIG);
if (hSCService > 0) then
begin
QueryServiceConfig(hSCService, nil, 0, nSize);
lpServiceConfig := AllocMem(nSize);
try
if not QueryServiceConfig(
hSCService, lpServiceConfig, nSize, nBytesNeeded) Then Exit;
Result := lpServiceConfig^.lpBinaryPathName;
finally
Dispose(lpServiceConfig);
end;
CloseServiceHandle(hSCService);
end;
end;
end;
روش استفاده :
mysql_dir := GetServiceExecutablePath('','mysql');
procedure TForm1.DeleteDirectory(const DirName: string);
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), 0);
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(DirName+#0);//double zero-terminated
FileOp.fFlags := FOF_SILENT or FOF_NOERRORUI or FOF_NOCONFIRMATION;
SHFileOperation(FileOp);
end;
باید ShellAPI را به uses اضافه نمایید.
اضافه کردن یونیت :
Tlhelp32
اضافه کردن تابع :
function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
طریقه استفاده :
procedure TForm1.btnOKClick(Sender: TObject);
begin
KillTask('NameOfProgram.exe');
end;
قسمت رسانه چجوری میشه کاری کرد که هر کسی فقط فایل هایی که خودش اپلود کرده رو ببینه،؟
add_filter( 'ajax_query_attachments_args','wpmaster_restrict_media_library_to_none_admin');
function wpmaster_restrict_media_library_to_none_admin( $args )
{
if(current_user_can('manage_options')) return $args;
$args['author'] = get_current_user_id();
return $args;
}
اگر مقدار خرید کاربر مثلا از ۱۰۰ هزار تومان بیشتر شد یه درصدی تخفیف بهش بدم. نه برای یه محصول فقط برای کل سبد میخوام اینکار رو کنم.
با استفاده از افزونه Woocomerce dynamic pricing discount میشه این کار رو کرد
افزونه woocommerce bulk price update
تغییر قیمت محصولات بدون ویرایش محصول
برای برطرف نمودن این خطا به رجیستری رفته و مسیر زیر را دنبال نمایید
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations