Piloter FENETRE de telechargement

DUD - 8 janv. 2018 à 19:42 - Dernière réponse : DUDDOMI 4 Messages postés lundi 8 janvier 2018Date d'inscription 13 janvier 2018 Dernière intervention
- 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
Afficher la suite 

7 réponses

Répondre au sujet
@karamel 1654 Messages postés vendredi 9 mai 2008Date d'inscriptionModérateurStatut 23 février 2018 Dernière intervention - 8 janv. 2018 à 20:54
0
Utile
bonjour

j'ai du mal a comprendre ce que tu veut faire.
Commenter la réponse de @karamel
DUDDOMI 4 Messages postés lundi 8 janvier 2018Date d'inscription 13 janvier 2018 Dernière intervention - Modifié par DUDDOMI le 8/01/2018 à 21:43
0
Utile
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 .
Commenter la réponse de DUDDOMI
jordane45 20553 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 8 janv. 2018 à 22:48
0
Utile
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);


Commenter la réponse de jordane45
DUDDOMI 4 Messages postés lundi 8 janvier 2018Date d'inscription 13 janvier 2018 Dernière intervention - Modifié par @karamel le 9/01/2018 à 14:41
0
Utile
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
Commenter la réponse de DUDDOMI
DUDDOMI 4 Messages postés lundi 8 janvier 2018Date d'inscription 13 janvier 2018 Dernière intervention - Modifié par @karamel le 13/01/2018 à 23:59
0
Utile
1
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
jordane45 20553 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 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
Commenter la réponse de DUDDOMI
DUDDOMI 4 Messages postés lundi 8 janvier 2018Date d'inscription 13 janvier 2018 Dernière intervention - 13 janv. 2018 à 13:57
0
Utile
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
Commenter la réponse de DUDDOMI

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.