PureBasic et Windows Defender

Sujets variés concernant le développement en PureBasic
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

PureBasic et Windows Defender

Message par pat »

Bonjour,

Vous devez certainement connaître le logiciel de Windows, Windows Defender, logiciel contre les logiciels malveillants.
Faites ceci avec PureBasic :
Ouvrez un écran graphique fenêtré avec OpenWindodedScreen(...).
Pour faire quelque chose dedans, mettez, par exemple, ClearScreen(RGB(128,128,128)).
Donc l'écran sera gris.
Maintenant, laissez ouvert votre programme et en multitâche appelez le fameux logiciel Windows Defender et exécutez-le en cliquant sur "Confirmer". Ce programme stoppera votre programme, vérifiera le code et redonnera la main à votre programme.
Je tiens à préciser que c'est au moment où votre programme sera dans l'écran graphique qu'il faudra appeler Windows Defender.
Vous verez l'écran graphique supprimé et l'écran sera donc blanc.
S'il y avait des sprites, par exemple, et des fonctions pour le gérer, le programme se plantera.
Maintenant ouvrez un programme de jeu avec un graphique fenêtré, que vous avez certainement.
Pas de problème, votre programme continuera comme si de rien n'était, alors qu'en PureBasic l'écran sera fermé.
Certains dirons que peut-être en est-il ainsi des autres programmes et les programmeurs ont réouvert l'écran graphique et rechargé les sprites.
C'est peut-être vrai mais le fait de fermer, rouvrir et recharger les sprites créera inévitablement un scintillement du graphique, que l'on ne vois pas dans les programmes de jeu.
Alors que penser de PureBasic à ce sujet et qu'en pensez-vous ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PureBasic et Windows Defender

Message par falsam »

Extrait de code dont j'ai crée un éxécutable et qui ne rencontre pas de problème avec Window Defender.

Code : Tout sélectionner

InitSprite()
If OpenWindow(0, 0, 0, 220, 160, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If OpenWindowedScreen(WindowID(0), 0, 0, 220, 160, 0, 0, 0)
   
    Else
      MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
      End
    EndIf
  EndIf
  
  direction = 2
  Repeat
    Repeat
      Event = WindowEvent()
      
      Select Event 
        
        Case #PB_Event_CloseWindow
          End 
      EndSelect
    Until Event = 0
  
    FlipBuffers() 
    ClearScreen(RGB(128, 128, 128))
  ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PureBasic et Windows Defender

Message par falsam »

Un autre exemple de code avec un sprite solitaire qui ne pose pas de souci avec Defender.

Code : Tout sélectionner

If InitSprite() = 0
    MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 220, 220, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If OpenWindowedScreen(WindowID(0), 0, 0, 220, 220, 0, 0, 0)
      CreateSprite(0, 20, 20)
      If StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20, RGB(255, 0, 155))
        Box(5, 5, 10, 10, RGB(155, 0, 255))
        StopDrawing()
      EndIf
    Else
      MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
      End
    EndIf
  EndIf
  
  Pas = 3
  Repeat
    Repeat
      Event = WindowEvent()
      
      Select Event 
        
        Case #PB_Event_CloseWindow
          End 
      EndSelect
    Until Event = 0
  
    FlipBuffers() 
    ClearScreen(RGB(128, 128, 128))
    DisplaySprite(0, x, x)
    x + Pas
    If x > 200 : Pas = -2 : EndIf
    If x < 0   : Pas =  2 : EndIf
    Delay(1)
  ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: PureBasic et Windows Defender

Message par pat »

Merci falsam pour la réponse et les 2 codes.
Je vais voir ça en détail car je ne suis pas chez moi.
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: PureBasic et Windows Defender

Message par pat »

A falsam :
Le programme que tu donnes es celui de l'exemple de PureBasic au sujet de la fonction OpenWindowdedScreen(...).
Excellent exemple de surcroit.

Tu n'as pas bien utilisé Windows Defender pour constater ce que j'ai dit plus haut.

Fais ceci :
1) Lance le programme d'exemple de PureBasic ci-dessus et ouvre Windows Defender en multitâche.
2) Dans Outils sélectionne le lien Explorateur de logiciels.
3) Dans Catégorie sélectionne Programmes en cours d'exécution.
4) Clique sur le bouton Afficher pour tous les utilisateurs.
Une boîte de dialogue s'ouvre :
5) Clique sur le bouton Continuer.

Et tu constateras, si ton programme est ouvert en même temps que Windows Defender, que l'écran devient blanc, signe que l'écran graphique est supprimé, et comme il n'y a pas de sprites, le programme ne se plante pas, mais le fait d'ajouter des sprites plantera le programme.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PureBasic et Windows Defender

Message par falsam »

Window Defender tourne en tache de fond (Option protection temps réel) . J'ai la version 6.1.7600 de Window Defender et je n'ai pas le lien Explorateur de logiciels.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: PureBasic et Windows Defender

Message par pat »

Merci falsam pour ta réactivité et tes réponses respectives.
Je suis sous Windows Vista SP2.
Je ne connais pas Windows Defender sous Seven donc je ne peux rien dire mais si Windows a corrigé quelque chose et bien c'est déjà ça de fait.
Peut-être que d'autres personnes constateront ce que je dis plus haut.
Répondre