<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Blogs - wallace1</title>
		<link>https://www.developpez.net/forums/blogs/260975-wallace1/</link>
		<description>Developpez.com, le Club des Développeurs et IT Pro</description>
		<language>fr</language>
		<lastBuildDate>Mon, 03 Aug 2026 13:47:08 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.jpg</url>
			<title>Forum du club des développeurs et IT Pro - Blogs - wallace1</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/</link>
		</image>
		<item>
			<title><![CDATA[Télécharger un fichier depuis une url https et éviter l'erreur "Impossible de créer un canal sécurisé SSL/TLS"]]></title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b7344/telecharger-fichier-url-https-eviter-l-erreur-impossible-creer-canal-securise-ssl-tls/</link>
			<pubDate>Fri, 19 Apr 2019 16:26:39 GMT</pubDate>
			<description>Si vous rencontrez ce message...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Si vous rencontrez ce message d'erreur lorsque vous téléchargez un fichier depuis une url : <font color="#FF0000"><font size="3">La demande a été abandonnée : Impossible de créer un canal sécurisé SSL/TLS</font></font> il peut être judicieux de procéder à cette vérification :<br />
<br />
Le problème vient du fait que la nouvelle url est en https..... Il faut donc oublier l'utilisation de la classe <b><font color="#FF0000">My.Computer.Network.DownloadFile</font></b> et utiliser une autre classe (<b><font color="#008000">System.Net.WebClient</font></b>) qui gère les protocoles de sécurité de type SSL/TLS (dans le cas du site letrot.com il s'agit de la version TLS 1.2) :<br />
<br />
Voilà qui devrait te mettre sur la voie :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code c# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:144px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
    <span style="color: #0000ff;">string</span> Uri = <span style="color: #FF0000;">&quot;http://www.letrot.com/stats/fiche-cheval/diane-des-champs/ZWF8ZQoHCgoR/courses/dernieres-performances-paginate-2&quot;</span>;
    <span style="color: #808080;">//// ou </span>
    <span style="color: #808080;">// string Uri = &quot;https://www.letrot.com/stats/fiche-cheval/diane-des-champs/ZWF8ZQoHCgoR/courses/dernieres-performances-paginate-2&quot;;</span>
    <span style="color: #0000ff;">using</span> <span class="br0">&#40;</span>System.Net.WebClient wc = <span style="color: #0000ff;">new</span> System.Net.WebClient<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Ssl3;
        wc.DownloadFile<span class="br0">&#40;</span>Uri, <span style="color: #FF0000;">@</span><span style="color: #FF0000;">&quot;D:\urlContent.txt&quot;</span><span class="br0">&#41;</span>;
    <span class="br0">&#125;</span></pre></td></tr></table></pre>
</div><br />
<br />
<font color="#FF8C00"><b>PS</b> : Il faut que ton projet cible la version 4.5 du framework sinon tu n'auras pas la possibilité d'utiliser les énumérations suivantes : </font><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code c# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:72px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
System.Net.SecurityProtocolType.Tls11
System.Net.SecurityProtocolType.Tls12</pre></td></tr></table></pre>
</div><br />
Bon codage.</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b7344/telecharger-fichier-url-https-eviter-l-erreur-impossible-creer-canal-securise-ssl-tls/</guid>
		</item>
		<item>
			<title>Simuler la touche ENTRER ou TAB sur une application exécutée puis réduite (Pinvoke)</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b3121/simuler-touche-entrer-tab-application-executee-puis-reduite-pinvoke/</link>
			<pubDate>Sat, 03 Jun 2017 19:45:53 GMT</pubDate>
			<description><![CDATA[Pour l'exemple j'ai codé une...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Pour l'exemple j'ai codé une application type Windows Forms (Framework 4.0 ciblé) nommée &quot;TestApp&quot; dans laquelle j'ai ajouté 2 boutons (Button1 et Button2).<br />
Lorsqu'on clique sur Button1 ça affiche une msgBox.<br />
<br />
<b>---&gt; Dans un premier temps on récupère le handle du processus et on vérifie qu'il existe bien :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code vb.net :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">Dim</span> processes <span style="color: #0000ff;">As</span> Process<span class="br0">&#40;</span><span class="br0">&#41;</span> = Process.GetProcessesByName<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;TestApp&quot;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> processes <span style="color: #0000ff;">Is</span> <span style="color: #0000ff;">Nothing</span> <span style="color: #0000ff;">AndAlso</span> <span style="color: #0000ff;">Not</span> processes.Length = <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">Then</span>
      <span style="color: #0000ff;">Dim</span> hwnd <span style="color: #0000ff;">As</span> IntPtr = processes<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>.MainWindowHandle
&nbsp;
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span></pre></td></tr></table></pre>
</div><br />
<b>---&gt; Ensuite on énumère toutes les fenêtre enfants du processus (ce qui permet de récupérer tous les handle des contrôles du processus parent) :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code vb.net :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br /></div></td><td valign="top"><pre style="margin: 0"> &lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;user32.dll&quot;</span><span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> EnumChildWindows<span class="br0">&#40;</span>window <span style="color: #0000ff;">As</span> IntPtr, callback <span style="color: #0000ff;">As</span> EnumWindowProc, i <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> &lt;MarshalAs<span class="br0">&#40;</span>UnmanagedType.Bool<span class="br0">&#41;</span>&gt; <span style="color: #0000ff;">Boolean</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
  <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Delegate</span> <span style="color: #0000ff;">Function</span> EnumWindowProc<span class="br0">&#40;</span>hWnd <span style="color: #0000ff;">As</span> IntPtr, parameter <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Boolean</span>
&nbsp;
  <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> ChildWindowsFromHandle<span class="br0">&#40;</span>parent <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> List<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> IntPtr<span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> result <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> List<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> IntPtr<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> listHandle <span style="color: #0000ff;">As</span> GCHandle = GCHandle.Alloc<span class="br0">&#40;</span>result<span class="br0">&#41;</span>
        <span style="color: #0000ff;">Try</span>
            <span style="color: #0000ff;">Dim</span> childProc <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> EnumWindowProc<span class="br0">&#40;</span><span style="color: #0000ff;">AddressOf</span> EnumWindowFromHandle<span class="br0">&#41;</span>
            EnumChildWindows<span class="br0">&#40;</span>parent, childProc, GCHandle.ToIntPtr<span class="br0">&#40;</span>listHandle<span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Finally</span>
            <span style="color: #0000ff;">If</span> listHandle.IsAllocated <span style="color: #0000ff;">Then</span>
                listHandle.Free<span class="br0">&#40;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Try</span>
        <span style="color: #0000ff;">Return</span> result
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
   <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> EnumWindowFromHandle<span class="br0">&#40;</span>handle <span style="color: #0000ff;">As</span> IntPtr, pointer <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Boolean</span>
        <span style="color: #0000ff;">Dim</span> gch <span style="color: #0000ff;">As</span> GCHandle = GCHandle.FromIntPtr<span class="br0">&#40;</span>pointer<span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> list <span style="color: #0000ff;">As</span> List<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> IntPtr<span class="br0">&#41;</span> = <span style="color: #0000ff;">TryCast</span><span class="br0">&#40;</span>gch.Target, List<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> IntPtr<span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> list <span style="color: #0000ff;">Is</span> <span style="color: #0000ff;">Nothing</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">Throw</span> <span style="color: #0000ff;">New</span> InvalidCastException<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;La cible de GCHandle ne peut pas &ecirc;tre cast&eacute;e en type List&lt;IntPtr&gt;&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        list.Add<span class="br0">&#40;</span>handle<span class="br0">&#41;</span>
        <span style="color: #0000ff;">Return</span> <span style="color: #0000ff;">True</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span></pre></td></tr></table></pre>
</div><br />
Ce qui nous donne :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code vb.net :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:120px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">Dim</span> processes <span style="color: #0000ff;">As</span> Process<span class="br0">&#40;</span><span class="br0">&#41;</span> = Process.GetProcessesByName<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;TestApp&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> processes <span style="color: #0000ff;">Is</span> <span style="color: #0000ff;">Nothing</span> <span style="color: #0000ff;">AndAlso</span> <span style="color: #0000ff;">Not</span> processes.Length = <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">Dim</span> hwnd <span style="color: #0000ff;">As</span> IntPtr = processes<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>.MainWindowHandle
            <span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> wind <span style="color: #0000ff;">In</span> ChildWindowsFromHandle<span class="br0">&#40;</span>hwnd<span class="br0">&#41;</span>
&nbsp;
            <span style="color: #0000ff;">Next</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span></pre></td></tr></table></pre>
</div><br />
<b>---&gt; On implémente 2 fonctions permettant de récupérer le titre d'une fenêtre et son nom de classe :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code vb.net :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br /></div></td><td valign="top"><pre style="margin: 0">&lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;User32.dll&quot;</span>, SetLastError:=<span style="color: #0000ff;">True</span>, CharSet:=CharSet.Auto<span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> GetClassName<span class="br0">&#40;</span>hwnd <span style="color: #0000ff;">As</span> IntPtr, lpClassName <span style="color: #0000ff;">As</span> StringBuilder, nMaxCount <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    &lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;user32.dll&quot;</span>, SetLastError:=<span style="color: #0000ff;">True</span>, CharSet:=CharSet.Auto<span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> GetWindowTextLength<span class="br0">&#40;</span>hWnd <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    &lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;user32.dll&quot;</span><span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> GetWindowText<span class="br0">&#40;</span><span style="color: #0000ff;">ByVal</span> hWnd <span style="color: #0000ff;">As</span> IntPtr, <span style="color: #0000ff;">ByVal</span> lpString <span style="color: #0000ff;">As</span> StringBuilder, <span style="color: #0000ff;">ByVal</span> nMaxCount <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
   <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Function</span> CaptionFromHandle<span class="br0">&#40;</span>hwnd <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
        <span style="color: #0000ff;">Dim</span> cName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = String.Empty
        <span style="color: #0000ff;">Dim</span> cText <span style="color: #0000ff;">As</span> StringBuilder = <span style="color: #0000ff;">Nothing</span>
        <span style="color: #0000ff;">Try</span>
            <span style="color: #0000ff;">Dim</span> cLength <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = GetWindowTextLength<span class="br0">&#40;</span>hwnd<span class="br0">&#41;</span>
            cText = <span style="color: #0000ff;">New</span> StringBuilder<span class="br0">&#40;</span>String.Empty, cLength + <span style="color: #cc66cc;">5</span><span class="br0">&#41;</span>
            GetWindowText<span class="br0">&#40;</span>hwnd, cText, cLength + <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> String.IsNullOrEmpty<span class="br0">&#40;</span>cText.ToString<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">AndAlso</span>
                <span style="color: #0000ff;">Not</span> String.IsNullOrWhiteSpace<span class="br0">&#40;</span>cText.ToString<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">Then</span>
                cName = cText.ToString<span class="br0">&#40;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">Catch</span> ex <span style="color: #0000ff;">As</span> Exception
            cName = ex.Message
        <span style="color: #0000ff;">Finally</span>
            cText = <span style="color: #0000ff;">Nothing</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Try</span>
        <span style="color: #0000ff;">Return</span> cName
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Function</span> ClassNameFromHandle<span class="br0">&#40;</span>hwnd <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
        <span style="color: #0000ff;">Dim</span> cName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = String.Empty
        <span style="color: #0000ff;">Dim</span> cText <span style="color: #0000ff;">As</span> StringBuilder = <span style="color: #0000ff;">Nothing</span>
        <span style="color: #0000ff;">Try</span>
            <span style="color: #0000ff;">Dim</span> cLength <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">1000</span>
            cText = <span style="color: #0000ff;">New</span> StringBuilder<span class="br0">&#40;</span>String.Empty, cLength + <span style="color: #cc66cc;">5</span><span class="br0">&#41;</span>
            GetClassName<span class="br0">&#40;</span>hwnd, cText, cLength + <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> String.IsNullOrEmpty<span class="br0">&#40;</span>cText.ToString<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">AndAlso</span>
                <span style="color: #0000ff;">Not</span> String.IsNullOrWhiteSpace<span class="br0">&#40;</span>cText.ToString<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">Then</span>
                cName = cText.ToString<span class="br0">&#40;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">Catch</span> ex <span style="color: #0000ff;">As</span> Exception
            cName = ex.Message
        <span style="color: #0000ff;">Finally</span>
            cText = <span style="color: #0000ff;">Nothing</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Try</span>
        <span style="color: #0000ff;">Return</span> cName
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span></pre></td></tr></table></pre>
</div><br />
<b>---&gt; Si je souhaite simuler la touche ENTRER sur le Button1 je procède ainsi :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code vb.net :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
 &lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;user32.dll&quot;</span>, SetLastError:=<span style="color: #0000ff;">True</span><span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> PostMessage<span class="br0">&#40;</span>hWnd <span style="color: #0000ff;">As</span> IntPtr, Msg <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">UInteger</span>, wParam <span style="color: #0000ff;">As</span> IntPtr, lParam <span style="color: #0000ff;">As</span> IntPtr<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> &lt;MarshalAs<span class="br0">&#40;</span>UnmanagedType.Bool<span class="br0">&#41;</span>&gt; <span style="color: #0000ff;">Boolean</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    <span style="color: #0000ff;">Const</span> WM_KEYDOWN <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">UInteger</span> = <span style="color: #cc66cc;">&amp;H100</span>
    <span style="color: #0000ff;">Const</span> WM_KEYUP <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">UInteger</span> = <span style="color: #cc66cc;">&amp;H101</span>
    <span style="color: #0000ff;">Const</span> VK_ENTER <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">&amp;HD</span>
&nbsp;
  <span style="color: #0000ff;">Dim</span> processes <span style="color: #0000ff;">As</span> Process<span class="br0">&#40;</span><span class="br0">&#41;</span> = Process.GetProcessesByName<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;TestApp&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> processes <span style="color: #0000ff;">Is</span> <span style="color: #0000ff;">Nothing</span> <span style="color: #0000ff;">AndAlso</span> <span style="color: #0000ff;">Not</span> processes.Length = <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">Dim</span> hwnd <span style="color: #0000ff;">As</span> IntPtr = processes<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>.MainWindowHandle
            <span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> wind <span style="color: #0000ff;">In</span> ChildWindowsFromHandle<span class="br0">&#40;</span>hwnd<span class="br0">&#41;</span>
                <span style="color: #0000ff;">If</span> CaptionFromHandle<span class="br0">&#40;</span>wind<span class="br0">&#41;</span> = <span style="color: #FF0000;">&quot;Button1&quot;</span> <span style="color: #0000ff;">Then</span>
                    PostMessage<span class="br0">&#40;</span>wind, WM_KEYDOWN, <span style="color: #0000ff;">CType</span><span class="br0">&#40;</span>VK_ENTER, IntPtr<span class="br0">&#41;</span>, IntPtr.Zero<span class="br0">&#41;</span>
                    PostMessage<span class="br0">&#40;</span>wind, WM_KEYUP, <span style="color: #0000ff;">CType</span><span class="br0">&#40;</span>VK_ENTER, IntPtr<span class="br0">&#41;</span>, IntPtr.Zero<span class="br0">&#41;</span>
                <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
            <span style="color: #0000ff;">Next</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span></pre></td></tr></table></pre>
</div><br />
<b>---&gt; Au cas ou tu souhaiterais simuler la touche TAB sur le contrôle alors c'est comme ceci :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code vb.net :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:192px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
  <span style="color: #0000ff;">Const</span> VK_TAB <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">&amp;H9</span>
&nbsp;
  <span style="color: #0000ff;">Dim</span> processes <span style="color: #0000ff;">As</span> Process<span class="br0">&#40;</span><span class="br0">&#41;</span> = Process.GetProcessesByName<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;TestApp&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> processes <span style="color: #0000ff;">Is</span> <span style="color: #0000ff;">Nothing</span> <span style="color: #0000ff;">AndAlso</span> <span style="color: #0000ff;">Not</span> processes.Length = <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">Dim</span> hwnd <span style="color: #0000ff;">As</span> IntPtr = processes<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>.MainWindowHandle
            <span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> wind <span style="color: #0000ff;">In</span> ChildWindowsFromHandle<span class="br0">&#40;</span>hwnd<span class="br0">&#41;</span>
                <span style="color: #0000ff;">If</span> CaptionFromHandle<span class="br0">&#40;</span>wind<span class="br0">&#41;</span> = <span style="color: #FF0000;">&quot;Button2&quot;</span> <span style="color: #0000ff;">Then</span>
                    PostMessage<span class="br0">&#40;</span>wind, WM_KEYDOWN, <span style="color: #0000ff;">CType</span><span class="br0">&#40;</span>VK_TAB, IntPtr<span class="br0">&#41;</span>, IntPtr.Zero<span class="br0">&#41;</span>
                    PostMessage<span class="br0">&#40;</span>wind, WM_KEYUP, <span style="color: #0000ff;">CType</span><span class="br0">&#40;</span>VK_TAB, IntPtr<span class="br0">&#41;</span>, IntPtr.Zero<span class="br0">&#41;</span>
                <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
            <span style="color: #0000ff;">Next</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span></pre></td></tr></table></pre>
</div><br />
<b>PS : </b> Dans le cas ou l'application avec laquelle tu souhaites interagir est développée en DotNet il est également possible d'utiliser &quot;System.Reflection&quot; pour simuler des clics etc.....</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b3121/simuler-touche-entrer-tab-application-executee-puis-reduite-pinvoke/</guid>
		</item>
		<item>
			<title>Associer son programme à une extension de fichier</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b1840/associer-programme-extension-fichier/</link>
			<pubDate>Wed, 21 Dec 2016 10:01:38 GMT</pubDate>
			<description>Ce que tu souhaites faire...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Ce que tu souhaites faire débute ici :<br />
<a href="https://www.codeproject.com/articles/43675/c-fileassociation-class" target="_blank">https://www.codeproject.com/articles...ociation-class</a><br />
<br />
1- Dans un premier temps tu créés un installeur pour ton application car cette dernière devra toujours être exécuté depuis le même chemin (%program files%) comme tout autre programme qui sont associés à une extension sur ton système d'exploitation Windows.<br />
2- Tu penses à placer dans le chemin de ton application un fichier icône (.ico) qui sera utilisé lors de l'association<br />
3- Dans ton projet tu peux mettre dans les options une case à cocher : associer mon programme à l'extension &quot;.dev&quot; (par exemple) :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code c# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:144px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">//On associe l'extension .Dev &agrave; ton projet bas&eacute; sur cette librairie : http://www.codeproject.com/Articles/43675/C-FileAssociation-Class</span>
&nbsp;
<span class="br0">&#123;</span>
	AF_FileAssociator assoc = <span style="color: #0000ff;">new</span> AF_FileAssociator<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;.Dev&quot;</span><span class="br0">&#41;</span>;
	<span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>assoc.Exists == <span style="color: #0000ff;">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span style="color: #808080;">// Il faut bien veiller &agrave; ce que l'ex&eacute;cutable de ton projet poss&egrave;de toujours le m&ecirc;me chemin : pr&eacute;voir un installeur !!!!</span>
		assoc.Create<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Dev&quot;</span>, <span style="color: #FF0000;">&quot;Association example&quot;</span>, <span style="color: #0000ff;">new</span> ProgramIcon<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:<span style="color: #800000;">\\</span>Program Files (x86)<span style="color: #800000;">\\</span>TonProgram<span style="color: #800000;">\\</span>TonProgram.ico&quot;</span><span class="br0">&#41;</span>, <span style="color: #0000ff;">new</span> ExecApplication<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:<span style="color: #800000;">\\</span>Program Files (x86)<span style="color: #800000;">\\</span>TonProgram<span style="color: #800000;">\\</span>TonProgram.exe&quot;</span><span class="br0">&#41;</span>, <span style="color: #0000ff;">new</span> OpenWithList<span class="br0">&#40;</span><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">string</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#123;</span> <span style="color: #FF0000;">&quot;Dev&quot;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></pre>
</div><br />
4- Toujours dans ton projet, tu penses à mettre dans ta procédure Sub Main (point d'entrée de ton application) le code qui sera appelé lorsque l'utilisateur double cliquera sur un fichier portant l'extension &quot;.Dev&quot; :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code c# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:168px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">string</span><span class="br0">&#91;</span><span class="br0">&#93;</span> args = Environment.GetCommandLineArgs<span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>args != <span style="color: #0000ff;">null</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>args.Count &gt; <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span style="color: #808080;">//Ici le programme est ex&eacute;cut&eacute; en double cliquant sur un fichier portant l'extension .Dev</span>
		<span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>File.Exists<span class="br0">&#40;</span>args<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    <span style="color: #808080;">//Ici tu traites ton fichier .....</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>args.Count == <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span style="color: #808080;">//Ici le programme est ex&eacute;cut&eacute; directement.</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></pre>
</div><br />
<br />
Bon codage.<br />
<br />
++</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b1840/associer-programme-extension-fichier/</guid>
		</item>
		<item>
			<title>Ecrire et lire dans un fichier de configuration INI (Pinvoke)</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b1753/ecrire-lire-fichier-configuration-ini-pinvoke/</link>
			<pubDate>Fri, 18 Nov 2016 20:08:38 GMT</pubDate>
			<description>Il existe cette classe très...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Il existe cette classe très simple d'usage :<br />
<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">Imports</span> System.Runtime.InteropServices
<span style="color: #0000ff;">Imports</span> System.IO
<span style="color: #0000ff;">Imports</span> System.Text
&nbsp;
<span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Class</span> Ini
&nbsp;
<span style="color: #339933;">#Region</span> <span style="color: #FF0000;">&quot;Natives Methods&quot;</span>
&nbsp;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Declare</span> <span style="color: #0000ff;">Unicode</span> <span style="color: #0000ff;">Function</span> GetPrivateProfileString <span style="color: #0000ff;">Lib</span> <span style="color: #FF0000;">&quot;kernel32&quot;</span> <span style="color: #0000ff;">Alias</span> <span style="color: #FF0000;">&quot;GetPrivateProfileStringW&quot;</span> <span class="br0">&#40;</span>lpApplicationName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>,
                                                                                                               lpKeyName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, lpDefault <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>,
                                                                                                               lpReturnedString <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, nSize <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>,
                                                                                                               lpFileName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>
&nbsp;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Declare</span> <span style="color: #0000ff;">Unicode</span> <span style="color: #0000ff;">Function</span> WritePrivateProfileString <span style="color: #0000ff;">Lib</span> <span style="color: #FF0000;">&quot;kernel32&quot;</span> <span style="color: #0000ff;">Alias</span> <span style="color: #FF0000;">&quot;WritePrivateProfileStringW&quot;</span> <span class="br0">&#40;</span>lpApplicationName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>,
                                                                                                               lpKeyName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, lpString <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>,
                                                                                                               lpFileName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>
&nbsp;
    &lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;kernel32&quot;</span><span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> GetPrivateProfileString<span class="br0">&#40;</span>Section <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, <span style="color: #0000ff;">Key</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>, Value <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, &lt;MarshalAs<span class="br0">&#40;</span>UnmanagedType.LPArray<span class="br0">&#41;</span>&gt; Result <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, Size <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>, FileName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    &lt;DllImport<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;kernel32&quot;</span><span class="br0">&#41;</span>&gt;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> GetPrivateProfileString<span class="br0">&#40;</span>Section <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>, <span style="color: #0000ff;">Key</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, Value <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, &lt;MarshalAs<span class="br0">&#40;</span>UnmanagedType.LPArray<span class="br0">&#41;</span>&gt; Result <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, Size <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>, FileName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
<span style="color: #339933;">#End Region</span>
&nbsp;
<span style="color: #339933;">#Region</span> <span style="color: #FF0000;">&quot;Public Methods&quot;</span>
&nbsp;
    <span style="color: #808080;">'Suppression de section</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Sub</span> DeleteSection<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, SectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> lpKeyName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = <span style="color: #0000ff;">Nothing</span>
        <span style="color: #0000ff;">Dim</span> lpString <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = <span style="color: #0000ff;">Nothing</span>
        WritePrivateProfileString<span class="br0">&#40;</span>SectionName, lpKeyName, lpString, INIPath<span class="br0">&#41;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span>
&nbsp;
    <span style="color: #808080;">'Suppression de cl&eacute;</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Sub</span> DeleteKey<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, SectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, <span style="color: #0000ff;">Key</span>Name <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> lpString <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = <span style="color: #0000ff;">Nothing</span>
        WritePrivateProfileString<span class="br0">&#40;</span>SectionName, <span style="color: #0000ff;">Key</span>Name, lpString, INIPath<span class="br0">&#41;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span>
&nbsp;
    <span style="color: #808080;">'Lecture Valeur d'une section et cl&eacute; sp&eacute;cifi&eacute;e</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> ReadValue<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, SectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, <span style="color: #0000ff;">Key</span>Name <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
        <span style="color: #0000ff;">Return</span> ReadValue<span class="br0">&#40;</span>INIPath, SectionName, <span style="color: #0000ff;">Key</span>Name, <span style="color: #FF0000;">&quot;&quot;</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    <span style="color: #808080;">'Lecture Valeur d'une section et cl&eacute; sp&eacute;cifi&eacute;e (retourne valeur par d&eacute;faut si elle n'existe pas)</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> ReadValue<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, SectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, <span style="color: #0000ff;">Key</span>Name <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, DefaultValue <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
        <span style="color: #0000ff;">Dim</span> lpReturnedString <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = Strings.Space<span class="br0">&#40;</span><span style="color: #cc66cc;">2048</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> length <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = GetPrivateProfileString<span class="br0">&#40;</span>SectionName, <span style="color: #0000ff;">Key</span>Name, DefaultValue, lpReturnedString, lpReturnedString.Length, INIPath<span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> length &gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">Return</span> lpReturnedString.Substring<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, length<span class="br0">&#41;</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">Return</span> <span style="color: #FF0000;">&quot;&quot;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    <span style="color: #808080;">'Ecriture Cl&eacute;s/Valeurs dans une section sp&eacute;cifi&eacute;e</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Sub</span> Write<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, SectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, <span style="color: #0000ff;">Key</span>Name <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, TheValue <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span>
        WritePrivateProfileString<span class="br0">&#40;</span>SectionName, <span style="color: #0000ff;">Key</span>Name, TheValue, INIPath<span class="br0">&#41;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span>
&nbsp;
    <span style="color: #808080;">'D&eacute;tecte si section sp&eacute;cifi&eacute;e existe</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> SectionExists<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, SectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Boolean</span>
        <span style="color: #0000ff;">Return</span> SectionNames<span class="br0">&#40;</span>INIPath<span class="br0">&#41;</span>.Any<span class="br0">&#40;</span><span style="color: #0000ff;">Function</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span> s.ToLower = SectionName.ToLower<span class="br0">&#41;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    <span style="color: #808080;">'Retourne tous les noms des sections existantes dans le fichier de configuration</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> SectionNames<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> maxsize <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">500</span>
        <span style="color: #0000ff;">While</span> <span style="color: #0000ff;">True</span>
            <span style="color: #0000ff;">Dim</span> bytes <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span><span class="br0">&#41;</span> = <span style="color: #0000ff;">New</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span>maxsize - <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span>
            <span style="color: #0000ff;">Dim</span> size <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = GetPrivateProfileString<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #FF0000;">&quot;&quot;</span>, <span style="color: #FF0000;">&quot;&quot;</span>, bytes, maxsize, INIPath<span class="br0">&#41;</span>
            <span style="color: #0000ff;">If</span> size &lt; maxsize - <span style="color: #cc66cc;">2</span> <span style="color: #0000ff;">Then</span>
                <span style="color: #0000ff;">Dim</span> Selected <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = Encoding.ASCII.GetString<span class="br0">&#40;</span>bytes, <span style="color: #cc66cc;">0</span>, size - <span class="br0">&#40;</span><span style="color: #0000ff;">If</span><span class="br0">&#40;</span>size &gt; <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
                <span style="color: #0000ff;">Return</span> Selected.Split<span class="br0">&#40;</span><span style="color: #0000ff;">New</span> <span style="color: #0000ff;">Char</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>ControlChars.NullChar<span class="br0">&#125;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
            maxsize *= <span style="color: #cc66cc;">2</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">While</span>
        <span style="color: #0000ff;">Return</span> <span style="color: #0000ff;">Nothing</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
    <span style="color: #808080;">'Retourne toutes les cl&eacute;s existantes d'une section sp&eacute;cifi&eacute;e</span>
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> SectionKeys<span class="br0">&#40;</span>INIPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>, sectionName <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Dim</span> maxsize <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">500</span>
        <span style="color: #0000ff;">While</span> <span style="color: #0000ff;">True</span>
            <span style="color: #0000ff;">Dim</span> bytes <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span><span class="br0">&#41;</span> = <span style="color: #0000ff;">New</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span>maxsize - <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span>
            <span style="color: #0000ff;">Dim</span> size <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = GetPrivateProfileString<span class="br0">&#40;</span>sectionName, <span style="color: #cc66cc;">0</span>, <span style="color: #FF0000;">&quot;&quot;</span>, bytes, maxsize, INIPath<span class="br0">&#41;</span>
            <span style="color: #0000ff;">If</span> size &lt; maxsize - <span style="color: #cc66cc;">2</span> <span style="color: #0000ff;">Then</span>
                <span style="color: #0000ff;">Dim</span> entries <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = Encoding.ASCII.GetString<span class="br0">&#40;</span>bytes, <span style="color: #cc66cc;">0</span>, size - <span class="br0">&#40;</span><span style="color: #0000ff;">If</span><span class="br0">&#40;</span>size &gt; <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
                <span style="color: #0000ff;">Return</span> entries.Split<span class="br0">&#40;</span><span style="color: #0000ff;">New</span> <span style="color: #0000ff;">Char</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>ControlChars.NullChar<span class="br0">&#125;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
            maxsize *= <span style="color: #cc66cc;">2</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">While</span>
        <span style="color: #0000ff;">Return</span> <span style="color: #0000ff;">Nothing</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
<span style="color: #339933;">#End Region</span>
&nbsp;
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Class</span></pre></td></tr></table></pre>
</div><br />
<br />
<u><b>Comment l'utiliser</b></u> :<br />
<br />
<br />
<b>1- Ecrire une valeur</b> :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code ini :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">Ini.Write<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:<span style="color: #800000;">\Y</span>ourIniFile.ini&quot;</span>, <span style="color: #FF0000;">&quot;Section0&quot;</span>, <span style="color: #FF0000;">&quot;Key0&quot;</span>,<span style="color: #FF0000;">&quot;Value0&quot;</span><span class="br0">&#41;</span></pre>
</div><br />
<br />
<b>2- Lire une valeur</b> :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;"><span style="color: #0000ff;">Dim</span> Val <span style="color: #0000ff;">as</span> <span style="color: #0000ff;">string</span> = Ini.ReadValue<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:\YourIniFile.ini&quot;</span>, <span style="color: #FF0000;">&quot;Section0&quot;</span>,<span style="color: #FF0000;">&quot;Key1&quot;</span><span class="br0">&#41;</span></pre>
</div><br />
<br />
<b>3- Enumérer les noms de sections du fichier ini :</b> :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:84px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> Section <span style="color: #0000ff;">In</span> Ini.SectionNames<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:\YourIniFile.ini&quot;</span><span class="br0">&#41;</span>
    MsgBox<span class="br0">&#40;</span>Section<span class="br0">&#41;</span>
<span style="color: #0000ff;">Next</span></pre></td></tr></table></pre>
</div><br />
<b>4- Exemple de contenu du fichier .ini </b>:<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code ini :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:132px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #339933;">[Section0]</span>
<span style="color: #0080ff;">Key0</span>=Value0
<span style="color: #0080ff;">Key1</span>=Value1
&nbsp;
<span style="color: #339933;">[Section1]</span>
<span style="color: #0080ff;">Key0</span>=Value0
<span style="color: #0080ff;">Key1</span>=Value1</pre></td></tr></table></pre>
</div><br />
Bonne soirée.;)</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b1753/ecrire-lire-fichier-configuration-ini-pinvoke/</guid>
		</item>
		<item>
			<title>Extraire du texte contenu entre deux chaines de caractères</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b1752/extraire-texte-contenu-entre-chaines-caracteres/</link>
			<pubDate>Fri, 18 Nov 2016 19:56:02 GMT</pubDate>
			<description>Il existe 2 fonctions bien...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Il existe 2 fonctions bien pratiques pour obtenir du texte contenu entre 2 balises :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Function</span> ParseBetween<span class="br0">&#40;</span>Source$, Before$, After$<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">Dim</span> Results <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> List<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">Dim</span> T <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> List<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> <span style="color: #0000ff;">String</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">With</span> T
        .AddRange<span class="br0">&#40;</span>System.Text.RegularExpressions.Regex.Split<span class="br0">&#40;</span>Source, Before<span class="br0">&#41;</span><span class="br0">&#41;</span>
        .RemoveAt<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> Item$ <span style="color: #0000ff;">In</span> T
           Results.Add<span class="br0">&#40;</span>System.Text.RegularExpressions.Regex.Split<span class="br0">&#40;</span>Item, After<span class="br0">&#41;</span><span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Next</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">With</span>
    <span style="color: #0000ff;">Return</span> Results.ToArray
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
<span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Function</span> ParseBetween<span class="br0">&#40;</span>Source$, Before$, After$, Offset%<span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
    <span style="color: #0000ff;">If</span> String.IsNullOrEmpty<span class="br0">&#40;</span>Source<span class="br0">&#41;</span> <span style="color: #0000ff;">Then</span> 
        <span style="color: #0000ff;">Return</span> String.Empty
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
    <span style="color: #0000ff;">If</span> Source.Contains<span class="br0">&#40;</span>Before<span class="br0">&#41;</span> = <span style="color: #0000ff;">True</span> <span style="color: #0000ff;">Then</span>
        <span style="color: #0000ff;">Dim</span> Result$ = Source.Substring<span class="br0">&#40;</span>Source.IndexOf<span class="br0">&#40;</span>Before<span class="br0">&#41;</span> + Offset<span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> Result.Contains<span class="br0">&#40;</span>After<span class="br0">&#41;</span> = <span style="color: #0000ff;">True</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> String.IsNullOrEmpty<span class="br0">&#40;</span>After<span class="br0">&#41;</span> <span style="color: #0000ff;">Then</span> 
                Result = Result.Substring<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, Result.IndexOf<span class="br0">&#40;</span>After<span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">Return</span> Result
    <span style="color: #0000ff;">Else</span>
        <span style="color: #0000ff;">Return</span> String.Empty
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span></pre></td></tr></table></pre>
</div><br />
Dans le cas où plusieurs occurrences seront probablement trouvées dans le contenu à parser il faut utiliser la fonction qui retourne un tableau de String (la 1ère fonction) :<br />
<br />
En partant du principe que tu veux obtenir le &quot;Mes infos&quot; de la chaîne &quot;Programme TF1&quot; (nom que tu connais déjà préalablement) :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:120px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">   <span style="color: #0000ff;">Dim</span> TextToParse = <span style="color: #FF0000;">&quot;&lt;div&gt; &lt;span id=&quot;</span><span style="color: #FF0000;">&quot;programme&quot;</span><span style="color: #FF0000;">&quot;&gt;Programme TF1&lt;/span&gt; &lt;span&gt;Mes infos&lt;/span&gt; &lt;/div&gt;&quot;</span> &amp; vbNewLine &amp;
                            <span style="color: #FF0000;">&quot;&lt;div&gt; &lt;span id=&quot;</span><span style="color: #FF0000;">&quot;programme&quot;</span><span style="color: #FF0000;">&quot;&gt;Programme fr2&lt;/span&gt; &lt;span&gt;Mes infos&lt;/span&gt; &lt;/div&gt;&quot;</span>
&nbsp;
        <span style="color: #0000ff;">Dim</span> Result<span class="br0">&#40;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = ParseBetween<span class="br0">&#40;</span>TextToParse, <span style="color: #FF0000;">&quot;&lt;span id=&quot;</span><span style="color: #FF0000;">&quot;programme&quot;</span><span style="color: #FF0000;">&quot;&gt;Programme TF1&lt;/span&gt; &lt;span&gt;&quot;</span>, <span style="color: #FF0000;">&quot;&lt;/span&gt;&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> occur <span style="color: #0000ff;">In</span> Result
            MsgBox<span class="br0">&#40;</span>occur<span class="br0">&#41;</span>
        <span style="color: #0000ff;">Next</span></pre></td></tr></table></pre>
</div><br />
Tu peux parcourir le texte pour obtenir le nom des chaînes :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:120px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">   <span style="color: #0000ff;">Dim</span> TextToParse = <span style="color: #FF0000;">&quot;&lt;div&gt; &lt;span id=&quot;</span><span style="color: #FF0000;">&quot;programme&quot;</span><span style="color: #FF0000;">&quot;&gt;Programme TF1&lt;/span&gt; &lt;span&gt;Mes infos&lt;/span&gt; &lt;/div&gt;&quot;</span> &amp; vbNewLine &amp;
                            <span style="color: #FF0000;">&quot;&lt;div&gt; &lt;span id=&quot;</span><span style="color: #FF0000;">&quot;programme&quot;</span><span style="color: #FF0000;">&quot;&gt;Programme fr2&lt;/span&gt; &lt;span&gt;Mes infos&lt;/span&gt; &lt;/div&gt;&quot;</span>
&nbsp;
  <span style="color: #0000ff;">Dim</span> Result<span class="br0">&#40;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = ParseBetween<span class="br0">&#40;</span>TextToParse, <span style="color: #FF0000;">&quot;&lt;span id=&quot;</span><span style="color: #FF0000;">&quot;programme&quot;</span><span style="color: #FF0000;">&quot;&gt;&quot;</span>, <span style="color: #FF0000;">&quot;&lt;/span&gt;&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">For</span> <span style="color: #0000ff;">Each</span> occur <span style="color: #0000ff;">In</span> Result
            MsgBox<span class="br0">&#40;</span>occur<span class="br0">&#41;</span>
        <span style="color: #0000ff;">Next</span></pre></td></tr></table></pre>
</div><br />
A+</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b1752/extraire-texte-contenu-entre-chaines-caracteres/</guid>
		</item>
		<item>
			<title>La serialization xml</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b1751/serialization-xml/</link>
			<pubDate>Fri, 18 Nov 2016 19:45:59 GMT</pubDate>
			<description>La serialization xml : 
 
*1...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4">La serialization xml :</font><br />
<br />
<b>1 classe Evaluation :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:132px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&lt;Serializable&gt;
<span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Class</span> Evaluation
&nbsp;
    <span style="color: #0000ff;">Public</span> Version <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
    <span style="color: #0000ff;">Public</span> EtudeRendement <span style="color: #0000ff;">As</span> EtudeRendement
&nbsp;
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Class</span></pre></td></tr></table></pre>
</div><br />
<b>1 classe EtudeRendement :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:144px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&lt;Serializable&gt;
<span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Class</span> EtudeRendement
&nbsp;
    <span style="color: #0000ff;">Public</span> DateDeb <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
    <span style="color: #0000ff;">Public</span> NbTx <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
    <span style="color: #0000ff;">Public</span> Apr <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span>
&nbsp;
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Class</span></pre></td></tr></table></pre>
</div><br />
<b>1 classe de gestion AppSettings :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">Imports</span> System.Xml.Serialization
<span style="color: #0000ff;">Imports</span> System.IO
&nbsp;
    &lt;Serializable&gt;
    <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Class</span> AppSettings
&nbsp;
<span style="color: #339933;">#Region</span> <span style="color: #FF0000;">&quot; Fields &quot;</span>
        <span style="color: #0000ff;">Public</span> Evaluation <span style="color: #0000ff;">As</span> Evaluation
        &lt;XmlIgnore<span class="br0">&#40;</span><span class="br0">&#41;</span>&gt;
        <span style="color: #0000ff;">Public</span> XmlPath <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">String</span> = My.Application.Info.DirectoryPath &amp; <span style="color: #FF0000;">&quot;\Conf.xml&quot;</span>
<span style="color: #339933;">#End Region</span>
&nbsp;
<span style="color: #339933;">#Region</span> <span style="color: #FF0000;">&quot; Methods &quot;</span>
        <span style="color: #808080;">''' &lt;summary&gt;</span>
        <span style="color: #808080;">''' Enregistre l'&eacute;tat courant de la classe dans un fichier au format XML.</span>
        <span style="color: #808080;">''' &lt;/summary&gt;</span>
        <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Sub</span> SaveFile<span class="br0">&#40;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">Dim</span> serializer <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> XmlSerializer<span class="br0">&#40;</span><span style="color: #0000ff;">GetType</span><span class="br0">&#40;</span>AppSettings<span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">Dim</span> ecrivain <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> StreamWriter<span class="br0">&#40;</span>XmlPath<span class="br0">&#41;</span>
            serializer.Serialize<span class="br0">&#40;</span>ecrivain, <span style="color: #0000ff;">Me</span><span class="br0">&#41;</span>
            ecrivain.Close<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span>
&nbsp;
        <span style="color: #808080;">''' &lt;summary&gt;</span>
        <span style="color: #808080;">''' Charge l'&eacute;tat courant du fichier XML.</span>
        <span style="color: #808080;">''' &lt;/summary&gt;</span>
        <span style="color: #808080;">''' &lt;returns&gt;Valeur de type AppSettings&lt;/returns&gt;</span>
        <span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Shared</span> <span style="color: #0000ff;">Function</span> LoadFile<span class="br0">&#40;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">As</span> AppSettings
            <span style="color: #0000ff;">Dim</span> deserializer <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> XmlSerializer<span class="br0">&#40;</span><span style="color: #0000ff;">GetType</span><span class="br0">&#40;</span>AppSettings<span class="br0">&#41;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">Dim</span> lecteur <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> StreamReader<span class="br0">&#40;</span>My.Application.Info.DirectoryPath &amp; <span style="color: #FF0000;">&quot;\Conf.xml&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">Dim</span> p <span style="color: #0000ff;">As</span> AppSettings = <span style="color: #0000ff;">DirectCast</span><span class="br0">&#40;</span>deserializer.Deserialize<span class="br0">&#40;</span>lecteur<span class="br0">&#41;</span>, AppSettings<span class="br0">&#41;</span>
            lecteur.Close<span class="br0">&#40;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">Return</span> p
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Function</span>
&nbsp;
<span style="color: #339933;">#End Region</span>
&nbsp;
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Class</span></pre></td></tr></table></pre>
</div><br />
<b>1 projet test d'enregistrement avec 3 textbox et 1 bouton :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">Public</span> <span style="color: #0000ff;">Class</span> Form1
&nbsp;
    <span style="color: #0000ff;">Private</span> m_Settings <span style="color: #0000ff;">As</span> AppSettings
&nbsp;
    <span style="color: #0000ff;">Sub</span> <span style="color: #0000ff;">New</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
        InitializeComponent<span class="br0">&#40;</span><span class="br0">&#41;</span>
        m_Settings = <span style="color: #0000ff;">New</span> AppSettings
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span>
&nbsp;
    <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Sub</span> Button1_Click<span class="br0">&#40;</span>sender <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Object</span>, e <span style="color: #0000ff;">As</span> EventArgs<span class="br0">&#41;</span> <span style="color: #0000ff;">Handles</span> Button1.Click
        <span style="color: #0000ff;">Dim</span> etud <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> EtudeRendement <span style="color: #0000ff;">With</span> <span class="br0">&#123;</span>.DateDeb = TextBox1.Text,
                                             .NbTx = TextBox2.Text,
                                             .Apr = TextBox3.Text<span class="br0">&#125;</span>
        <span style="color: #0000ff;">Dim</span> eval <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> Evaluation <span style="color: #0000ff;">With</span> <span class="br0">&#123;</span>.EtudeRendement = etud,
                                         .Version = <span style="color: #FF0000;">&quot;3.1&quot;</span><span class="br0">&#125;</span>
&nbsp;
        m_Settings.Evaluation = eval
        m_Settings.SaveFile<span class="br0">&#40;</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span>
<span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Class</span></pre></td></tr></table></pre>
</div><br />
<b>Le contenu du fichier .xml après l'enregistrement :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code xml :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:180px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #009900;"><span style="color: #0000ff;">&lt;?xml</span> <span style="color: #339933;">version</span>=<span style="color: #FF0000;">&quot;1.0&quot;</span> <span style="color: #339933;">encoding</span>=<span style="color: #FF0000;">&quot;utf-8&quot;</span><span style="color: #0000ff;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #0000ff;">&lt;AppSettings</span> <span style="color: #339933;">xmlns:xsi</span>=<span style="color: #FF0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span style="color: #339933;">xmlns:xsd</span>=<span style="color: #FF0000;">&quot;http://www.w3.org/2001/XMLSchema&quot;</span><span style="color: #0000ff;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #0000ff;">&lt;Evaluation<span style="color: #0000ff;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #0000ff;">&lt;Version<span style="color: #0000ff;">&gt;</span></span></span>3.1<span style="color: #009900;"><span style="color: #0000ff;">&lt;/Version<span style="color: #0000ff;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #0000ff;">&lt;EtudeRendement<span style="color: #0000ff;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #0000ff;">&lt;DateDeb<span style="color: #0000ff;">&gt;</span></span></span>01/12/2016<span style="color: #009900;"><span style="color: #0000ff;">&lt;/DateDeb<span style="color: #0000ff;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #0000ff;">&lt;NbTx<span style="color: #0000ff;">&gt;</span></span></span>Trvx<span style="color: #009900;"><span style="color: #0000ff;">&lt;/NbTx<span style="color: #0000ff;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #0000ff;">&lt;Apr<span style="color: #0000ff;">&gt;</span></span></span>0<span style="color: #009900;"><span style="color: #0000ff;">&lt;/Apr<span style="color: #0000ff;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #0000ff;">&lt;/EtudeRendement<span style="color: #0000ff;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #0000ff;">&lt;/Evaluation<span style="color: #0000ff;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #0000ff;">&lt;/AppSettings<span style="color: #0000ff;">&gt;</span></span></span></pre></td></tr></table></pre>
</div><br />
Un langage objet pour de la programmation orienté objet :mrgreen:</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b1751/serialization-xml/</guid>
		</item>
		<item>
			<title>Télécharger un fichier depuis FTP avec Progressbar et BackgroundWorker</title>
			<link>https://www.developpez.net/forums/blogs/260975-wallace1/b1750/telecharger-fichier-ftp-progressbar-backgroundworker/</link>
			<pubDate>Fri, 18 Nov 2016 19:38:45 GMT</pubDate>
			<description>Je viens compléter le sujet...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Je viens compléter le sujet concernant l'implémentation du BackgroundWorker et ses 3 events :<br />
<br />
<b>On vérifie si le Bgw n'est pas déjà en cours d'exécution :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:120px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
  <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Sub</span> Button1_Click<span class="br0">&#40;</span>sender <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Object</span>, e <span style="color: #0000ff;">As</span> EventArgs<span class="br0">&#41;</span> <span style="color: #0000ff;">Handles</span> Button1.Click
&nbsp;
        <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> Bgw.IsBusy <span style="color: #0000ff;">Then</span>
            Bgw.RunWorkerAsync<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span></pre></td></tr></table></pre>
</div><br />
<b>On rentre dans le thread. Dans le corps de cette procédure on ne mets SURTOUT PAS A JOUR L'INTERFACE (LES CONTROLES) DU LOGICIEL ou alors on sort en appelant ReportProgress :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
   <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Sub</span> Bgw_DoWork<span class="br0">&#40;</span>sender <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Object</span>, e <span style="color: #0000ff;">As</span> System.ComponentModel.DoWorkEventArgs<span class="br0">&#41;</span> <span style="color: #0000ff;">Handles</span> Bgw.DoWork
        <span style="color: #0000ff;">Try</span>
            <span style="color: #808080;">'' la requ&ecirc;te pour r&eacute;cup&eacute;rer la taille du fichier </span>
            <span style="color: #0000ff;">Dim</span> dlReq <span style="color: #0000ff;">As</span> FtpWebRequest = <span style="color: #0000ff;">CType</span><span class="br0">&#40;</span>WebRequest.Create<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;ftp://x.x.x.x//folder/sub/distantFile.bin&quot;</span><span class="br0">&#41;</span>, FtpWebRequest<span class="br0">&#41;</span>
            dlReq.Credentials = <span style="color: #0000ff;">New</span> NetworkCredential<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;user&quot;</span>, <span style="color: #FF0000;">&quot;pass&quot;</span><span class="br0">&#41;</span>
            dlReq.Method = WebRequestMethods.Ftp.GetFileSize
            <span style="color: #0000ff;">Dim</span> response <span style="color: #0000ff;">As</span> FtpWebResponse = <span style="color: #0000ff;">DirectCast</span><span class="br0">&#40;</span>dlReq.GetResponse<span class="br0">&#40;</span><span class="br0">&#41;</span>, FtpWebResponse<span class="br0">&#41;</span>
            <span style="color: #0000ff;">Dim</span> fileSize = response.ContentLength
&nbsp;
            <span style="color: #808080;">'' la requ&ecirc;te pour t&eacute;l&eacute;charger le fichier</span>
            dlReq = <span style="color: #0000ff;">CType</span><span class="br0">&#40;</span>WebRequest.Create<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;ftp://x.x.x.x//folder/sub/distantFile.bin&quot;</span><span class="br0">&#41;</span>, FtpWebRequest<span class="br0">&#41;</span>
            dlReq.Credentials = <span style="color: #0000ff;">New</span> NetworkCredential<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;user&quot;</span>, <span style="color: #FF0000;">&quot;pass&quot;</span><span class="br0">&#41;</span>
            dlReq.Method = WebRequestMethods.Ftp.DownloadFile
            <span style="color: #0000ff;">Dim</span> dlResp <span style="color: #0000ff;">As</span> FtpWebResponse = <span style="color: #0000ff;">DirectCast</span><span class="br0">&#40;</span>dlReq.GetResponse<span class="br0">&#40;</span><span class="br0">&#41;</span>, FtpWebResponse<span class="br0">&#41;</span>
            <span style="color: #0000ff;">Dim</span> dlFile <span style="color: #0000ff;">As</span> Stream = dlResp.GetResponseStream<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
            <span style="color: #0000ff;">Using</span> localFile <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">New</span> FileStream<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:\tmp\localFile.bin&quot;</span>, FileMode.Create<span class="br0">&#41;</span>
&nbsp;
                <span style="color: #0000ff;">Dim</span> Length <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">2048</span>
                <span style="color: #0000ff;">Dim</span> buffer <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span><span class="br0">&#41;</span> = <span style="color: #0000ff;">New</span> <span style="color: #0000ff;">Byte</span><span class="br0">&#40;</span>Length - <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span>
                <span style="color: #0000ff;">Dim</span> bytesRead <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = dlFile.Read<span class="br0">&#40;</span>buffer, <span style="color: #cc66cc;">0</span>, Length<span class="br0">&#41;</span>
                <span style="color: #0000ff;">Dim</span> bytes <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Integer</span> = <span style="color: #cc66cc;">0</span>
&nbsp;
                <span style="color: #0000ff;">Dim</span> totalBytesRead <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Long</span> = bytesRead
                <span style="color: #0000ff;">While</span> bytesRead &gt; <span style="color: #cc66cc;">0</span>
                    localFile.Write<span class="br0">&#40;</span>buffer, <span style="color: #cc66cc;">0</span>, bytesRead<span class="br0">&#41;</span>
                    Bgw.ReportProgress<span class="br0">&#40;</span><span style="color: #0000ff;">CInt</span><span class="br0">&#40;</span>totalBytesRead * <span style="color: #cc66cc;">100</span> / fileSize<span class="br0">&#41;</span>, fileSize<span class="br0">&#41;</span>
                    bytesRead = dlFile.Read<span class="br0">&#40;</span>buffer, <span style="color: #cc66cc;">0</span>, Length<span class="br0">&#41;</span>
                    totalBytesRead += bytesRead
                <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">While</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Using</span>
            <span style="color: #808080;">'On v&eacute;rifie que le fichier t&eacute;l&eacute;charg&eacute; existe et qu'il p&egrave;se le bon poids.</span>
            e.Result = Tuple.Create<span class="br0">&#40;</span>File.Exists<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:\tmp\localFile.bin&quot;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">AndAlso</span> <span style="color: #0000ff;">New</span> FileInfo<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;C:\tmp\localFile.bin&quot;</span><span class="br0">&#41;</span>.Length = fileSize, <span style="color: #FF0000;">&quot;Op&eacute;ration r&eacute;ussie&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">Catch</span> ex <span style="color: #0000ff;">As</span> Exception
            e.Result = Tuple.Create<span class="br0">&#40;</span><span style="color: #0000ff;">False</span>, <span style="color: #FF0000;">&quot;Echec de l'op&eacute;ration : &quot;</span> &amp; vbNewLine &amp; ex.ToString<span class="br0">&#41;</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Try</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span></pre></td></tr></table></pre>
</div><br />
<b>On rentre dans cette procédure pour mettre à jour les contrôles côté UI (ici la barre de progression) :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
   <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Sub</span> Bgw_ProgressChanged<span class="br0">&#40;</span>sender <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Object</span>, e <span style="color: #0000ff;">As</span> ProgressChangedEventArgs<span class="br0">&#41;</span> <span style="color: #0000ff;">Handles</span> Bgw.ProgressChanged
        <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> e.ProgressPercentage &gt; <span style="color: #cc66cc;">100</span> <span style="color: #0000ff;">Then</span>
            ProgressBar1.Value = e.ProgressPercentage
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span></pre></td></tr></table></pre>
</div><br />
<b>Le thread se termine ici et PAS AILLEURS (avec gestion : opération réussie, erreur) :</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code VB.NET :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:168px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
  <span style="color: #0000ff;">Private</span> <span style="color: #0000ff;">Sub</span> Bgw_RunWorkerCompleted<span class="br0">&#40;</span>sender <span style="color: #0000ff;">As</span> <span style="color: #0000ff;">Object</span>, e <span style="color: #0000ff;">As</span> RunWorkerCompletedEventArgs<span class="br0">&#41;</span> <span style="color: #0000ff;">Handles</span> Bgw.RunWorkerCompleted
        <span style="color: #0000ff;">Dim</span> tup = <span style="color: #0000ff;">TryCast</span><span class="br0">&#40;</span>e.Result, Tuple<span class="br0">&#40;</span><span style="color: #0000ff;">Of</span> <span style="color: #0000ff;">Boolean</span>, <span style="color: #0000ff;">String</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">If</span> <span style="color: #0000ff;">Not</span> tup <span style="color: #0000ff;">Is</span> <span style="color: #0000ff;">Nothing</span> <span style="color: #0000ff;">Then</span>
            <span style="color: #0000ff;">If</span> tup.Item1 = <span style="color: #0000ff;">True</span> <span style="color: #0000ff;">Then</span>
                MessageBox.Show<span class="br0">&#40;</span>tup.Item2, <span style="color: #FF0000;">&quot;R&eacute;ussite&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Information<span class="br0">&#41;</span>
            <span style="color: #0000ff;">Else</span>
                MessageBox.Show<span class="br0">&#40;</span>tup.Item2, <span style="color: #FF0000;">&quot;Erreur&quot;</span>, MessageBoxButtons.OK, MessageBoxIcon.Warning<span class="br0">&#41;</span>
            <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
        <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">If</span>
    <span style="color: #0000ff;">End</span> <span style="color: #0000ff;">Sub</span></pre></td></tr></table></pre>
</div><br />
Enjoy A+<br />
<br />
Si besoin d'explications supplémentaires, il ne faut pas hésiter ;)</blockquote>

]]></content:encoded>
			<dc:creator>wallace1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/260975-wallace1/b1750/telecharger-fichier-ftp-progressbar-backgroundworker/</guid>
		</item>
	</channel>
</rss>
