2009-07-23 14 views
8

मुझे फॉर्म को शीर्ष स्तर के सिस्टम-व्यापी के रूप में दिखाने की ज़रूरत है, उदा। स्क्रीन पर/सभी/अन्य खिड़कियां। मुझे एहसास है कि यह आमतौर पर/खराब यूआई अभ्यास/है, लेकिन मेरे मन में बहुत विशिष्ट परिदृश्य है।सी # का उपयोग कर फॉर्म सिस्टम मोडल कैसे बनाएं?

हम पीओएस नकद रजिस्ट्रारों के लिए सामान्य विंडोज पीसी का उपयोग करना चाहते हैं। नकद दराज खोलने के लिए स्क्रीन पर एक विकल्प है। किसी के लिए स्क्रीन पर कुछ दबाए रखना और क्लर्क दिखने पर पैसे तक पहुंचने के लिए यह बुरा होगा। इसलिए हमने आरएफआईडी पाठकों के साथ पीसी को लैस किया और प्रत्येक क्लर्क के पास अपना स्वयं का आरएफआईडी कार्ड है जिसका उपयोग प्रमाणीकरण के लिए किया जाएगा।

क्लर्क दूर होने पर मुझे कंप्यूटर को लॉक करने या इसे अनुपयोगी बनाने के लिए एक तंत्र की आवश्यकता है। लॉगिंग बंद एक उपद्रव का बहुत अधिक लगता है।

कोई भी विचार आपका स्वागत है।

एल.पी., डेजन

+0

तो मूल रूप से यदि आप Windows के लॉकिंग भाग reimplement करना चाहते हैं? खैर, सुरक्षा प्राप्त करने के साथ अच्छी किस्मत काफी अच्छी है। –

+0

नहीं, मुझे ऐसा करने का कोई इरादा नहीं है। आदर्श रूप में, मैं विंडोज़ के लॉकिंग हिस्से का उपयोग/उपयोग/करना चाहता हूं। यदि आपको पता है कि इसे सी # से कैसे किया जाए, तो मुझे जानकर खुशी होगी। –

+2

थर क्लर्क Win + L कुंजी का उपयोग कर विंडो को लॉक कर सकता है। जब वह वापस आता है तो वह अपना पासवर्ड दर्ज करके इसे अनलॉक कर सकता है। क्या वह काम नहीं करेगा? – chikak

उत्तर

8

खैर, परीक्षण और त्रुटि के एक दिन के बाद मैं समाधान की तरह आया।

यह निम्न चरण शामिल हैं:

1. जब "लॉक" बटन नए (खाली)/डेस्कटॉप दबाया जाता है/बनाया जाता है। प्रोग्राम इस डेस्कटॉप में पूर्ण स्क्रीन फॉर्म और लॉगिन प्रक्रिया के साथ चलाया जाता है। इस डेस्कटॉप पर स्विच या चलाने के लिए और कुछ नहीं है।

2. कार्य प्रबंधक रजिस्ट्री के माध्यम से अक्षम है। बेशक, कोई भी अनइविटेड अभी भी Ctrl-Alt-Delete मेनू तक पहुंच सकता है, लेकिन वहां कुछ विशेष हानि नहीं है जो वह कर सकता है।

3. Alt-F4 और ऐसे अक्षम हैं।

4. प्रमाणीकरण कब किया जाता है, प्रोग्राम मूल डेस्कटॉप पर वापस स्विच करता है और सबकुछ सामान्य के रूप में आता है।

कुछ पी/Invoking आवश्यक है, निश्चित रूप से। किसी ऐसी ही कुछ करना चाहती है, तो शायद s/वह मेरे नंगे हड्डियों उदाहरण सहायक होगी - link text

एल.पी., डेजन

-2

फार्म एक सर्वोच्च संपत्ति है।

सेट Form.TopMost = true

+0

यह मदद नहीं करता है। कोई बस विंडोज कुंजी दबा सकता है। –

1

मुझे लगता है कि आप Win32 एपीआई के लिए नीचे बुला इस लक्ष्य को हासिल करने के लिए इस पर गौर करने की आवश्यकता होगी।

आप इस पर गौर करना होगा:

ShowWindow और SetWindowPos

और निम्न के समान कोड के साथ उन्हें आह्वान (ध्यान दें कि यह छद्म कोड है):

[DllImport("user32.dll")] 
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

static void ShowTopmost(Form frm) 
{ 
    ShowWindow(frm.Handle, SW_SHOWMAXIMIZED); 
    SetWindowPos(frm.Handle.ToInt32(), HWND_TOPMOST, 
     0, 0, [width of desktop], [height of desktop], 
     SWP_SHOWWINDOW); 
} 
+0

सुझाव के लिए धन्यवाद, हालांकि मैं एक और मार्ग चला गया ... –

संबंधित मुद्दे