Comment utiliser un prototype dans une procédure ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Comment utiliser un prototype dans une procédure ?

Message par falsam »

Je ne sais pas utiliser un prototype dans une procédure.

Pour cette exemple, Je souhaite capturer le bureau de window.

■ Ce code sans procédure fonctionne

Code : Tout sélectionner

;Préparation du prototype générant la fonction "PrintWindow"
Prototype.i ptPrintWindow(hWnd, hdc, flags)

OpenLibrary(1, "User32.dll")
PrintWindow.ptPrintWindow = GetFunction(1, "PrintWindow")

;Dimension du desktop
ExamineDesktops()
Width + DesktopWidth(0)
Height + DesktopHeight(0)

;Quel est le handle du Desktop
hWnd = FindWindow_(0,"Program Manager")

;Capture du Desktop
Image = CreateImage(#PB_Any, Width, height, 24)
Result = StartDrawing(ImageOutput(Image))
Delay(10)
PrintWindow(hWnd, Result, 0)
StopDrawing()

ShowLibraryViewer("Image", Image)
CallDebugger
Vous devez voir l'image dans le visualisateur de bibliothéque.

■ Par contre si je veux utiliser une procédure la fonction déclarée dans mon prototype devient inexistante.

Code : Tout sélectionner

;Préparation du prototype générant la fonction "PrintWindow"
Prototype.i ptPrintWindow(hWnd, hdc, flags)

OpenLibrary(1, "User32.dll")
PrintWindow.ptPrintWindow = GetFunction(1, "PrintWindow")

Procedure Capture()
  ;Dimension du desktop
  ExamineDesktops()
  Width + DesktopWidth(0)
  Height + DesktopHeight(0)

  ;Quel est le handle du Desktop
  hWnd = FindWindow_(0,"Program Manager")

  ;Capture du Desktop
  Image = CreateImage(#PB_Any, Width, height, 24)
  Result = StartDrawing(ImageOutput(Image))
  Delay(10)
  PrintWindow(hWnd, Result, 0)
  StopDrawing()
EndProcedure  

Capture()

ShowLibraryViewer("Image", Image)
CallDebugger
Merci d'avance pour votre aide :)
Dernière modification par falsam le mer. 27/août/2014 23:08, modifié 1 fois.
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%
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Comment utiliser un prototype dans une procédure ?

Message par nico »

Global PrintWindow.ptPrintWindow

Il faut que tu prennes l'habitude de mettre des if pour tester les fonctions.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment utiliser un prototype dans une procédure ?

Message par falsam »

nico a écrit :Global PrintWindow.ptPrintWindow
Evidement :oops:
nico a écrit :l faut que tu prennes l'habitude de mettre des if pour tester les fonctions.
C'est le cas normalement. je voulais aller à l'essentiel. Merci encore pour ton aide.
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%
Répondre