Saturday, 5 January 2013

MediaInfo Wrapper for .NET Projects

Latest version: v1.0.0.0 (2013-01-05)
Project Page: SourceForge.net Google Project Hosting
License: Open-Source (GNU General Public License v2)

About

MediaInfoNET is a .NET wrapper for the MediaInfo library.
MediaInfoNET.dll can be added to any VB or C# project and used for reading information from audio and video files.

Downloads

MediaInfoNET Binaries (835 KB)
MediaInfoNET Source (15 KB)

Usage

  • Add a reference to MediaInfoNET.dll to your project and import the MediaInfoNET namespace.

VB:

Imports MediaInfoNET

CS:

using MediaInfoNET;
  • Create an object of the MediaFile class and pass the file path as a parameter. The file properties can be read from the MediaFile object.

VB:

Dim aviFile As MediaFile = New MediaFile("C:\Sample.avi")

CS:

MediaFile aviFile = new MediaFile("C:\Sample.avi");
  • Download the latest copy of MediaInfo.dll from the MediaInfo website (32-bit DLL without installer) or use the file that is included with the MediaInfoNET download package. Place MediaInfo.dll in the application directory.

Complete Examples:

VB:

Imports MediaInfoNET

Module Module1

    Sub Main()
        Dim aviFile As MediaFile = New MediaFile("C:\Sample.avi")

        Console.WriteLine()
        Console.WriteLine("General ---------------------------------")
        Console.WriteLine()
        Console.WriteLine("File Name   : {0}", aviFile.Name)
        Console.WriteLine("Format      : {0}", aviFile.General.Format)
        Console.WriteLine("Duration    : {0}", aviFile.General.DurationString)
        Console.WriteLine("Bitrate     : {0}", aviFile.General.Bitrate)

        If aviFile.Audio.Count > 0 Then
            Console.WriteLine()
            Console.WriteLine("Audio ---------------------------------")
            Console.WriteLine()
            Console.WriteLine("Format      : {0}", aviFile.Audio(0).Format)
            Console.WriteLine("Bitrate     : {0}", aviFile.Audio(0).Bitrate.ToString())
            Console.WriteLine("Channels    : {0}", aviFile.Audio(0).Channels.ToString())
            Console.WriteLine("Sampling    : {0}", aviFile.Audio(0).SamplingRate.ToString())
        End If

        If aviFile.Video.Count > 0 Then
            Console.WriteLine()
            Console.WriteLine("Video ---------------------------------")
            Console.WriteLine()
            Console.WriteLine("Format      : {0}", aviFile.Video(0).Format)
            Console.WriteLine("Bit rate    : {0}", aviFile.Video(0).Bitrate.ToString())
            Console.WriteLine("Frame rate  : {0}", aviFile.Video(0).FrameRate.ToString())
            Console.WriteLine("Frame size  : {0}", aviFile.Video(0).FrameSize.ToString())
        End If

        Console.ReadLine()
    End Sub
End Module

CS:

using System;
using System.Text;
using MediaInfoNET;

namespace SampleCS
{
    class Program
    {
        static void Main(string[] args)
        {
            MediaFile aviFile = new MediaFile("C:\Sample.avi");

            Console.WriteLine();
            Console.WriteLine("General ---------------------------------");
            Console.WriteLine();
            Console.WriteLine("File Name   : {0}", aviFile.Name);
            Console.WriteLine("Format      : {0}", aviFile.General.Format);
            Console.WriteLine("Duration    : {0}", aviFile.General.DurationString);
            Console.WriteLine("Bitrate     : {0}", aviFile.General.Bitrate);

           if (aviFile.Audio.Count > 0)
           {
                Console.WriteLine();
                Console.WriteLine("Audio ---------------------------------");
                Console.WriteLine();
                Console.WriteLine("Format      : {0}", aviFile.Audio[0].Format);
                Console.WriteLine("Bitrate     : {0}", aviFile.Audio[0].Bitrate.ToString());
                Console.WriteLine("Channels    : {0}", aviFile.Audio[0].Channels.ToString());
                Console.WriteLine("Sampling    : {0}", aviFile.Audio[0].SamplingRate.ToString());
           }

            if (aviFile.Video.Count > 0)
            {
                Console.WriteLine();
                Console.WriteLine("Video ---------------------------------");
                Console.WriteLine();
                Console.WriteLine("Format      : {0}", aviFile.Video[0].Format);
                Console.WriteLine("Bit rate    : {0}", aviFile.Video[0].Bitrate.ToString());
                Console.WriteLine("Frame rate  : {0}", aviFile.Video[0].FrameRate.ToString());
                Console.WriteLine("Frame size  : {0}", aviFile.Video[0].FrameSize.ToString());
            }

            Console.ReadLine();
        }
    }
}

97 comments:

  1. Do you know how to make it work in windows 8 app?
    MediaFile is not getting the files properties.

    ReplyDelete
    Replies
    1. I haven't tried it on Win8..will check

      Delete
  2. Great Job. I enjoyed using it. Thanks!

    ReplyDelete
  3. Hi,
    When I run the test program that included MediaInfoNET, I got the error below (I tried compiled them in net 4.5, C# - same problem).
    Thanks


    System.BadImageFormatException was unhandled
    HResult=-2147024885
    Message=An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
    Source=MediaInfoNET
    StackTrace:
    at MediaInfoNET.MediaInfo.MediaInfo_New()
    at MediaInfoNET.MediaInfo..ctor() in O:\CodeMagic\MediaInfo\MediaInfoNET_Source\MediaInfoDLL.vb:line 77
    at MediaInfoNET.MediaFile.GetMediaInfo(Boolean AppendInfo) in O:\CodeMagic\MediaInfo\MediaInfoNET_Source\MediaFile.vb:line 82
    at MediaInfoNET.MediaFile..ctor(String SourceFile) in O:\CodeMagic\MediaInfo\MediaInfoNET_Source\MediaFile.vb:line 62
    at WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e) in o:\Housekeeper\test3\WindowsFormsApplication1\Form1.cs:line 45
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    at System.Windows.Forms.Application.Run(Form mainForm)
    at WindowsFormsApplication1.Program.Main() in o:\Housekeeper\test3\WindowsFormsApplication1\Program.cs:line 19
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    at System.Threading.ThreadHelper.ThreadStart()
    InnerException:

    ReplyDelete
  4. This was exactly what i was looking for.
    Thank you for providing this.

    ReplyDelete
  5. @Anonymous

    For the BadImage problem, make sure the platform is the same with MediaInfo when it is compiled. Both should be 32-bit app or both are 64-bit app.

    http://stackoverflow.com/questions/15184713/c-sharp-publish-application-with-mediainfo-dll

    ReplyDelete
  6. ... for metadata of mp3 (name,author,title,album,artist, genre, ...) is possible? thanks

    ReplyDelete
    Replies
    1. Yesssssssssssssssssss. 1.000.000 thanks!!!! good work!!! :)

      Delete
    2. avifile=example.mp3

      Console.WriteLine("Album : {0}", aviFile.General.Properties.Item("Album"));
      Console.WriteLine("Genre : {0}", aviFile.General.Properties.Item("genre"));

      ...

      Delete
    3. Hey anonymous how can u call the Item in Properties because I couldn't find any function Item in Properties.

      Delete
  7. Can't thank you enough! Brilliant.

    ReplyDelete
  8. ... ex. vb.net mp3file ...

    picturebox.image = mp3file.image..... ?????

    Thanks

    ReplyDelete
  9. I've been looking for a couple of days for something like that. Thank you very much, and greetings from Spain.

    ReplyDelete
  10. How to detect the field order in interlaced ?
    Thanks

    ReplyDelete
    Replies
    1. Console.WriteLine("Scan order: {0}", aviFile.Video(0).Properties.Item("Scan order"));

      Delete
    2. Have you been successful in using the below statement? I can't find any function Item in Properties. What am I wrong? Could anyone tell me what I should do?

      Delete
  11. hi,

    how to get the rotation information from the video file

    ReplyDelete
  12. The field SamplingRate of an Audio is bugged. It doesn't consider the System.Globalization.CultureInfo.InvariantCulture when parse the value to double. In some regions, the conversion of 48.0 in string is 480 in double.

    ReplyDelete
  13. The Download link is broken

    ReplyDelete
    Replies
    1. The link is working. If you are unable to download please try after sometime or select another mirror from the SourceForge download page.

      Delete
  14. Would you mind telling me how to print out scan order of a media file?

    ReplyDelete
    Replies
    1. Console.WriteLine("Scan order: {0}", aviFile.Video(0).Properties.Item("Scan order"));

      Delete
    2. This comment has been removed by the author.

      Delete
    3. Thank you. But it doesn't have Item on Properties. Can you tell me in the details?

      Delete
    4. Try using Properties("scan order") or GetProperty("Scan order"). Both will work.

      Delete
    5. It works. Thank you so much

      Delete
  15. I have tried following your instructions but I am receiving an error when I try to add the MediaInfo.dll as a reference. I get: A reference to [Path] could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component

    ReplyDelete
    Replies
    1. I am having this same problem

      Delete
    2. Don't add the reference to MediaInfo.dll directly. Add a reference to MediaInfoNET.dll. MediaInfoNET.dll is the .NET wrapper which calls MediaInfo.dll.

      Delete
  16. I have downloaded the files and gotten this to work as explained on local files. However when trying this with an uploaded file on https it does not seem to return the media information even when passing the full server map path on which the video is stored

    ReplyDelete
    Replies
    1. It works with only local files. You can modify the source code for handling files on a server.

      Delete
  17. Is there any way to find the rotation of a video?

    ReplyDelete
  18. ---------thanks for the information so much , i am getting this exception :An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
    when i try to use mediaInfo the way you stated on your post ,
    I tried changing the platform in build to x86,x64,Any CPU , but it doesn't help , do you have a solution for such issue , i really would like this to work for me :(

    ReplyDelete
  19. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. I have same problem. Built source as x64 project on Win 7/64 to get a dll. Made a new project and added reference to the dll. Tried several browsers, IE64, Chrome etc.
      Anybody have a solution?

      Delete
    3. Use the 64-bit version of MediaInfo.dll. The 32-bit DLL will not work on 64-bit Windows.

      http://mediaarea.net/en/MediaInfo/Download

      Delete
  20. How do you access the thumbnail image? [Cover_Data]

    ReplyDelete
    Replies
    1. The thumbnail image is not a property. You have to generate it using some other tool.

      Delete
  21. Thank you for putting me on to this! Exactly what I needed :)

    ReplyDelete
  22. Man you are a life saver! Big timesaver! Thanks!

    ReplyDelete
  23. Hi Tony

    I'm trying to read height and width information for a folder full of images as follows:-

    Dim im As New MediaFile("d:\img0001.jpg")
    Dim w, h As Integer
    Dim n As String
    n = im.Name
    MsgBox(n) 'this works ok
    w = im.Image(0).Width 'this is where it throws the exception
    h = im.Image(0).Height
    MsgBox(w, h)

    The routine works if there is only one image in the folder. However, if I use it on a folder with more than one image, I get an ArgumentOutOfRange Exception immediately after passing the first MsgBox.

    I suspect I'm doing something stupid, but any advice you can give would be much appreciated

    Geoff

    ReplyDelete
  24. Hi,

    Thanks so much for this. Is there a way to iterate round all property elements and extracting the property name and value without specifying each one specifically?

    i.e., listing all available Audio properties
    listing all available Video proeprties

    Any help gratefully appreciated

    Steven



    ReplyDelete
  25. Hello Tony,

    Can this also be used to extract images for the frames of an avi file?

    Thanks,
    Tom

    ReplyDelete
  26. Hi, Thanks for this! it's working as it should ;)
    My problem is that I'm using it throw a webapp, so the process keeps the file opened and I need to close it to be able to use it later with other tools.

    Do you provide any operations for closing the opened files? I couldn't find any.

    Thanks in advance!

    ReplyDelete
  27. I tried your source program, its working great.

    ReplyDelete
  28. Fantastic stuff! A huge well done to you!

    I have one burning question. MediaInfo can display the first timecode in an e.g. MOV file using the TimeCode_FirstFrame parameter. How can I get that info via MediaInfoNET?

    ReplyDelete
  29. Very nice wrapper. Thank you very much!

    ReplyDelete
  30. How would I get the aspect ratio (16:9, 4:3, etc.) of a video?

    ReplyDelete
  31. Your posts is really helpful for me.Thanks for your wonderful post. I am very happy to read your post.

    Dot Net Training in Chennai

    ReplyDelete
  32. thanks of sharing

    ReplyDelete
  33. Hi, i have problem to get chapters from m4v.
    MediaFile says Chapters = 0, but m4v file have chapters.
    Any idea?

    ReplyDelete
    Replies
    1. Add new info:
      I use Daum PotPlayer for display chapters.
      I debug my project in VB.NET, but no chapters view for the mediafile.
      Dim aviFile As MediaFile = New MediaFile("C:\video.m4v")
      I use MsgBox for view Chapters.Count but the result is 0.
      :-( Why?
      Any alternative to get chapters from video in .NET projects?

      Delete
  34. I am using MediaInfoNET.dll and MediaInfo.dll files in my vb.net programming.
    I am using mediainfofile.General.DurationString property.
    It gives only hr and minute.
    mediainfofile.General.Durationacurate property shows the second but it says second is 00.

    ReplyDelete
  35. Your posts is really helpful for me.Thanks for your wonderful post.It is really very helpful for us and I have gathered some important information from this blog.If anyone wants to get Dot Net Training in Chennai reach FITA, rated as No.1 Dot Net Training Institutes in Chennai.

    ReplyDelete
  36. If anyone want to become an oracle certified professional reach FITA, which offers best Oracle Training in Chennai with years of experienced professionals. For more details about oracle, sql training visit this site.

    Oracle Course in Chennai

    ReplyDelete
  37. Great new about .net projects..Thanks for the share

    ReplyDelete
  38. Hi
    I'm trying to read the metadata from MXF file:
    I've wrote this script in C#

    MediaFile MyFile = new MediaFile("file:///" + ofd.FileName);
    string aa = String.Format(MyFile.General.Format );
    MessageBox.Show (aa);

    unfortunately the messagebox is empty.

    Thanks in advance
    barabba2005@hotmail.it

    ReplyDelete
  39. Hi Tony,

    the dll works fine but when i get the duration of the video i get only the hour an min, but no seconds.
    i tried it with an mkv. Whats the problem?

    Thanks for your reply.

    with best regards

    Steve

    ReplyDelete
  40. I have a problem with getting correct DurationString from a file. The problem is when duration is more then one hour, I don't get seconds, i.e. seconds are always displayed as 00. When duration is less then one hour, everything is fine. Do you know what might be the problem?

    ReplyDelete
  41. Hi Tony!
    I have same problem. Built source as x64 project on Win 8.1 to get a dll. Made a new project and added reference to the dll.

    My code

    Dim aviFile As MediaFile = New MediaFile("C:\filevideo.vob")
    Console.WriteLine("File Name : {0}", aviFile.Name)
    Console.WriteLine("Format : {0}", aviFile.General.Format)

    Report an error
    An unhandled exception of type 'System.DllNotFoundException' occurred in MediaInfoNET.dll

    Additional information: Unable to load DLL 'MediaInfo.DLL': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

    me wish you to help

    ReplyDelete
  42. Net Project is the important things to develop our business.Its very helpful..These explanation is understand by everyone..These are really very nice.
    Loadrunner Training in Chennai | Loadrunner Training in Chennai | Selenium Training in Chennai | QTP Training in Chennai

    ReplyDelete
  43. its nice one..visit us @http://www.javatraininginchennai.in/

    ReplyDelete
  44. Hi Admin,
    Your website is totally awesome and loaded with various informative posts on web design and development. Keep on updating your blog. Web Design Training | Web designing course in Chennai

    ReplyDelete
  45. These all are notable facts… I stick with responsive website design for my business. With the mobile marketing is at its peak stage, having website that goes comfy on all devices will help your business. You can check my website for more details on the importance of responsive website design. PHP Training in Chennai | Best PHP training in Chennai | PHP Training Institute in Chennai

    ReplyDelete
  46. Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing. PHP Training in chennai | PHP Training chennai | PHP course in chennai | PHP course chennai

    ReplyDelete
  47. I gathered a lot of information through this article.Every example is easy to understandable and explaining the logic easily.Thanks Mysql training in chennai | Mysql training chennai | Mysql course in chennai | Mysql course chennai

    ReplyDelete
  48. Thanks for sharing these niche piece of coding to our knowledge. Here, I had a solution for my inconclusive problems & it’s really helps me a lot keep updates…DOT NET Training Chennai | DOT NET Training Institute in Chennai | DOT NET Course in Chennai

    ReplyDelete
  49. I am reading your post from the beginning, it was so interesting to read & I feel thanks to you for posting such a good blog, keep updates regularly.
    ccna training institute in Chennai | ccna courses in Chennai

    ReplyDelete
  50. This comment has been removed by the author.

    ReplyDelete
  51. Hi, Thanks for sharing this valuable blog.I was really impressed by reading this blog. I did HTML5 Training in Chennai at reputed HTML5 Training Institutes in Chennai. This is really useful for me to make a bright future in designing field.

    ReplyDelete
  52. Really awesome blog. Your blog is really useful for me. Thanks for sharing this informative blog. Keep update your blog.

    Regards..
    Software Testing Training in Chennai

    ReplyDelete
  53. Thanks for sharing informative article on web design and development. As every business is moving towards online marketing, there is huge demand for trained and skilled web designers and developers. Web designing course in Chennai

    ReplyDelete
  54. Cloud computing is storing and accessing the large data sets over the internet instead of your PC computer. So that you can manage the data and program anywhere through the internet.
    Regards..
    Cloud Computing Training Chennai

    ReplyDelete
  55. Pretty article! I found some useful information in your blog, it was awesome to read, thanks for sharing this great content to my vision, keep sharing.
    Regards,
    Salesforce training |Salesforce course in Chennai

    ReplyDelete
  56. I gone through your article, its really interesting. Dot net is most used programming language for creating highly dynamic desktop and web application. Dot net programming language has created massive revolution in software development industry. Best Dot Net Training

    ReplyDelete
  57. I am reading your post from the beginning, it was so interesting to read & I feel thanks to you for posting such a good blog, keep updates regularly.
    Regards,
    Salesforce training in Chennai|Salesforce training institute in Chennai

    ReplyDelete
  58. I get a lot of great information from this blog. Thank you for your sharing this informative blog. Recently I did DOT NET course at a leading academy. If you are looking for best DOT NET Training Institute in Chennai visit THINK IT training academy which offer real time DOT NET Course in Chennai.

    For details : Dot Net Training in Chennai

    ReplyDelete
  59. Looking for a career in technology industry? Wonder what are the languages that will give just the right start to your career?
    Over to the hottest programming languages you can learn in 2015.

    For details : microsoft training in Chennai

    ReplyDelete
  60. Your posts is really helpful for me.Thanks for your wonderful post.It is really very helpful for us and I have gathered some important information from this blog.

    online marketing courses in chennai

    ReplyDelete
  61. I gone through your article, its really interesting. Dot net is most used programming language for creating highly dynamic desktop and web application. Dot net programming language has created massive revolution in software development industry.
    seo training in Chennai

    ReplyDelete
  62. It involves web services and programming language. Many platforms uses dot net for browsing. It also favors other applications like VB .net, ADO .net etc. It will be very easy to communicate. Windows application, web applications and in console applications develop on its own.

    For info : Dot Net Training in Chennai

    ReplyDelete
  63. There is still a great demand for .net projects. especially from students who are in their final semester and need to do projects. Web designing course in Chennai | Web designing course in Chennai

    ReplyDelete
  64. We are providing Best Oracle Training in Chennai by industry standards and the trainers are certified by Oracle Corp. We are specialized to provide RDBMS and especially for Oracle SQL and PlSQL. Our trainers are coming from various IT companies who have nearly 10+ years in IT industries. As of now we trained nearly 1000+ Oracle Professional.

    ReplyDelete
  65. We are providing best Oracle Training Institute in Chennai. Our Oracle Trainers are from Realtime Information Technology Companies.Oracle is one of the most demand technologies in the world.We deliver 100%, practical oriented ,job oriented , placement oriented Oracle training in Chennai at Greens Technology.

    ReplyDelete
  66. Our trainers are working professionals in IT industry, so being a professionals as well as trainer. Our Informatica professional know all admin and developer part of Informatica. You can be an Informatica specialist if you do training on it in our Institute. Informatica training will be very useful for you to shine in your career.

    ReplyDelete
  67. Pega is a Java-based BPM tool which is used to build enterprise applications. Among all the BPM tools in the market Pega is the leading and No-1 BPM tool according to market standards far beyond its competitors. Pega enables in creating and managing web-based applications with less effort and faster deadlines using Agile or Scrum methodology.

    ReplyDelete
  68. Job oriented Hadoop training in Chennai is offered by our institute. Our training is mainly focused on real time and industry oriented. We provide training from beginner’s level to advanced level techniques thought by our experts. Our experts are real time working professional’s experience of about 10+ years. We conduct class on both online and classroom classes..

    ReplyDelete
  69. Best QTP Training In Chennai.We will provide you a complete practical oriented training which helps you to gain a complete practical knowledge about the course that make you to easily get into the MNC companies.

    ReplyDelete
  70. We are the No.1 SAS training institute in Chennai with lowest cost. We offer training for both fresher and experienced persons. Trainers of our institute are well experienced professionals and they working in top MNC s companies.

    ReplyDelete
  71. GREENS TECHNOLOGIES, ONE OF THE BEST IT INSTITUTES FOR ORACLE SQL TRAINING IN CHENNAI OFFERS TRAINING WITH PRACTICAL GUIDANCE. OUR TRAINING ACADEMY IS FULLY EQUIPPED WITH SUPERIOR INFRASTRUCTURE AND LAB FACILITIES. WE ARE PROVIDING THE BEST ORACLE PLSQL TRAINING IN CHENNAI.

    ReplyDelete
  72. Greens Technology is a one of the top MNC company in Chennai. We are providing lab facility and best infrastructure.
    and No.1 placement company in Chennai.

    ReplyDelete
  73. i have read this blog. very nice post thank you... take a look our blog. Web Design

    ReplyDelete
  74. Nice to seeing your VB.net artical to advance programming in .NET to learn to peoplesoft
    learn more visit

    ReplyDelete
  75. Thanks for sharing informative article on wordpress. Being a most advanced CMS tool, wordpress help you to create sophisticated website with ease. Wordpress Training in Chennai

    ReplyDelete

If you are reporting an issue and commenting as an anonymous user, please leave your email address so that I can get in touch with you.