• 0
imadouzoun

الأكواد القوية ....

سؤال

// إخفاء حالة الإتصال بالإنترنت من الـ System Tray

uses 
 shellapi;

procedure TForm1.Button1Click(Sender: TObject);
var
 nt: TNotifyIconData;
begin
 with nt do
 begin
   cbSize := SizeOf(nt);
   Wnd    := FindWindow('#32770', nil);
   uid    := 0;
   uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
   uCallbackMessage := WM_USER + 17;
   hIcon  := 0;
   szTip  := '';
 end;
 Shell_NotifyIcon(NIM_DELETE, @nt);
end;

//-----------------------------------

// تغيير عنوان تطبيق اّخر

// إذا أحببت تغيير عنوان نافذة تطبيق اّخر ما عليك سوى أن تكتب الكود التالي

procedure TForm1.Button1Click(Sender: TObject); 
begin
 SetWindowText(FindWindow('المفكرة', nil), 'ArabTeam');
 // or:
 SendMessage(FindWindow('المفكرة', nil), WM_SETTEXT, 0, Integer(PChar('ArabTeam')));
end;

//-----------------------------------

// إمنع إغلاق الحاسبShutDown

// الفكرة صراحة بسيطة وغير معقدة كثيراً : وهي تعتمد على رسالة يطلقها النظام إلى جميع التطبيقات لتنهي جلساتها

//فإن هذه النظام ينهي جلساتها عندما تعيد هذه التطبيقات القيمة 0 إلى رسالة النظام ExitWindows مع النظام فعندما يقوم المستخدم باستدعاء الدالة

// و إذا أعاد أحد هذه التطبيقات القيمة 1 مثلاً فإن النظام يوقف عملية إغلاق الحاسب أو النظام

private 
 procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession;
end;

Implementation

procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
 if MessageDlg('Do You Want To End Windows Now?',
                           mtConfirmation,
                           [mbYes,mbNo], 0) = mrNo then
     Msg.Result := 0
  else
     Msg.Result := 1;
end;

//-----------------------------------

// تفحص الـ Prcess هل تعمل لأم لا ؟؟؟؟

uses 
 WinSvc;

function ServiceGetStatus(sMachine, sService: PChar): DWORD;
 {******************************************}
 {*** Parameters: ***}
 {*** sService: ليتم فتحها Process تحدد اسم المهمة أو
 {*** sMachine: الحاسب الهدف
 {*** ***}
 {*** القيم المعادة ما تمثله: ***}
 {*** -1 = Error opening service ***}
 {*** 1 = SERVICE_STOPPED ***}
 {*** 2 = SERVICE_START_PENDING ***}
 {*** 3 = SERVICE_STOP_PENDING ***}
 {*** 4 = SERVICE_RUNNING ***}
 {*** 5 = SERVICE_CONTINUE_PENDING ***}
 {*** 6 = SERVICE_PAUSE_PENDING ***}
 {*** 7 = SERVICE_PAUSED ***}
 {******************************************}
var
 SCManHandle, SvcHandle: SC_Handle;
 SS: TServiceStatus;
 dwStat: DWORD;
begin
 dwStat := 0;
 // Open service manager handle.
 SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
 if (SCManHandle > 0) then
 begin
   SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
   // if Service installed
   if (SvcHandle > 0) then
   begin
     if (QueryServiceStatus(SvcHandle, SS)) then
       dwStat := ss.dwCurrentState;
     CloseServiceHandle(SvcHandle);
   end;
   CloseServiceHandle(SCManHandle);
 end;
 Result := dwStat;
end;

function ServiceRunning(sMachine, sService: PChar): Boolean;
begin
 Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService);
end;

// Check if Eventlog Service is running
procedure TForm1.Button1Click(Sender: TObject);
begin
 if ServiceRunning(nil, 'Eventlog') then
   ShowMessage('Eventlog Service Running')
 else
   ShowMessage('Eventlog Service not Running')
end;

المبرمج عماد .. B) B)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

لي تعقيب بسيط :

// تغيير عنوان تطبيق اّخر

// إذا أحببت تغيير عنوان نافذة تطبيق اّخر ما عليك سوى أن تكتب الكود التالي

الجملة توحي بأن الكود سيقوم بتغيير عنوان أي نافذة مهما كانت ! وهو فقط مثال على احداها ..

في الجملة

FindWindow('المفكرة', nil)

إن قرأ مبتدئ هذا الكود فلن يعلم لماذا كتبنا 'المفكرة' ؟

كان من الأفضل أن نجعل المثال بصورة عامة وحينها سنقول بانه يجب معرفة إسم الـ class التابعه له النافذة -إن لم نكن نعلمه - باستخدام GetClassName وهنا سنجد أنه يجب معرفة مقبض النافذة والذي يمكننا الحصول عليه بأكثر من طريقة ...

استخدام 'المفكرة' كاسم لـ class ان كان موجوداً فقد يكون من الخطأ استعمال FindWindow يفضل استعمال FindWindowW ...

السبب : متروك لمن له اهتمام ...

إمنع إغلاق الحاسبShutDown

كلامك لا غبار عليه ...

فقط إضافة : استخدام ExitWindowsEx باسناد EWX_FORCE كـ flag يؤدي الى إغلاق الحاسب بصورة اجبارية ...

ما سبق مجرد رأي ليس إلا ... أرجو عدم فهم الرد بصورة أخرى ...

تم تعديل بواسطه cipher
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
الجملة توحي بأن الكود سيقوم بتغيير عنوان أي نافذة مهما كانت !

المبرمج الحقيقي يا أخ Cipher لا يعتمد على الوحي بل على تشغيل عقله في الكود .. هذا أولاً . :lol:

-----------------------

وهو فقط مثال على احداها ..

أي مبرمج طبعاً أنا لا أقصد المبتدئين في البرمجة يمكنه فهم الكود لأنه دالة واحدة ليس إلا .. ثم إنني لا أظن أن كلمة المفكرة سوف

تفهم على أنها من أصل الكود ... ;) ;)

----------------------

EWX_FORCE
هذا البارامتر للدالة ExitWindows كلامك هنا صحيح 100% .. أنا حقيقة لم أقصد في كلامي الحالة هذه :) .

---------------------

ما سبق مجرد رأي ليس إلا ... أرجو عدم فهم الرد بصورة أخرى ...

سماع رأيك يسعدني فنحن إن شاء الله إخوة ..

المبرمج عماد .. B) B)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم أخ عروة ... يسعد مساك :lol:

مساعدة الاّخرين من صفات العرب .. :lol:

أخوك عماد .. B) B)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .