मेरे पास एक सी # एप्लिकेशन है जो विशिष्ट तर्कों और प्रारंभिक निर्देशिकाओं के साथ अन्य प्रोग्राम लॉन्च करने के लिए शॉर्टकट बनाता है। मैं चाहता हूं कि उपयोगकर्ता विंडोज फॉर्म से एक शॉर्टकट खींचने में सक्षम हो और डेस्कटॉप, स्टार्ट मेनू, और इसी तरह कहीं भी प्रासंगिक हो, लेकिन मुझे वास्तव में यह नहीं पता कि इसे कैसे संभालना है, क्या कोई मुझे मुझे इंगित कर सकता है सही दिशा?एक गतिशील रूप से बनाए गए शॉर्टकट को खींचें और छोड़ें
मैं 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 ने एक लिंक दिया (धन्यवाद!)।
दिलचस्प लेख। यह आईडीटाओब्जेक्ट इंटरफ़ेस का उल्लेख करता है, अपने आप को थोड़ा सा खोज करने के बाद मुझे एक अस्थायी फ़ाइल से शॉर्टकट खींचने और छोड़ने का एक तरीका मिला, जिसे मुझे वैसे भी बनाना है। – RedGlyph