2010-05-14 20 views
42

पर काम नहीं करता है मेरे पास सी # Winforms का उपयोग कर थोड़ी देर के लिए एक परियोजना है। विंडोज 7 जारी होने से पहले मैंने एक ड्रैग-ड्रॉप फ़ंक्शन लागू किया था। एक जादू की तरह काम किया। हालांकि, विंडोज 7 का उपयोग करते समय यह काम नहीं करता है। घटना भी ट्रिगर नहीं होती है।सी # ड्रैग ड्रॉप विंडोज 7

AllowDrop सत्य पर सेट है। DragEnter की सदस्यता लेने पर इसे विंडोज 7 में नहीं कहा जाता है (विस्टा के बारे में निश्चित नहीं है)। लेकिन एक्सपी पर यह सभी तरह से काम करता है। कार्यक्रम प्रशासकीय priviliges के साथ चलाया जाता है।

क्या विंडोज 7 बनाम xp में ड्रैग ड्रॉप में कोई अंतर है? पता नहीं है कि यह प्रासंगिक है, लेकिन मैं x64

+0

मैं एक नया Silverlight परियोजना के साथ में कुछ ऐसी ही समस्या थी। मेरे ब्राउज़र की सुरक्षा सुविधाओं के कारण ड्रैग और ड्रॉप काम नहीं कर सका। क्या आप अपने Winforms में ब्राउज़र नियंत्रण का उपयोग कर रहे हैं? – Tim

+2

मैंने देखा है कि विंडोज 7 में उन्नत अनुमतियों के साथ अनुप्रयोगों को चलाने पर, ड्रैग और ड्रॉप अक्षम हो जाता है। – sshow

उत्तर

70

का उपयोग कर रहा हूं स्रोत और लक्ष्य प्रक्रियाओं में संगत सुरक्षा स्तर \ विशेषाधिकार होना आवश्यक है। उदाहरण के लिए, यदि आपका स्रोत एक्सप्लोरर है और यह उपयोगकर्ता स्तर के विशेषाधिकारों के साथ चल रहा है, लेकिन आपका लक्ष्य एप्लिकेशन व्यवस्थापक (उन्नत) स्तर की अनुमति के साथ चल रहा है, तो आप & ड्रॉप को खींचने में सक्षम नहीं होंगे क्योंकि इसे सुरक्षा समस्या के रूप में देखा जाता है लक्ष्य उच्च स्तर के विशेषाधिकारों के साथ चल रहा है।

+0

यह सही लगता है। मैंने आईई से प्रशासनिक निजीकरण और ड्रैगड्रॉपिंग के साथ आईई चलाने की कोशिश की और यह काम किया। हालांकि, –

+4

को परेशान करने के लिए आपको जो भी बदलाव करने की आवश्यकता है उसे बदलने के लिए प्रेरणा प्रदान करनी चाहिए ताकि आपका ऐप मानक उपयोगकर्ता के रूप में चलाया जा सके। जैसे प्रोग्राम फ़ाइलों को एचकेएलएम आदि पर लिखना नहीं है –

+0

@ केट उच्च अधिकारों के साथ चलने का कारण यह है कि मुझे सेवाओं को शुरू और बंद करने की आवश्यकता है :) –

16

इसे यूआईपीआई, यूजर इंटरफेस विशेषाधिकार अलगाव कहा जाता है। सीमित विशेषाधिकारों के साथ चलने वाले कार्यक्रमों से इनपुट इंजेक्शन शोषण को रोकने के लिए डिज़ाइन किया गया। यह निष्क्रिय किया जा सकता है, तो आप ऐसा करने के लिए की आवश्यकता होगी:

  • प्रकट संशोधित करें, सही पर <requestedExecutionLevel> तत्व के लिए uiAccess विशेषता निर्धारित किया है।
  • स्टोर अपने कार्यक्रम के EXE सी की उप-निर्देशिका के: \ windows या c: \ प्रोग्राम फ़ाइलें
  • पर हस्ताक्षर करने के अधिकार

वास्तव में इस की कोशिश की कभी एक मान्य कोड से एक प्रमाणपत्र के साथ अपने EXE साइन, YMMV।

+1

+1 अच्छा जवाब :) इसे हल करने के तरीके को साफ़ करने के लिए धन्यवाद। हालांकि मेरे लिए इसके लायक नहीं है :) –

2

आपके आवेदन से, निम्न मानों के साथ ChangeWindowMessageFilter फोन को खींचने और छोड़ने की अनुमति के लिए/अपने बुलंद आवेदन और गैर उठाया अनुप्रयोगों से एक्सप्लोरर जैसे:

ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ADD); 
ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ADD); 
ChangeWindowMessageFilter (0x0049, MSGFLT_ADD); 
+3

ड्रैग + ड्रॉप अब विंडो संदेशों का उपयोग नहीं करता है, ChangeWindowMessageFilter काम नहीं करता है। –

+1

@ हंसपैसेंट क्या आप कुछ विवरण कृपया प्रदान कर सकते हैं? – ken2k

+0

@ केन 2k - इससे परे बहुत कुछ कहना नहीं है। डी + डी अब COM, IDropSource और IDropTarget में कार्यान्वित किया गया है मुख्य इंटरफेस हैं। –

1

dmex पद के लिए एक माइनर अलावा। निम्नलिखित चर और स्थिर परिभाषित करता है।

private const uint WM_DROPFILES = 0x233; 
private const uint WM_COPYDATA = 0x004A; 
private const uint WM_COPYGLOBALDATA = 0x0049; 
private const uint MSGFLT_ADD = 1; 

इसके अलावा, आप ChangeWindowMessageFilterEx का उपयोग कर यदि आप कर रहे हैं आवेदन मैं यह भी मानना ​​है कि OLE खींचें और ड्रॉप विंडोज संदेश का उपयोग नहीं कर सकते हैं विंडोज 7 पर है पर विचार कर सकते। तो यह बिल्कुल प्रभावित नहीं होगा।

1

यह असंबंधित हो सकता है, लेकिन मुझे विंडोज 8 के साथ डरावना-एन-ड्रॉप मुद्दों का सामना करना पड़ रहा था। यह थोड़ी देर के लिए काम करेगा और फिर काम करना बंद कर देगा। मैं एक संपादक में एक्सप्लोरर के बीच ड्रैग-एन-ड्रॉप नहीं कर सका। यह पता चला है कि जब मैंने एक हाइपर-वी वीएम विंडोज 7 चलाने के साथ बातचीत की, तो मेरी ड्रैग-एन-ड्रॉप क्षमता बदल दी गई (या शायद यह था हाइपर-वी में crtl-alt-delete को अनुकरण करने के लिए ctrl-alt-end keystroke)। किसी भी घटना में, एक समस्या आई थी, निम्नलिखित इसका समाधान नहीं:

मैं मेरी समस्या यहाँ करने के लिए संकल्प पाया: Fix Drag Drop Functionality Not Working In Windows 7 Vista XP

मूल रूप से समाधान किया गया था:

एक्सप्लोरर में एक फ़ाइल पर वाम क्लिक करें , और माउस बटन दबाए रखते हुए, [Esc] दबाएं [Ctrl], फिर माउस बटन को छोड़ दें। मुझे यह मानना ​​है कि यह कुछ अभिगम्यता सेटिंग या कुछ रीसेट कर रहा है।

0

वीएस 2015 और विंडोज 7 एक्स 64 से एसओ के रूप में डेस्कटॉप सी # एप्लिकेशन को डीबग करते समय मुझे एक ही समस्या थी। यह व्यवस्थापक अनुमति डेस्कटॉप में मेरे वीएस आईडीई के शॉर्टकट पर लागू होता है (स्क्रीनशॉट देखें) के कारण था। इस विकल्प को अनचेक करना & ड्रॉप ईवेंट ठीक से बढ़ाएं।

उनकी मदद के लिए टिमलोयड के लिए धन्यवाद।

enter image description here

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