FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» COMPILATEUR V 0.9 beta 7 du 10 aout 2017
par Yannick Aujourd'hui à 1:58

» Pb 17 (en analyse): ITEM_SELECT ne fonctionne pas
par Jack Hier à 19:26

» Compilateur FBPano
par Mike Hier à 13:52

» un nouveau editeur panobasic
par Jean Claude Hier à 10:18

» Le compilateur.
par Pedro Alvarez Hier à 8:36

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

» Troncature dans une image
par JL35 Mer 9 Aoû 2017 - 13:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Détection connexion internet (résolu)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Détection connexion internet (résolu)   Dim 23 Juil 2017 - 17:38

Bonjour à tous,
Y a t'il un moyen simple de savoir (par programme) si la connexion internet est active ?

Mon problème:
Je déclenche une connexion internet (Firefox) par programme sur un site particulier.
Je le fais par EXECUTE, et non EXECUTE_WAIT, car je veux que les boutons de mon programme restent actifs pendant la connexion (pour pouvoir faire des 'copier' sur le site et 'coller' par programme de certaines zones du site).
Donc je lance la connexion, et après l'Execute je me mets dans une boucle d'attente de déconnexion  pour exploiter les résultats.

Comment tester si la déconnexion est effective ? j'ai essayé:
- boucle avec lancement de Tasklist, je regarde si Firefox est toujours actif, si oui je relance le test après une pause de 300 ms, ça marche, mais c'est un peu lourd.
- utilisation de la dll wininet.dll, fonction "InternetGetConnectedState", syntaxe:
Code:
DLL_ON: ct% = DLL_CALL2("InternetGetConnectedState",0,0): DLL_OFF
que j'avais dû trouver quelque part sur ce forum. Ca me renvoie bien ct%=1 au moment de la connexion, mais ça reste toujours à 1, même après la fin de connexion (?)

Si quelqu'un a une idée...


Dernière édition par JL35 le Mar 25 Juil 2017 - 19:04, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Détection connexion internet (résolu)   Dim 23 Juil 2017 - 19:30

Citation :
 utilisation de la dll wininet.dll, fonction "InternetGetConnectedState", syntaxe:

Code:
DLL_ON: ct% = DLL_CALL2("InternetGetConnectedState",0,0): DLL_OFF
que j'avais dû trouver quelque part sur ce forum. Ca me renvoie bien ct%=1 au moment de la connexion, mais ça reste toujours à 1, même après la fin de connexion (?)

C’était moi, et c’était sur    ce poste

Citation :
ça reste toujours à 1, même après la fin de connexion (?)

Si tu  te déconnectes de ton site préféré, cela ne veut pas dire que ton PC est déconnecté d’INTERNET !
Tu restes toujours connecté tant que ta box ou ton modem est allumé.
Je viens d’essayer avec mon code

Code:

rem ============================================================================
rem              Votre PC est-il connecté à INTERNET ?
rem ============================================================================
InternetGetConnectedState()
end
rem ============================================================================
SUB InternetGetConnectedState()
    dim_local connecte
    dll_on "wininet"
    connecte = dll_call2("InternetGetConnectedState",0,0)
    select connecte
        case 0 : message "Votre PC n'est pas connecté à INTERNET"
        case 1 : message "Votre PC est connecté à INTERNET"
    end_select
END_SUB
rem ============================================================================


Dernière édition par papydall le Dim 23 Juil 2017 - 23:31, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Détection connexion internet (résolu)   Dim 23 Juil 2017 - 20:23

Tu peux faire un PING sur ton serveur préféré en ligne de commande pour savoir si vos deux PC communiquent ensemble.

Code:
Ping  www.wikihow.com

ça donne:
 

Lisez la première ligne.
La première ligne indique le type de requête et la taille des données transmises.
Par exemple :Envoie d’une requête ‘ping’ sur www.wikihow.com [151.101.113.175] avec 32 octets de données:
Lisez le corps du résultat.
Une requête réussie vous indiquera la durée qu’a mise l’adresse pour répondre. TTL (Time to live) permet d'estimer le nombre de routeurs intermédiaires. Plus le nombre est petit, plus il y a des routeurs intermédiaires. Temps est le temps qu’a duré la connexion en milliseconde
Réponse de 151.101.113.175: octets=32 temps=59 ms TTL=55
Réponse de 151.101.113.175: octets=32 temps=59ms TTL=55
Réponse de 151.101.113.175: octets=32 temps=60ms TTL=55
Réponse de 151.101.113.175: octets=32 temps=58ms TTL=55

Lisez le résumé.
Après la fin de la requête, un résumé de la connexion apparaîtra.
Les paquets perdus veulent dire que la connexion ne s’est pas faite et les données se sont perdues.
Vous aurez aussi la moyenne qu’a duré la connexion.
Statistiques Ping pour 151.101.113.175:
   Paquets: Envoyées = 4, Reçues = 4, Perdues = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
Minimum = 58ms, Maximum = 60ms, Moyenne = 59ms


INFO:
Vous pouvez faire un PING sur votre propre PC :
Code:

Ping 127.0.0.1

Si cela échoue, la configuration du réseau ou la carte réseau (Network Interface Card) est peut-être hors service.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Détection connexion internet (résolu)   Dim 23 Juil 2017 - 23:49

Merci papydall pour ta réponse.
Pour l'utilisation de wininet, je rends volontiers à César papydall ce qui lui appartient.
En fait, mon pc est toujours connecté à internet via la box, alors dans ce cas la réponse de la sub sera toujours positive, donc ça ne me sert pas à grand chose. Ce que je veux savoir, c'est si je suis connecté à un site (cad navigateur actif).

J'avais bien vu cette histoire de ping, mais ça m'avait paru un peu compliqué.
Et ça se confirme quand je lis ton post, pas facile à appréhender.

Mon problème c'est de faire ça à partir d'un programme, sans intervention manuelle,
je veux que le programme détecte le moment où je me déconnecte (mon pc) de ma box, en fait je veux savoir quand mon navigateur (Firefox) cesse de travailler (fermé manuellement par l'utilisateur... moi).
Je vais essayer de comprendre ta méthode des Pings, mais je pense que je vais en rester à la détection de présence de firefox.exe dans la tasklist, bien que ça mette de longues secondes à se manifester à la fermeture, alors que c'est quasi immédiat à l'activation.

Merci à toi en tout cas, et bonne soirée !

PS
Je viens d'essayer la méthode ping, c'est très long pour détecter la déconnexion, puisqu'il faut attendre la fin du time-out.
De plus, ça semble ne pas marcher sur le site qui m'intéresse, c'est un site bancaire en https avec mot de passe... (c'est un programme pour surveiller ma fortune...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 464
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Détection connexion internet (résolu)   Lun 24 Juil 2017 - 12:36

Tu peux essayer avec 2 programmes : un lanceur caché qui "execute_wait" firefox, et dans ton programme pricipal, tu "execute" le lanceur. Ensuite, tu testes la présence du lanceur avec 'handle_form'. Tant que firefox est éxécuté, le lanceur restera ouvert, dès que firefox sera fermé, le lanceur sera automatiquement fermé.
NB : Il n'est pas possible de tester le 'handle_form' de firefox directement car cette application n'a pas de titre.

Ex. de lanceur:
Code:
' lanceur

hide 0
application_title "lanceur_mozilla"
 
' executer firefox, mais pas un raccourci!
execute_wait "C:\Program Files\Mozilla Firefox\firefox.exe|http://panoramic.free-boards.net"  
terminate

Ex. de programme pricipal:
Code:
' programme principal

dim a%

' éxécute le lanceur
execute "C:\Program Files\Panoramic Editor V 0.9.25\sources\demarre_firefox.exe"

' attendre confirmation du lancement du lanceur
repeat
   a%=handle_form("lanceur_mozilla")
until a%>0

' attendre fermeture du lanceur
caption 0,"Lanceur en cours d'exécution..."
repeat
   a%=handle_form("lanceur_mozilla")
until a%=0

caption 0,"Fini!"

C'est très rapide, et en plus, c'est 100% panoramic Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Détection connexion internet (résolu)   Lun 24 Juil 2017 - 14:04

Bonjour silverman,

Effectivement c'est une solution intéressante, et en plus... ça marche !
Et c'est bien plus réactif que de regarder dans la Tasklist.
Et tout en Panoramic, comme j'aime.

Le seul inconvénient est plutôt d'ordre... esthétique je dirais, générer un exécutable de plus de 2 M octets pour 3 lignes de code. Tant qu'on n'a pas de compilateur...

J'ai ajouté une pause de 300 ms dans la boucle repeat/until, pour ne pas surcharger.
Mais sinon c'est la solution que j'adopte, jusqu'à preuve du contraire.

Merci silverman !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Détection connexion internet (résolu)   Lun 24 Juil 2017 - 17:40

JL35 a écrit:
Mais sinon c'est la solution que j'adopte, jusqu'à preuve du contraire.

Lisez ma prose d'abord !

La commande de l’invite de commande TaskList affiche une liste de processus actuellement en cours sur un ordinateur local ou un ordinateur distant.
On peut rediriger la sortie de cette commande vers un fichier, ou vers le presse-papier ou même vers le vide.
Vers un fichier ou vers le presse-papier, c’est bien pour un éventuel traitement sur cette liste.
Mais la dite liste est souvent très longue.
Pour vous en convaincre, tapez dans une fenêtre de commande, tasklist et observez le résultat.

Or, il se trouve que ces vielles commandes cachent souvent des petits bijoux.
Autant s’en servir (ne dit-on pas que c’est dans les vieilles marmites qu’on fait la bonne soupe ?)
On peut utiliser des filtres pour … filtrer la sortie et obtenir juste ce qu’il faut.
Comme JL35 cherche Firfox.exe , on peut filtrer la sortie pour n’obtenir que la ou les tâches relatives au renard, pardon à FirFox

On code un petit fichier connect.bat par exemple (Vous avez toute la liberté de choisir un autre nom plus parlant pour vous, mais l’extension doit être .bat.
Enregistrez ce fichier dans votre dossier de travail ou ailleurs, puis exécutez le programme Panoramic suivant.
Il vous indiquera si votre navigateur préféré en service ou hors-service.

Personnellement, je préfère le métal à l’animal, c’est pourquoi, vous devez changer chrome.exe par votre navigateur préféré dans les deux codes.
Les deux codes tels qu’ils sont, je les ai testé sous chrome, mais rien, absolument rien ne dit qu’ils ne fonctionnent pas pour un autre navigateur.

Bon, j’ai trop parlé, voici mes deux trésors, je vous les offre.
Testez lorsque votre navigateur est en service, puis fermer votre navigateur et refaites le teste.

Connect.bat

Code:

tasklist /svc /fi "imagename eq chrome.exe" > task.txt
find /c "chrome.exe" list.txt |clip



Code:

execute_wait "c:\users\acer\desktop\connect.bat"
if val(mid$(clipboard_string_paste$,24,1)) > 0
   message "Chrome est en sevice"
else
   message "Chrome est hors-service"
end_if
file_delete "task.txt"


Voila, c'est court, tout juste le SMIG.tongue
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Détection connexion internet (résolu)   Lun 24 Juil 2017 - 18:39

Salut papydall,

euh, tes deux lignes de code du haut (le .bat), c'est task.txt ou list.txt, mais pas les deux ???

Ton idée est intéressante, mais ça ne marche pas tel quel chez moi.
Déjà le 'connect.bat', je rectifie:
Code:
@echo off
tasklist /svc /fi "imagename eq firefox.exe" > z:\task.txt
find /c "firefox.exe" z:\task.txt |clip

et dans le programme principal (pour le test uniquement):
Code:
while 2>1
    execute_wait "z:\connect.bat"
    print_locate 0,0
    if right$(trim$(clipboard_string_paste$),1) = "1"
       print "Firefox est en service"
    else
       print "Firefox est hors-service"
    end_if
    file_delete "z:\task.txt"
    pause 300
end_while

(le z:\ à remplacer par tout répertoire de manoeuvre).
J'ai ajouté une temporisation de 300 ms pour donner un peu d'air.

Inconvénient majeur: apparition de la fenêtre noire d'exécution à chaque passage !
(il y a moyen de la supprimer, mais il faut rajouter du code).
Néanmoins l'idée est intéressante, je regarde de plus près.
J'avais bien vu pour les paramètres de tasklist, mais ça me paraissait plutôt obscur...

ET d'ailleurs, pourquoi passer par un programme externe (connect.bat) et ne pas faire tout le boulot dans le programme principal ?
Code:
dim q$: q$ = chr$(34)
WHILE 2>1
  EXECUTE_WAIT "cmd.exe /c tasklist /svc /fi "+q$+"imagename eq firefox.exe"+q$+" | clip"
  PRINT_LOCATE 0,0
  IF INSTR(clipboard_string_paste$,"firefox.exe") > 0
      PRINT "Firefox est en service"
    ELSE
      PRINT "Firefox est hors-service"
    END_IF
    PAUSE 300
END_WHILE
plus de fichiers annexes, y'a plus qu'à retrouver ma petite sub qui permet de supprimer la fenêtre noire d'exécution.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Détection connexion internet (résolu)   Lun 24 Juil 2017 - 22:34

Hello JL35
Citation :
euh, tes deux lignes de code du haut (le .bat), c'est task.txt ou list.txt, mais pas les deux ???

Tu as tout à fait raison.
J’ai fait un test avec list.txt, puis je me suis dit que list.txt n’est pas très parlant comme nom de fichier ; je l’ai changé en task.txt.
Et puis quand on ne regarde pas bien et qu’on veut vite poster, on donne souvent l’ancienne version.
Bon, tu as tout compris.

Aujourd’hui matin c’est la canicule chez nous : ça devient presque insupportable.
On avoisine les 40 ° C et comme j’étais de retour d’un déplacement vers la ville voisine, j’ai eu l’idée de tasklist et ses différentes possibilités.
De retour, j’ai testé l’idée et je n’avais pas l’envie de rester devant l’ordi.

Citation :
ET d'ailleurs, pourquoi passer par un programme externe (connect.bat) et ne pas faire tout le boulot dans le programme principal ?

C’est tout simplement parce que depuis un certain temps, je n’arrive plus à faire exécuter une ligne de commande par panoramic.
J’obtiens l’erreur suivante.




Comme j’ai voulu voir le résultat  de tasklist avec les filtres, je me suis contenté de faire un batch, tout en sachant que tu vas améliorer la chose.

Bref, je pense que la commande tasklist combinée avec  find est intéressante à developper.


Pour terminer : on a eu un petit orage avec quelques goutes de pluie pendant l’après midi, et l’atmosphère est mieux respirable à présent.
Je quitte pour en profiter.
Mais avant de quitter, je t'offre ce cadeau à toi et à tous les panoramiciens.
Voici mon cadeau
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Détection connexion internet (résolu)   Lun 24 Juil 2017 - 22:59

Merci pour le cadeau papydall, effectivement la ligne de commande Windows est pleine de ressources et facile à mettre en oeuvre depuis Panoramic.

Dans le cas présent, on peut très bien appeler tasklist (avec les paramètres que tu as donné) depuis le programme principal, dans une boucle avec timer, et tester le résultat (dans le presse-papier) à chaque passage, et sortir de la boucle quand la condition désirée est remplie.

Mon problème c'est que je veux que ces appels se fassent de manière invisible, sans la fenêtre noire qui clignote à la cadence des appels, c'est très inesthétique !

J'avais fait une petite sub pour ça, création et exécution d'un script vbs, je m'en suis servo sans problème jusqu'ici, mais là, en l'occurence, ça ne va mas, quelque chose est incorrect dans le passage des paramètres.
Pour info voici la sub:
Code:
SUB Exprog(pr$)
' Exécution d'un programme externe sans la fenêtre noire Ms-DOS
' - exemple:   Exprog("Cmd.exe /c DIR C:\UTIL >C:\TEMP\Dir.txt")
DIM_LOCAL vb$, q$: vb$ = "C:\Temp\Vb.vbs": q$ = CHR$(34)
FILE_OPEN_WRITE 9, vb$: ' ===== Création du script .vbs =====
  FILE_WRITELN 9,"CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+pr$+q$+",0,True"
FILE_CLOSE 9
EXECUTE_WAIT "WSCRIPT.exe "+vb$: ' ===== Exécution du script =====
FILE_DELETE vb$
END_SUB

Je veux lui faire exécuter la commande (que tu as donné là-haut):
Code:
cmd.exe /c tasklist /svc /fi "imagename eq firefox.exe" | clip
mais quelque chose ne plait pas à Vbscript avec ces guillemets intégrés...

En ce qui concerne la canicule, on a eu notre compte ici aussi (mais quand même sans doute moins que chez vous qui êtes plus près des tropiques...), et maintenant on a de violentes averses passagères... et il fait moins chaud. Pour le moment.
En tout cas il faut boire mon ami, et même sans modération !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Détection connexion internet (résolu)   Mar 25 Juil 2017 - 3:50

Ça ne répond pas à ta question, Jl35, mais c’est toujours bon de savoir :
Code:

rem ============================================================================
' Obtenir
' votre système d'exploitation,
' votre résolution d'écran,
' votre adresse IP et
' différentes informations techniques sur les éléments supportés par votre
' navigateur internet
  execute_wait "https://lehollandaisvolant.net/tout/tools/browser/"
rem ============================================================================
' Quel navigateur internet utilisez-vous actuellement
  execute_wait "http://www.whatbrowser.org/"
rem ============================================================================
  execute_wait "http://www.mon-navigateur.com/"
rem ============================================================================

Exécutez successivement les trois execute_wait.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Détection connexion internet (résolu)   Mar 25 Juil 2017 - 13:55

Je suis entièrement d'accord avec toi papydall, ça ne répond pas à ma question ! Very Happy

Bon, en résumé, quelqu'un saurait-il comment:
- passer le paramètre de tasklist à mon script vbs dans l'exemple ci-dessus (Sub Exprog) ?
- oui, plus généralement, comment exécuter une commande en mode transparent, sans apparition de la fenêtre noire ?
J'ai trouvé plusieurs solutions sur le web, en général en faisant appel à une ressource externe (cmdow, hstart, quiet, etc.), mais j'aime autant pas, c'est moins universel. Et il y a souvent le script vbs, qui marche bien pour un paramètre simple, mais dans mon cas il contient des guillemets et ça ne marche plus.

Problème réglé:
Pour info, je n'ai pas réussi à passer les paramètres du tasklist à mon script vbs (problème de guillemets multiples).
Du coup je crée un .bat contenant l'appel au tasklist, et c'est ce .bat que je fais exécuter par le script, et... ça marche, en panoramic et sans ressources externes.

A tout hasard, la sub qui permet d'exécuter une commande sans affichage:
Code:
SUB Exprog(pr$)
  ' Exécution d'un programme externe sans la fenêtre noire Ms-DOS
  ' - exemple:   Exprog("Cmd.exe /c DIR C:\UTIL >C:\TEMP\Dir.txt")
  DIM_LOCAL vb$,vt$,q$
  vb$ = "Z:\Vb.vbs": vt$ = "Z:\Tmp.bat": q$ = CHR$(34)
  IF UPPER$(FILE_EXTRACT_EXTENSION$(pr$))<>".BAT"
      FILE_OPEN_WRITE 9,vt$
          FILE_WRITELN 9,"@echo off"
          FILE_WRITELN 9,pr$
      FILE_CLOSE 9: pr$ = vt$
  END_IF
  FILE_OPEN_WRITE 9, vb$: ' ===== Création du script .vbs =====
      FILE_WRITELN 9,"CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+pr$+q$+",0,True"
  FILE_CLOSE 9
  EXECUTE_WAIT "WSCRIPT.exe "+vb$: ' ===== Exécution du script =====
  FILE_DELETE vb$: IF FILE_EXISTS(vt$) = 1 THEN FILE_DELETE vt$
END_SUB
(Z: est mon volume de manoeuvre, une partie de la mémoire vive déclarée en disque annexe).

et l'appel à la sub dans mon cas ci-dessus (savoir si Firefox est actif ou non, merci papydall):
Code:
a$ = "tasklist /svc /fi "+q$+"imagename eq firefox.exe"+q$+" | clip"
Exprog(a$)
IF INSTR(CLIPBOARD_STRING_PASTE$,"firefox") > 0
   ' Firefox actif
ELSE
    ' Firefox inactif
END_IF
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 464
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Détection connexion internet (résolu)   Mer 26 Juil 2017 - 19:36

@papydall
le pb de ne plus pouvoir exécuter une ligne de commande par panoramic est dû aux espaces dans les paramètres, il me semble. Cela se produit depuis la révision des commandes 'execute' et 'execute_wait', je l'ai signalé à jack et il a propsé un contournement qui ne fonctionne que si ces paramètres sont destinés à la fonction 'param_value'. C'est un bug qui est bloquant pour le cas que tu as proposé. Sad

@jl35
un substitut à la commande execute qui fonctionne, avec l'exemple de tasklist:
Code:
dim File$,Parameters$,Directory$

File$="cmd.exe"
Parameters$="/k tasklist /svc /fi "+chr$(34)+"imagename eq firefox.exe"+chr$(34)+" |clip"
Directory$=""
 
RUN_FILE(File$,Parameters$,Directory$)


END
sub RUN_FILE(File$,Parameters$,Directory$)
'
' équivalent de EXECUTE en panoramic
'
' File$ : fichier éxécutable. Le fichier est recherché dans: 'Directory$'(si <>""), sinon 'dir_current$'
' Parameters$ : paramètre(s) à passer
' Directory$ : chemin par défaut
'
  if variable("shell32%")=0
      ' commande : copie de mémoire
      dim kernel32%
      kernel32%=3
      LIBRARY kernel32%,"kernel32"
      command "copy_memory","RtlMoveMemory",kernel32%,"III","stdcall"
      ' ex.: copy_memory adr(destination), adr(source), taille_en_octet%


      ' commande : shell
      dim shell32%
      shell32%=5
      LIBRARY shell32%,"shell32"
      command "run","ShellExecuteA",shell32%,"IIIIII","stdcall"
      ' ex.: run hwnd%,adr(Operation$), adr(File$),adr(Parameters$), adr(Directory$), ShowCmd%
  end_if

  '
  dim_local null%
  dim_local hwnd%,Operation$,ShowCmd%  :' ,File$,Parameters$,Directory$
  dim_local lp_Operation%,lp_File%,lp_Parameters%,lp_Directory%
 
  '
  hwnd%=0
  Operation$="open" : copy_memory adr(lp_Operation%),adr(Operation$),4
  ' File$="panoramic0927.exe" :
  copy_memory adr(lp_File%),adr(File$),4
  ' Parameters$="test.bas" :
  copy_memory adr(lp_Parameters%),adr(Parameters$),4
  ' Directory$="C:\Program Files\Panoramic Editor V 0.9.25\" :
  copy_memory adr(lp_Directory%),adr(Directory$),4
  ShowCmd%=10

  run hwnd%,lp_Operation%,lp_File%,lp_Parameters%,lp_Directory%,ShowCmd%
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Détection connexion internet (résolu)   Mer 26 Juil 2017 - 21:59

Bonsoir silverman,
Je viens d'essayer ta solution qui est séduisante a priori, avec la dernière version de Panoramic_Editor (sinon normalement je fonctionne avec une version précédente), mais ça ne marche pas chez moi.

C'est passant (ça rend la main après l'appel à la sub), mais ça ouvre une fenêtre noire qui reste ouverte, et je ne récupère rien dans le presse-papier...

Je crois que je vais en rester à ma solution à moi, certes un peu bestiale, mais qui me fait le boulot.

PS je viens de regarder, pour la fenêtre qui reste ouverte ça doit être le paramètre /K de cmd.
Avec /c la fenêtre se ferme (j'aimerais autant qu'elle ne s'ouvre pas du tout, du moins pas de manière visible), mais toujours rien dans le clipboard.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Détection connexion internet (résolu)   

Revenir en haut Aller en bas
 
Détection connexion internet (résolu)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Svchost.exe 100% CPU tilt connexion internet [résolu]
» Problème connexion Internet mais voyants allumés
» Bbox detectée, mais pas de connexion internet!
» Connexion Internet pas fiable
» Problème de connexion internet, voyant internet rouge !!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: A l'aide!-
Sauter vers: