IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WebDev Discussion :

Piloter une application Windev depuis Webdev ? [WB17]


Sujet :

WebDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Par défaut Piloter une application Windev depuis Webdev ?
    Bonjour,

    je me heurte à un problème, j'ai développé une classe qui pilote un objet OLE Automation Excel, elle fonctionne très bien avec Windev (en débug et en déployé) et Webdev (uniquement en débug).

    Seulement en déployé impossible de la faire fonctionner depuis Webdev, d'après la documentation de PC-Soft (http://doc.pcsoft.fr/fr-FR/?1514015&...&q=Objet%20OLE) le pilotage OLE via une application Web pose des problèmes de sécurité. les serveurs Web sont configurés par défaut pour interdire ce type de manipulation.

    Pour pallier à ce problème, je voudrais demander à mon application Windev de faire le travail depuis le site Webdev dynamique, mais je ne sais pas comment faire dialoguer mes 2 applications ni si c'est possible ?

    Il s'agit uniquement d'envoyer une instruction à mon application Windev (qui tourne en tâche de fond) depuis mon Application Webdev.

    Merci d'avance
    Cladoo

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 172
    Par défaut
    Je viens justement de finir de développer le même type d'application mais pour piloter word.

    Voici la ligne de code coté webdev qui me permet de lancer l'application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nRetour = LanceAppli("""NomAppil"" ""Param1"" ""param2"" ""param3""",exeActif,exeValeurRetour)
    Comme tu peux voir il est possible de passer des paramètres à l'application. Attention il faut bien mettre 2 doubles guillemets autour du nom de l'application et des paramètre pour que l'application se lance correctement. Ensuite exeActif permet d'avoir une exécution bloquante donc webdev attendra la fin de l'exécution avant de continuer. Et avec exeValeurRetour il est possible de récupérer un entier et seulement un entier du programme qui est en train de s'exécuter.

    Pour récupérer les paramètres avec l'application windev, il te suffit d'utiliser LigneCommande(nParam) avec nParam le numéro du paramètre, par exemple LigneCommande(1) pour récupérer Param1 de l'exemple de code présenté plus haut.

    Ensuite pour la valeur de retour, j'ai déclaré un entier global au projet qui est renvoyé dans le bloc de code de "Fermeture du programme". Pour connaitre à quoi correspond l'entier renvoyer j'ai utilisé un collection de procédure partagé entre mon projet windev et mon projet webdev. Dans cette collection j'ai un tas de constantes qui permettent au site webdev de connaitre la signification de l'entier renvoyé par le programme. Ceci à l'avantage que quand un valeur d'une constante est changé pour l'un des projets, il est automatiquement changé sur le deuxième et donc aucune incidence sur le bon fonctionnement.

    Il est a noté par contre que la fonction "FinProgramme" s'utilise avec le paramètre de fermeture à vrai pour une exécution du code de "Fermeture du programme".
    Attention, il ne faut pas utilisé de fonction bloquante dans le programme qui pilotera excel du style les InfoBox ou toutes autres sortes de boîte de dialogue. En effet celui-ci va va s'exécuter en tâche de fond sur le serveur et donc aucun utilisateur ne pourra interagir avec ces boîtes de dialogue et donc le programme sera bloqué.

    Je te conseille dans un premier temps de tester ce système sur ton poste de développement qui fait office à la fois de poste client et de serveur pendant les tests. Mais rapidement lancer des tests sur une version de ton site web déployé sur un serveur test. Effectivement, il se peut que cela ne marche pas. C'est sûrement dû à un problème de configuration sur le serveur et non un problème de code. Je ne vais pas m'étaler tout de suite sur les différents problèmes que tu pourras rencontrer.

    J'espère avoir répondu à ta problématique et que mon explication est assez complète. Si tu as des questions supplémentaire je reste à ta disposition.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Par défaut
    Merci de ta réponse, j'ai effectivement adopté cette méthode (développement en cours depuis 15min )

    Je prends note de tes remarques, ça va me faire gagner du temps!

    Petite question : dans ce système, on lance une appli tiers pour faire un traitement paramétré par les lignes de commandes adressées.
    Cependant, si j'ai déjà un logiciel qui tourne en tâche de fond (dans mon cas il intègre des données qu'il récupère sur un FTP), puis-je lui dire vulgairement :
    "Hey toi qui est ouvert, je te demande de traiter telle ou telle instruction dans ta file d'attente" ?

    Dans ce cas, je ne peux pas utiliser LanceAppli puisqu'il est déjà ouvert, mais est-ce possible de lui adresser une demande ? (j'ai peur d'être obligé de passer par des sockets pour cela)

    Merci !

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 172
    Par défaut
    J'avoue ne pas avoir eu besoin d'avoir un programme qui tourne en tâche de fond. Donc je préfère avouer mon manque d'information la dedans au lieu de t'orienter vers une mauvaise piste. Mais je suis sûr qu'il est possible de trouver sur internet comment faire dialoguer deux processus

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Par défaut
    Du coup j'ai utilisé la méthode avec LanceAppli et le passage de paramètre, ça marche parfaitement. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Généralités] transferer une application windev vers webdev (V.15,16 &17)
    Par omasabik dans le forum WinDev
    Réponses: 4
    Dernier message: 08/01/2013, 10h28
  2. Réponses: 1
    Dernier message: 13/11/2007, 09h10
  3. Piloter une macro/Excel depuis une application VB
    Par pjbou dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/04/2007, 16h01
  4. Réponses: 8
    Dernier message: 28/10/2005, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo