2009-12-20 6 views
5

मेरे पास एक सी # एप्लिकेशन है जो विशिष्ट तर्कों और प्रारंभिक निर्देशिकाओं के साथ अन्य प्रोग्राम लॉन्च करने के लिए शॉर्टकट बनाता है। मैं चाहता हूं कि उपयोगकर्ता विंडोज फॉर्म से एक शॉर्टकट खींचने में सक्षम हो और डेस्कटॉप, स्टार्ट मेनू, और इसी तरह कहीं भी प्रासंगिक हो, लेकिन मुझे वास्तव में यह नहीं पता कि इसे कैसे संभालना है, क्या कोई मुझे मुझे इंगित कर सकता है सही दिशा?एक गतिशील रूप से बनाए गए शॉर्टकट को खींचें और छोड़ें

मैं this one तरह PInvoke और IShellLink का उपयोग कर कुछ नमूने देखा, या तो here की तरह पर जवाब है, जो पहले से ही शॉर्टकट बनाने में मदद और उन्हें एक .lnk फ़ाइल में बचाने पढ़ा है। मुझे लगता है कि उपयोगकर्ता को DoDragDrop() कॉल में डेटा सौंपना होगा जब उपयोगकर्ता ड्रैग ऑपरेशन शुरू करता है, उदाहरण के लिए MouseDown सिग्नल को संभालने से। जहां तक ​​मुझे मिल गया, मुझे लगता है कि मुझे यह जानने की ज़रूरत है कि लक्ष्य किस प्रकार ड्रॉप को स्वीकार करने की उम्मीद कर रहा है, और शॉर्टकट को क्रमबद्ध करने के लिए कैसे, लेकिन उस हिस्से पर कोई जानकारी नहीं मिली।

शायद एक और विकल्प ड्रॉप के स्थान को प्राप्त करना होगा, और मेरे आवेदन से इसे प्रबंधित करना होगा, लेकिन फिर मैं थोड़ा सा मूर्खतापूर्ण हूं कि यह कैसे करना है।

फ्रेमवर्क संस्करण वर्तमान में 3.5 है, और मैं केवल विंडोज प्लेटफॉर्म पर विचार कर रहा हूं।

आपकी मदद के लिए अग्रिम धन्यवाद!


अपडेट/समाधान:

private void picShortcut_MouseDown(object sender, MouseEventArgs e) 
{ 
    ShellLink link = new ShellLink(); 

    // Creates the shortcut: 
    link.Target = txtTarget.Text; 
    link.Arguments = txtArguments.Text; 
    link.Description = txtDescription.Text; 
    link.IconPath = txtIconFile.Text; 
    link.IconIndex = (txtIconIndex.Text.Length > 0 ? 
     System.Int32.Parse(txtIconIndex.Text) : 0); 
    link.Save("tmp.lnk"); 

    // Starts the drag-and-drop operation: 
    DataObject shortcut = new DataObject(); 
    StringCollection files = new StringCollection(); 
    files.Add(Path.GetFullPath("tmp.lnk")); 
    shortcut.SetFileDropList(files); 
    picShortcut.DoDragDrop(shortcut, DragDropEffects.Copy); 
} 
:

ShellLink code एक अस्थायी शॉर्टकट फ़ाइल बनाने के लिए ऊपर उल्लेख किया है का उपयोग करना, मैं बस DataObject खींचें और ड्रॉप के लिए निम्न उदाहरण में प्रयोग किया जाता है, जैसे

यदि आप PInvoke कोड (यहां नहीं दिखाए गए) पर विचार करते हैं तो काफी जटिल है, और मुझे अभी भी इस अस्थायी फ़ाइल को लक्ष्य नाम के साथ बनाना होगा। अगर कोई जानता है ... एर्म, शॉर्टकट, इसका स्वागत है! शायद कोड को पोर्ट करके John Knoeller ने एक लिंक दिया (धन्यवाद!)।

उत्तर

4

रेमंड चेन अपने ब्लॉग पर इस विषय पर बहुत एक पूरे लेख dragging a virtual file

+0

दिलचस्प लेख। यह आईडीटाओब्जेक्ट इंटरफ़ेस का उल्लेख करता है, अपने आप को थोड़ा सा खोज करने के बाद मुझे एक अस्थायी फ़ाइल से शॉर्टकट खींचने और छोड़ने का एक तरीका मिला, जिसे मुझे वैसे भी बनाना है। – RedGlyph

1

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

Drag and Drop link

+0

धन्यवाद की जाँच, लेकिन उस बूंद हिस्सा संभाल और वहाँ से एक शॉर्टकट बनाना नहीं होगा किया था? मैं दूसरे भाग की तलाश में हूं। एक्सप्लोरर द्वारा 'IWshShortcut' प्रकार स्वीकार नहीं किया गया है, ऐसा लगता है, इसलिए मैं अपने शॉर्टकट को अस्थायी नाम के तहत भी सहेज नहीं सकता और इसे 'DoDragDrop()' विधि में पास कर सकता हूं, लेकिन शायद मुझे कुछ याद आ रहा है? – RedGlyph

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