الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الفورم الرئيسي مخفي كيف أظهره بضغط أزرار؟؟

مغلق
بدأه essam7 في 14 يوليو 2005 · 7 رد · 742 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي برنامج بعمل خلفيا أي ان الفورم الرئيسي مخفي كيف اظهر الفورم الرئيسي بضغط الازرار التالية مثلا Ctrl+Shift+Alt+a

ثم أعود وأخفيه مرة أخرى بضغط اسكيب مثلا؟؟

ولكم الشكر

#2

اخي العزيز مسالة اخفاءه و إظهاره مش مشكلة

المشكلة في التقاط عدة ازرار مع بعض بالذات اربعة ازرار مع بعض !!!

والحل كالتالي

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

  begin
   If ((GetKeyState(VK_CONTROL) AND 128)=128) and
      ((GetKeyState(VK_SHIFT)      AND 128)=128) and
      ((GetKeyState(VK_MENU)   AND 128)=128) and
      ((GetKeyState(ord('A'))   AND 128)=128)

     then
       ShowMessage('CTRL+Alt+Shift+A Pressed');
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
 KeyPreview:=true;
 end;

الكود مجرب

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#3

وهذه طريقة اخري لكن الفرق ليس جذريا

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 var
    KeybState: TKeyboardState;
 begin
   GetKeyboardState(KeybState);
   If ( (KeybState[VK_CONTROL] and 128)=128 ) and
      ( (KeybState[VK_F5]      and 128)=128 ) and
      ( (KeybState[Ord('8')]   and 128)=128 )
     then
       ShowMessage('CTRL+F5+8 Pressed');
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
 KeyPreview:=true;
 end;

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#4

شكرا جزيلا عزيزي

لكن ليتك جربت الكود !!

كيف يتحسس التطبيق أو بالاحرى الفورم للمفاتيح وهو مخفي أي ليس أكتيف؟؟؟؟

المشكلة عندي ليست بالمفاتيح وانما كيف يتحسس ؟؟؟؟؟

#5

استفد من الوحدة KEYBOARD , وضمن timer ضع شفرة المعالجة , والتي تسمح لك باختبار الضغط حتى لو كان الفورم مصغرا أو غير مفعل

USES KEYBOARD;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if IsKeyDown(VK_Escape) then
Application.Restore;
end;
#6
اقتباس
استفد من الوحدة KEYBOARD

???? أين هي ؟؟لم يتعرف عليها؟؟

#7

اشكر من حاول المساعدة من كل قلبي...

وجدت الجواب من أحد الاخوة جزاه الله عني خير الجزاء

ان اردنا أن يكون البرنامج مخفيا بداية نضع في :

project|view source

وقبل سطر application.run نكتب application.showmainform:= false

يجب محو سطر application.runفي كل الاحوال

وهذا الكود بالاسفل

نلاحظ عند ضغط alt+ctrl+shift+f10+f12 يظهر الفورم

ثم esc لاخفائه مرة اخرى

var
  Form1: TForm1;
  bcancel: bool;
implementation

{$R *.dfm}
procedure ProcessMessages;
var
  myMessage: Msg;

begin
  While (Not bCancel) do
  begin
    WaitMessage;
     //'check if it's a HOTKEY-message
    If PeekMessage(myMessage, Form1.Handle, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
      Form1.Visible:= true;
   //'let the operating system process other events
    Application.ProcessMessages;
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle,$BFFF,MOD_ALT or MOD_SHIFT or MOD_CONTROL,VK_F10 or VK_F12);
  Form1.Show;
  ProcessMessages;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  bcancel:= true;
  UnregisterHotKey(Handle, $BFFF);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  IF key= 27 then
    Form1.Visible:= false;
end;

end.

عزيزي عروة

لم ترد علي بشأن المكتبة السابقة؟؟؟

على كل انظر الكود :

procedure TForm1.Timer1Timer(Sender: TObject);
VAR
  KS: TKeyboardState;
begin
  GetKeyboardState(ks);
  if (ks[66]= 128) or (ks[66]= 129) then
    Form1.Visible:= true;
end;

عندما الفورم مخفي لم يظهر لكن عندما استبدلت Form1.Visible:= true بـ أي تعليمة والفورم ظاهر نفذت التعليمة مما يعني أنه لا يتحسس للكيبورد ولو داخل التايمر

يا ريت تتأكد وتجرب

على كل بدي همتك بالتصال دون معرفة كلمة السر(سؤال سابق) ماشي!!!

#8

سأحاول المساعدة عند توفر الوقت ,, .. ولكني للأسف (أو من الأفضل القول الحمد لله) وقعت على عدة عقود أعمال ويجب أن أنهيها جميعا , وهذا مايجعل تواجد على الإنترنت قليل ..

هذه هي المشكلة , عند تحسن العمل , بقل التوزاجد مع الأحباء

هذا الموضوع مغلق.

مواضيع مشابهة