Piloter FENETRE de telechargement

DUD - Modifié le 8 janv. 2018 à 20:51
DUDDOMI Messages postés 4 Date d'inscription lundi 8 janvier 2018 Statut Membre Dernière intervention 13 janvier 2018 - 13 janv. 2018 à 13:57
Bonjour,

je désirerai piloter la fenêtre de téléchargement OUVIR ENREGISTER ANNULER , c'est à dire, je voudrais avec un script cliquer sur le bouton ENREGISTER pour récupérer le résultat .
je sais le faire en vb6 , je récupérais le handle de la fenêtre puis je donnais le focus et je cliquais sur le bouton enregistrer, de cette façon
NOM = "Téléchargement de fichiers"
hwnd = FindWindow(vbNullString, NOM)
Call SetForegroundWindow(hwnd)
hwndbutoon = FindWindowex(hwnd, 0, "Button", "En®istrer")
 Putfocus hwndbutoon
Call SendMessage(hwndbutoon, BM_CLICK, 0, ByVal 0&)


mais là , la fenêtre n'a pas de nom et je n'ai pas ni le "name" , ni "id" du bouton
Pouvez vous m'aider

merci Dominique

6 réponses

@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
8 janv. 2018 à 20:54
bonjour

j'ai du mal a comprendre ce que tu veut faire.
0
DUDDOMI Messages postés 4 Date d'inscription lundi 8 janvier 2018 Statut Membre Dernière intervention 13 janvier 2018
Modifié le 8 janv. 2018 à 21:43
BONSOIR,
voilà j 'ai un lien pour le travail qui nous permet d'avoir accès à un formulaire web où l'on indique la date de début et la date de fin ,ainsi que la ville et d'autres filtres,
puis on clic sur un bouton de validation et cela importe des données qui se trouvent sur un serveur où j'ai pas accès autrement , pour obtenir un fichier Excel au final.
Pour éviter de faire cela tous les jours , j'ai réussi en créant plusieurs pages en php à automatiser la saisie de tous les filtres qui restent identique au quotidien , mais je n'arrive pas à cliquer en auto dans la fenêtre de téléchargement windows qui apparait après le rapatriement des données et ainsi indiquer le chemin où je désire que le fichier excel se crée sur mon ordi.
En VB6 j avais réussi et le programme reproduisait ce que l'on faisait en manuel , j'aimerai comme je fais du php maintenant , le faire en javascript ou php
merci pour avoir lu mon message .
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
8 janv. 2018 à 22:48
Bonjour,

Même si je doute que ce que tu souhaites faire soit faisable avec du php.... il faudrait, à minimum, nous fournir le code source de la page en question (.. le bouton est-il dans un FORM ou alors fait-il appel à un script js ?) ainsi que le code php que tu as écris pour accéder à cette page.

Sachant que tu ne pourras jamais (du moins il me semble.....) "simuler" un click sur un bouton avec un script php tel que tu l'entends..
A la limite.. tu ne peux que faire appel à l'url ou faire appel au formulaire via, par exemple, une requête CURL.
Par exemple :
$ch = curl_init();

// params example
$post = [
    'username' => 'user1',
    'password' => 'pass1'
];

// Request URL
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

// server response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_response = curl_exec ($ch);

curl_close ($ch);


Ou faire du téléchargement si tu connais l'url du fichier
set_time_limit(0); // unlimited max execution time
$options = array(
  CURLOPT_FILE    => '/path/to/download/the/file/to.zip',
  CURLOPT_TIMEOUT =>  28800, // set this to 8 hours so we dont timeout on big files
  CURLOPT_URL     => 'http://remoteserver.com/path/to/big/file.zip',
);

$ch = curl_init();
curl_setopt_array($ch, $options);
curl_exec($ch);
curl_close($ch);


0
DUDDOMI Messages postés 4 Date d'inscription lundi 8 janvier 2018 Statut Membre Dernière intervention 13 janvier 2018
Modifié le 9 janv. 2018 à 14:41
Bonjour
voici une partie du code source de la page avec un setTimeout que j'ai mis en haut pour cliquer sur le bouton de téléchargement , là tout va bien , c'est après que je n'arrive pas à cliquer sur le bouton enregistrer qui apparait dans une fenêtre Windows
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<script type="text/javascript"> 
 setTimeout(function() {   
   var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
document.getElementById("ctl00_BtnFichier").dispatchEvent(evt);  
},10000);  
</script>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>      
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=8" /><meta http-equiv="Cache-Control" content="private" /><meta http-equiv="Pragma" content="no-cache" /><title>
   - Page des exports
</title><link rel="stylesheet" href="Styles/styleNew.css" type="text/css" />
    <script language="javascript" type="text/javascript"src="Scripts/JScript.js"></script>
    <script type="text/javascript">
        // Used to define the method to cause postback 
        function doPostBack()
        {
            WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$btnDummyToPostBack", "", true, "", "", false, true))
        }

        function confirmSubmit(msg)
     {
     if (confirm(msg))
     { 
              __doPostBack('LinkButton_PostBack', '');
     }           
           return;
     }

        function detection_Version_Office()
     {
            try
            {
                var Excel = new ActiveXObject("excel.application");  //Create EXCEL object
                Excel.Visible = false; 
                document.getElementById('Hidversion').value = Excel.version;
            }
            catch (e)
            {
                alert(e.Description);
            }
            finally 
            {
                if (Excel !== null)
                {
                    Excel.Quit(); 
                    Excel = null; 
                }
            }
        }

    </script>  

</head>    
    
<body>
    <form name="aspnetForm" method="post" action="https://adresse du site/Export.aspx?Script=14" id="aspnetForm"><input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="hyeIQv0wrexXklUqzuG2mg+pBLhxr6akZNmUuV/Qz8CMOUIzuhO9XTJO13HcGUIw==" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />


<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>
   <div id="ctl00_PanelOnglets" style="width:100%;">
  
      <div id="ctl00_updatePanel_Result">
 
          <div id="ctl00_Panel_Results" class="resultats" style="height:50px;overflow:auto;">
  
           <table width="98%">
            <tr>
              <td style="height: 16px">
                  
                
                <br />
                                
                <input type="submit" name="ctl00$BtnFichier" value="Télécharger le fichier" id="ctl00_BtnFichier" />
               </td>
               <td align="right" style="height: 16px">
                  
               </td>
               </tr>
           </table>
           <table id="ctl00_Table_Results" border="0">

  </table>
        
 </div>       
</div>                 
    
    </div>
 
</form>
</body>
</html>

merci
cordialement domi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DUDDOMI Messages postés 4 Date d'inscription lundi 8 janvier 2018 Statut Membre Dernière intervention 13 janvier 2018
Modifié le 13 janv. 2018 à 23:59
Bonjour
je reviens vers vous car j'essaye d'utiliser curl pour ce projet et un autre , mais je n'arrive pas à initialiser

J' ai essayé ce tuto https://www.youtube.com/watch?v=7qNTi1sEfE8%2C et j'ai toujours ce message avec easyphp en local

Fatal error: Call to undefined function curl_init() in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\curl-master\curl_1_1.php on line 3

Avec ce code

<?php
    // Initialiser cURL
    $curl = curl_init();
    // Définir l'adresse à ouvrir
    curl_setopt($curl, CURLOPT_URL, "https://www.google.fr/");
    // Suivre les redirections s'il y en a
    @curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    // Exécuter
    $result = curl_exec($curl);
    // Fermer pour libérer des ressources systèmes
    curl_close($curl);
    // Afficher le code source de la page
    echo htmlentities($result);
    ?>


j'aimerai vraiment trouver la solution car pour moi c'est un hobby

merci pour l'aide dominique
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
13 janv. 2018 à 11:39
Bonjour,

1 - Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code


2 - As tu activé CURL dans ton easyphp ?
Si il est présent dans easyphp... tu peux l'activer
Soit par les menus d'easyphp ... soit en l'activant depuis le fichier php.ini
Mais sinon il te faudra utiliser autre chose que easyphp. Perso je préfère XAMPP ou sinon WAMP
0
DUDDOMI Messages postés 4 Date d'inscription lundi 8 janvier 2018 Statut Membre Dernière intervention 13 janvier 2018
13 janv. 2018 à 13:57
BONJOUR

merci pour ton aide et tes remarques , j'ai fini par trouver ce qui n'était pas bon , la dll de curl n'était pas bonne , je vais continuer pour voir si je peux réaliser ce que je veux en utilisant ton code curl , et je vais regarder ton lien
merci beaucoup
0
Rejoignez-nous