CloseProgram et KillProgram ???

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: CloseProgram et KillProgram ???

Message par PhM »

Je pense avoir trouvé, suivant l'idée de Marc56, bien plus court que les versions précédentes !
Tester avec succès sur 3 navigateurs (sous W7 x64)

Code : Tout sélectionner

SetCurrentDirectory(GetTemporaryDirectory())

RunProgram("reg", "export HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice cle.ini /y", "",#PB_Program_Open)
Delay(100)

If ReadFile(0, GetTemporaryDirectory() + "cle.ini")
  FileSeek(0, 300)                      ; place le pointeur 300 caractères depuis le début du fichier
  *MemoryID = AllocateMemory(20)        ; alloue un bloc mémoire pour 20 octets
  If *MemoryID
    bytes = ReadData(0, *MemoryID, 20)  ; lit les 20 derniers caractères du fichier
    NAVI$= PeekS(*MemoryID)
  EndIf
  CloseFile(0)
EndIf

Debug NAVI$                             ; Résultat pour 3 navigateurs : IE.HTTP" / FirefoxURL / ChromeHTML

DeleteFile(GetTemporaryDirectory() + "cle.ini")

End
Voyez-vous un problème ?
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: CloseProgram et KillProgram ???

Message par Marc56 »

On peut encore simplifier :)
Le fichier de sortie est en Unicode, donc tu peux le traiter comme un fichier texte en précisant #PB_Unicode pour changer l'encodage par défaut.

Code : Tout sélectionner

SetCurrentDirectory(GetTemporaryDirectory())

RunProgram("reg", "export HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice cle.ini /y", "",#PB_Program_Open)
Delay(100)

If ReadFile(0, GetTemporaryDirectory() + "cle.ini")
    While Not Eof(0)
        Txt$ = ReadString(0, #PB_Unicode | #PB_File_IgnoreEOL)
    Wend
    Debug Txt$
    CloseFile(0)
EndIf
Debug "--- Navigateur ---"
Pos = FindString(Txt$, "progid", 1, #PB_String_NoCase)
NAVI$ = Mid(Txt$, Pos + 9)
Debug NAVI$                             
; Résultat pour 3 navigateurs : IE.HTTP" / FirefoxURL / ChromeHTML

DeleteFile(GetTemporaryDirectory() + "cle.ini")

End
Reste a élaguer ce qu'il y a en trop à droite ou ne se servir que des premières lettres pour identifier chaque navigateur.
:wink:
Répondre