உங்கள் விண்டோஸ் படிவங்கள் பயன்பாட்டில் அவுட்லுக் இணைப்புகளை தடையின்றி ஒருங்கிணைக்கவும்
மைக்ரோசாஃப்ட் அவுட்லுக்கில் ஒரு முக்கியமான மின்னஞ்சல் இணைப்பைப் பெறுவதையும், உங்கள் தனிப்பயன் பயன்பாட்டிற்குள் அதை விரைவாகச் செயல்படுத்துவதையும் கற்பனை செய்து பாருங்கள். 📨 நீங்கள் .NET 6 மற்றும் Windowsக்கான புதிய Outlook ஐப் பயன்படுத்துகிறீர்கள் எனில், இழுத்து விடுதல் செயல்பாடு சிரமமின்றி வேலை செய்யும் என்று எதிர்பார்க்கலாம். இருப்பினும், இந்த அம்சத்தை Windows Forms பயன்பாட்டில் ஒருங்கிணைப்பது எப்போதும் நேரடியானதல்ல.
சமீபத்தில், ஒரு திட்டப்பணியில் பணிபுரியும் போது, மின்னஞ்சல் இணைப்புகளை நேரடியாக .NET பயன்பாட்டில் செயலாக்குவதற்கான சவாலை நான் எதிர்கொண்டேன். நான் ஒரு மென்மையான செயல்முறையை எதிர்பார்த்தேன், ஆனால் இணைப்புத் தரவை டிகோடிங் செய்வது எதிர்பார்த்தபடி உள்ளுணர்வு இல்லை என்பதை விரைவாக உணர்ந்தேன். இணைப்பு சரியான கோப்பாக சேமிக்கப்படாது, மேலும் மீட்டெடுக்கப்பட்ட தரவு முழுமையடையவில்லை.
அவுட்லுக்கில் WebView2 அடிப்படையிலான கட்டமைப்பை நோக்கி மைக்ரோசாப்ட் மாறுவதால், `GetData` போன்ற பாரம்பரிய அணுகுமுறைகள் பெரும்பாலும் பூஜ்ய அல்லது தவறான வடிவங்களைத் தருகின்றன. இதற்கு `FileGroupDescriptorW` அல்லது Windows-சார்ந்த APIகளை மேம்படுத்துதல் போன்ற வடிவங்களில் ஆழமாகச் செல்ல வேண்டும். 💻 மின்னஞ்சல் இணைப்புகளை உள்ளடக்கிய பணிப்பாய்வுகளை நெறிப்படுத்துவதை நோக்கமாகக் கொண்ட பல டெவலப்பர்களுக்கான நடைமுறைச் சூழல் இது.
இந்த வழிகாட்டியில், இந்த சவால்களை எவ்வாறு திறம்பட கையாள்வது என்பதை நான் ஆராய்வேன். பொதுவான முறைகள் ஏன் தோல்வியடைகின்றன என்பதை டீகோட் செய்து, உங்கள் பயன்பாட்டில் இணைப்புகளை வெற்றிகரமாக இழுத்து விடுவதற்கு மேம்படுத்தப்பட்ட நுட்பங்களைப் பற்றி விவாதிப்போம், அவற்றைச் சரியாகச் சேமிப்போம். முடிவில், நவீன அவுட்லுக் பதிப்புகளுக்கு உங்கள் பயன்பாட்டின் செயல்பாட்டை மேம்படுத்துவதற்கு நீங்கள் தயாராக இருப்பீர்கள். 🚀
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
GetDataPresent | FileGroupDescriptorW போன்ற ஒரு குறிப்பிட்ட தரவு வடிவம், இழுத்து விடுதல் செயல்பாட்டில் உள்ளதா என்பதைச் சரிபார்க்கப் பயன்படுகிறது. பயன்பாடு தொடர்புடைய தரவை மட்டுமே செயலாக்குவதை இது உறுதி செய்கிறது. |
MemoryStream | இயற்பியல் கோப்பில் இல்லாமல் நினைவகத்தில் உள்ள தரவைக் குறிக்கிறது. இந்தச் சூழலில், இணைப்பு மெட்டாடேட்டா மற்றும் உள்ளடக்க ஸ்ட்ரீம்கள் உட்பட இழுத்து விடுதல் தரவைப் பிடிக்கிறது. |
BinaryReader | பைனரி வடிவத்தில் MemoryStream இலிருந்து தரவைப் படிக்கிறது. இணைப்பு கோப்பு பெயர்கள் மற்றும் மெட்டாடேட்டாவைப் பிரித்தெடுக்க FileGroupDescriptorW ஐ அலச இது பயன்படுகிறது. |
Seek | ஒரு ஸ்ட்ரீமில் பைனரி ரீடரை ஒரு குறிப்பிட்ட ஆஃப்செட்டில் நிலைநிறுத்துகிறது. எடுத்துக்காட்டாக, FileGroupDescriptorW வடிவத்தில் இணைப்புப் பெயரைக் கண்டறிய பைட் 76ஐத் தேடுவது அவசியம். |
GetString | FileGroupDescriptorW இல் உள்ள மூலத் தரவிலிருந்து யூனிகோட் கோப்பின் பெயரைப் பிரித்தெடுப்பது போன்ற பைட் வரிசையை சரமாக மாற்றுகிறது. |
CopyTo | டிஸ்கில் இணைப்பைச் சேமிக்க, FileStream போன்ற இலக்கு ஸ்ட்ரீமுக்கு MemoryStream இலிருந்து தரவை திறம்பட நகலெடுக்கிறது. |
Interop.Outlook.Attachment | அவுட்லுக் மின்னஞ்சலில் இணைப்பைக் குறிக்கிறது. ஒரு குறிப்பிட்ட இடத்தில் இணைப்புகளைச் சேமிக்க SaveAsFile முறை பயன்படுத்தப்படுகிறது. |
DragDropEffects.Copy | இழுத்து விடுதல் செயல்பாட்டில் தரவை நகலெடுப்பதைக் குறிக்கிறது. பயன்பாட்டில் நகல் செயலாக்கப்படும்போது இணைப்பு மின்னஞ்சலில் இருப்பதை இது உறுதி செய்கிறது. |
Path.Combine | செல்லுபடியாகும் கோப்பு பாதைகளை உருவாக்க அடைவு பாதைகள் மற்றும் கோப்பு பெயர்களை ஒருங்கிணைக்கிறது, கைமுறையாக இணைக்கப்பட்ட சரங்களுடன் பொதுவான பிழைகளைத் தவிர்க்கிறது. |
TrimEnd | பிரித்தெடுக்கப்பட்ட கோப்பு பெயர்களில் இருந்து null எழுத்துக்களை நீக்குகிறது, இறுதி கோப்பு பெயர் சுத்தமாகவும் பயன்படுத்தக்கூடியதாகவும் இருப்பதை உறுதி செய்கிறது. |
அவுட்லுக் இணைப்புகளுக்கான இழுத்தல் மற்றும் இழுத்தல் செயல்பாடுகளை டிகோடிங் செய்தல்
மேலே வழங்கப்பட்டுள்ள ஸ்கிரிப்ட்கள் ஒரு குறிப்பிட்ட சிக்கலைச் சமாளிக்கின்றன: அவுட்லுக்கிலிருந்து மின்னஞ்சல் இணைப்புகளை இழுத்து விடுவதை ஒருங்கிணைத்து, .NET 6 உடன் கட்டமைக்கப்பட்ட Windows Forms பயன்பாட்டில். முதல் ஸ்கிரிப்ட் பயன்படுத்துவதில் கவனம் செலுத்துகிறது. FileGroupDescriptorW, கோப்பு பெயர்கள் போன்ற இணைப்பு மெட்டாடேட்டாவைப் பிரித்தெடுப்பதற்கான ஒரு சிறப்பு தரவு வடிவம். இந்த அணுகுமுறையானது, இழுக்கப்பட்ட தரவில் டிஸ்கிரிப்டர் உள்ளதா என்பதைச் சரிபார்ப்பது, பைனரி ஸ்ட்ரீமாகப் படிப்பது மற்றும் இணைப்பின் பெயர் போன்ற தொடர்புடைய விவரங்களைப் பிரித்தெடுப்பது ஆகியவை அடங்கும். உதாரணமாக, நீங்கள் பயன்பாட்டில் ஒரு கோப்பை இழுக்கும்போது, பெயரை டிகோட் செய்து வட்டில் சேமிக்க ஸ்ட்ரீம் ஒரு குறிப்பிட்ட பைட் ஆஃப்செட்டை நாடுகிறது.
இங்கே ஒரு முக்கிய கட்டளை பைனரி ரீடர்.சீக், இது நினைவக ஸ்ட்ரீமில் துல்லியமான நிலையை உறுதி செய்கிறது. இணைந்து என்கோடிங்.யூனிகோட்.கெட்ஸ்ட்ரிங், இது மூல பைனரி தரவை மனிதர்கள் படிக்கக்கூடிய கோப்பு பெயராக மொழிபெயர்க்கிறது. உங்கள் குழுவிலிருந்து மின்னஞ்சல் இணைப்பாக ஒரு அறிக்கையைப் பெறுவதை கற்பனை செய்து பாருங்கள் - இந்த முறையைப் பயன்படுத்தி, இணைப்பு தானாகவே "C:Temp" போன்ற நியமிக்கப்பட்ட கோப்புறையில் சேமிக்கப்படும், விரைவான அணுகல் மற்றும் செயலாக்கத்தை உறுதி செய்கிறது. பல மின்னஞ்சல் இணைப்புகளைக் கையாளும் போது இந்த பணிப்பாய்வு உற்பத்தித்திறனை பெரிதும் மேம்படுத்துகிறது. 📧
இரண்டாவது ஸ்கிரிப்ட் Microsoft.Office.Interop.Outlook நூலகம் மூலம் COM பொருள்களை மேம்படுத்துகிறது. இந்த முறை மின்னஞ்சலின் இணைப்பு சேகரிப்பை நேரடியாக அணுகுகிறது, ஒவ்வொரு கோப்பினூடாகவும் அதை உள்நாட்டில் சேமிக்கிறது. உதாரணமாக, நீங்கள் தினசரி பல ஆவணங்களைப் பெறும் சூழ்நிலையில், இந்த தீர்வு, கைமுறையான தலையீடு இல்லாமல் அனைத்து இணைப்புகளையும் முறையாகப் பதிவிறக்க பயன்பாட்டை அனுமதிக்கிறது. தி SaveAsFile முறையானது கோப்புகளை அவற்றின் அசல் பெயர்களுடன் வட்டில் சேமிப்பதை எளிதாக்குகிறது, தரவு நிலைத்தன்மை மற்றும் கட்டமைப்பை உறுதி செய்கிறது. 🗂️
இரண்டு அணுகுமுறைகளும் வலிமையை வலியுறுத்துகின்றன. வடிவமைப்புகள் சிறிது மாறினாலும் இணைப்புத் தரவை டிகோடிங் செய்து, இழுத்து விடுதல் செயல்பாடுகளுடன் நேரடியாகச் செயல்படுவதன் மூலம் நெகிழ்வுத்தன்மையில் முதலாவது கவனம் செலுத்துகிறது. இரண்டாவது மிகவும் கட்டமைக்கப்பட்டுள்ளது, மின்னஞ்சல்-குறிப்பிட்ட செயல்பாடுகளைக் கையாள COM இடைமுகத்தை நம்பியுள்ளது. ஒன்றாக, இந்த முறைகள் நவீன அவுட்லுக் அமைப்புகளுடன் இணக்கத்தன்மையை உறுதி செய்கின்றன, அதே நேரத்தில் பூஜ்ய தரவு ஸ்ட்ரீம்கள் அல்லது படிக்க முடியாத வடிவங்கள் போன்ற சாத்தியமான ஆபத்துக்களைத் தீர்க்கின்றன. இந்த நுட்பங்களை செயல்படுத்துவதன் மூலம், நீங்கள் ஒரு தடையற்ற பயனர் அனுபவத்தை உருவாக்கலாம், கையேடு கோப்பு கையாளுதலின் சார்புநிலையை குறைக்கலாம் மற்றும் பொதுவான பிழைகளை நீக்கலாம்.
அவுட்லுக் இணைப்புகளுக்கு ஒரு வலுவான இழுத்து விடுதல் தீர்வை உருவாக்குதல்
இந்த அணுகுமுறை Windows Forms பயன்பாட்டில் C# ஐப் பயன்படுத்தி அவுட்லுக் அஞ்சல் இணைப்புகளை உகந்த முறைகளுடன் மீட்டெடுக்கிறது.
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.AllowDrop = true;
this.DragEnter += Form1_DragEnter;
this.DragDrop += Form1_DragDrop;
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("FileGroupDescriptorW"))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("FileGroupDescriptorW"))
{
var fileDescriptorStream = e.Data.GetData("FileGroupDescriptorW") as MemoryStream;
var fileContentStream = e.Data.GetData("FileContents") as MemoryStream;
if (fileDescriptorStream != null && fileContentStream != null)
{
SaveAttachment(fileDescriptorStream, fileContentStream);
}
}
}
private void SaveAttachment(MemoryStream descriptor, MemoryStream content)
{
using (var reader = new BinaryReader(descriptor))
{
// Extract file name
reader.BaseStream.Seek(76, SeekOrigin.Begin);
byte[] fileNameBytes = reader.ReadBytes(520);
string fileName = Encoding.Unicode.GetString(fileNameBytes).TrimEnd('\\0');
// Save content to disk
string filePath = Path.Combine(@"C:\Temp", fileName);
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
content.CopyTo(fileStream);
}
Debug.WriteLine($"Saved attachment to: {filePath}");
}
}
}
மாற்று அணுகுமுறை: மேம்பட்ட அவுட்லுக் தொடர்புகளுக்கான COM பொருள்களைக் கையாளுதல்
இந்த தீர்வு Interop மற்றும் COM பொருட்களை நேரடியாக Outlook உடன் தொடர்பு கொள்ளவும் மற்றும் இணைப்புகளை மீட்டெடுக்கவும் உதவுகிறது.
using System;
using System.IO;
using Microsoft.Office.Interop.Outlook;
class OutlookAttachmentHandler
{
public void SaveAttachmentFromDragDrop(object outlookItem)
{
var mailItem = outlookItem as MailItem;
if (mailItem == null || mailItem.Attachments.Count == 0)
{
Console.WriteLine("No attachments found.");
return;
}
foreach (Attachment attachment in mailItem.Attachments)
{
string savePath = Path.Combine(@"C:\Temp", attachment.FileName);
attachment.SaveAsFile(savePath);
Console.WriteLine($"Attachment saved: {savePath}");
}
}
}
static void Main(string[] args)
{
OutlookAttachmentHandler handler = new OutlookAttachmentHandler();
handler.SaveAttachmentFromDragDrop(myOutlookItem);
}
அவுட்லுக் இணைப்புகளைக் கையாளுவதற்கான மேம்பட்ட முறைகளை ஆராய்தல்
மைக்ரோசாஃப்ட் அவுட்லுக்கின் நவீன பதிப்புகளில் மின்னஞ்சல் இணைப்புகளைக் கையாளும் போது, புதிய WebView2 கட்டமைப்பால் இணைப்பு வடிவங்கள் எவ்வாறு பாதிக்கப்படுகின்றன என்பது பெரும்பாலும் கவனிக்கப்படாத ஒரு அம்சமாகும். இந்த சூழலில், அவுட்லுக் இப்போது மிகவும் சுருக்கமான MIME வகைகளைப் பயன்படுத்துவதால், பாரம்பரிய இழுத்தல் மற்றும் இழுத்தல் வழிமுறைகள் தோல்வியடையக்கூடும், அவை பழைய முறைகளுடன் நேரடியாக இணங்கவில்லை. GetData. இந்த மாற்றங்களை திறம்பட நிர்வகிக்க, டெவலப்பர்கள் போன்ற சிறப்பு வடிவங்களை ஆராய வேண்டும் FileGroupDescriptorW அல்லது மைக்ரோசாஃப்ட் ஆஃபீஸ் இன்டெராப் லைப்ரரி வழங்கும் கட்டமைக்கப்பட்ட APIகளை நம்பியிருக்க வேண்டும்.
இத்தகைய சவால்களைக் கையாள்வதற்கான ஒரு முக்கியமான நுட்பம், அவுட்லுக் இணைப்புகளுடன் நேரடி தொடர்புக்கு Interop நூலகங்களைப் பயன்படுத்துவதை உள்ளடக்கியது. இந்த அணுகுமுறைக்கு COM பொருள்களைப் பற்றிய புரிதல் தேவைப்பட்டாலும், அது துல்லியத்தை வழங்குகிறது. எடுத்துக்காட்டாக, அணுகுவதன் மூலம் Attachments ஒரு மின்னஞ்சலின் சேகரிப்பு, நீங்கள் எல்லா கோப்புகளையும் மீண்டும் மீண்டும் செய்யலாம் மற்றும் அவற்றை நிரல் முறையில் சேமிக்கலாம். வணிகங்கள் தங்கள் ஆவண மேலாண்மை அமைப்புகளில் தடையற்ற ஒருங்கிணைப்பை செயல்படுத்தி, மின்னஞ்சல் வழியாக அனுப்பப்படும் பெரிய அளவிலான இன்வாய்ஸ்கள் அல்லது ஒப்பந்தங்களை தானியங்குபடுத்த வேண்டிய சூழ்நிலைகளில் இது மிகவும் பயனுள்ளதாக இருக்கும்.
.NET 6 உடன் பணிபுரியும் போது க்ராஸ்-பிளாட்ஃபார்ம் இணக்கத்தன்மையை உறுதி செய்வது மற்றொரு முக்கியமான கருத்தாகும். பல பயன்பாடுகள் இப்போது கிளவுட் ஹோஸ்ட் செய்யப்பட்ட அல்லது கலப்பின சூழல்களை ஆதரிக்கின்றன, தேர்ந்தெடுக்கப்பட்ட அணுகுமுறை வெவ்வேறு கட்டமைப்புகளை நம்பகத்தன்மையுடன் கையாளுகிறது என்பதை சரிபார்க்க வேண்டியது அவசியம். போன்ற முறைகளைப் பயன்படுத்துதல் CopyTo இணைப்புத் தரவை ஸ்ட்ரீம் செய்வது, உள்நாட்டில் இயங்கினாலும் அல்லது ஹோஸ்ட் செய்யப்பட்ட சேவையில் இருந்தாலும், உங்கள் தீர்வு திறமையாக இருப்பதை உறுதி செய்கிறது. இந்த நுட்பங்களை இணைப்பது, மின்னஞ்சல் இணைப்பு கையாளுதலுக்கான நவீன தேவைகளை நிவர்த்தி செய்யும் திறன் கொண்ட ஒரு வலுவான, அளவிடக்கூடிய அமைப்பை உருவாக்குகிறது. ✉️
.NET 6 இல் இழுத்து விடுதல் பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- எப்படி செய்கிறது FileGroupDescriptorW இணைப்பு கையாளுதலில் உதவியா?
- இது இழுக்கப்பட்ட உருப்படிகளுக்கு கோப்பு பெயர்கள் உட்பட மெட்டாடேட்டாவை வழங்குகிறது. இணைப்புகளைச் சரியாகச் சேமிக்க இது முக்கியமானது.
- ஏன் செய்கிறது GetData சில சமயங்களில் பூஜ்யமாக திரும்புமா?
- இழுவை மூலமானது (எ.கா., அவுட்லுக்) ஆதரிக்கப்படாத அல்லது புதுப்பிக்கப்பட்ட தரவு வடிவங்களைப் பயன்படுத்தும் போது இது நிகழும். Interop அல்லது பைனரி பாகுபடுத்துதல் போன்ற மாற்று முறைகளைக் கவனியுங்கள்.
- இதன் நோக்கம் என்ன MemoryStream இந்த உதாரணங்களில்?
- தி MemoryStream தற்காலிகமாக இணைப்பு தரவை நினைவகத்தில் சேமிக்கிறது, கையாளுதல் அல்லது வட்டில் சேமிக்க அனுமதிக்கிறது.
- கிளவுட் ஹோஸ்ட் செய்யப்பட்ட மின்னஞ்சல் சேவைகளுடன் இந்த முறைகளை நான் பயன்படுத்தலாமா?
- ஆம், ஆனால் மேகக்கணியில் இருந்து நேரடியாக இணைப்புகளை அணுக, Microsoft Graph போன்ற கூடுதல் APIகள் தேவைப்படலாம்.
- பெரிய இணைப்புகளைச் செயலாக்கும்போது செயல்திறனை எவ்வாறு மேம்படுத்துவது?
- போன்ற பயனுள்ள முறைகளைப் பயன்படுத்தவும் CopyTo மற்றும் அதிக நினைவக பயன்பாடு இல்லாமல் தரவு பரிமாற்றத்தை கையாள இடையக அடிப்படையிலான ஸ்ட்ரீம்கள்.
அவுட்லுக் இணைப்புகளை இழுப்பது பற்றிய இறுதி எண்ணங்கள்
விண்டோஸ் ஃபார்ம்ஸ் பயன்பாட்டில் இழுத்தல் மற்றும் இழுத்தல் செயல்பாட்டை இணைப்பது உற்பத்தித்திறனை பெரிதும் மேம்படுத்தும். தரவு ஸ்ட்ரீம்களைக் கையாளுதல் மற்றும் இணைப்புகளை திறம்பட நிர்வகிப்பதற்கு குறிப்பிட்ட வடிவங்களை மேம்படுத்துதல் ஆகியவற்றின் முக்கியத்துவத்தை எடுத்துக்காட்டுகள் எடுத்துக்காட்டுகின்றன. .NET 6 மூலம், நவீன அவுட்லுக்கிற்கு ஏற்ப வலுவான தீர்வுகளை உருவாக்கலாம்.
பூஜ்ய தரவு அல்லது படிக்க முடியாத வடிவங்கள் போன்ற சவால்கள் எழும் போது, பைனரி பாகுபடுத்துதல் அல்லது Interop நூலகங்களைப் பயன்படுத்துதல் போன்ற உத்திகளைக் கடைப்பிடிப்பது வெற்றியை உறுதிசெய்யும். புதுப்பிக்கப்பட்ட கட்டமைப்புகளுடன் எவ்வாறு தொடர்புகொள்வது என்பதைப் புரிந்துகொள்வதன் மூலம், டெவலப்பர்கள் செயல்முறைகளை நெறிப்படுத்தலாம் மற்றும் மதிப்புமிக்க நேரத்தைச் சேமிக்கலாம். இந்த முறைகள் அளவிடக்கூடிய மற்றும் பயனர் நட்பு பயன்பாட்டு அம்சங்களுக்கு வழி வகுக்கின்றன. 🚀
இழுத்து விடுதல் செயலாக்கத்திற்கான ஆதாரங்கள் மற்றும் குறிப்புகள்
- விண்டோஸ் படிவங்கள் மூலம் இழுத்து விடுவதைக் கையாள்வதற்கான விரிவான தொழில்நுட்ப ஆவணங்கள்: Microsoft Learn: Windows Forms இல் இழுத்து விடவும்
- FileGroupDescriptorW வடிவம் மற்றும் Outlook இல் அதன் பயன்பாடு பற்றிய தகவல்: ஸ்டாக் ஓவர்ஃப்ளோ: FileGroupDescriptorW படித்தல்
- மைக்ரோசாஃப்ட் ஆஃபீஸ் இண்டெராப் மற்றும் இணைப்பு கையாளுதலுக்கான அதன் திறன்கள் பற்றிய நுண்ணறிவு: மைக்ரோசாஃப்ட் VBA ஆவணப்படுத்தல்: Outlook API கண்ணோட்டம்
- நவீன அவுட்லுக் பதிப்புகளில் WebView2 கட்டமைப்பு மாற்றங்களின் மேலோட்டம்: மைக்ரோசாஃப்ட் எட்ஜ்: WebView2 டெவலப்பர் ஆவணம்
- பூஜ்ய தரவு சிக்கல்களைக் கையாள்வதற்கான நடைமுறை எடுத்துக்காட்டுகள் மற்றும் பயனர் விவாதங்கள்: மைக்ரோசாஃப்ட் டெவலப்பர் நெட்வொர்க் மன்றங்கள்