Toon posts:

[delphi] capture van programma maken

Pagina: 1
Acties:
  • 58 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben bezig met een programma wat er voor zorgt dat ik om de 15 minuten een plaatje van mijn programma krijg.
Dit gedeelte werkt prima, maar op het moment dat ik mijn programma minimaliseer, worden er geen plaatjes meer gemaakt van mijn programma maar van de desktop (met alle vensters daarop).

Hieronder staat de code die ik gebruik voor het "capturen"

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
TYPE TImgType = (BMP,JPG);

PROCEDURE Capture(Rect : TRect; ImgType : TImgType; name : String);
VAR
  Bitmap : TBitmap;
  JPG : TJPEGImage;
BEGIN
  Bitmap := TBitmap.Create;
  Bitmap.Width := Rect.Right - Rect.Left;
  Bitmap.Height := Rect.Bottom - Rect.Top;

  Bitmap.Canvas.CopyRect(Rect,Form1.Canvas,Rect);
  If ImgType = BMP
    then
      BEGIN
        Bitmap.SaveToFile(Name + '.bmp');
      END
    else
      BEGIN
        JPG := TJPEGImage.Create;
        JPG.Assign(Bitmap);
        JPG.CompressionQuality := 100;
        JPG.SaveToFile(Name + '.jpg');
        JPG.Free;
      END;
  Bitmap.Free;
END;

[ Voor 3% gewijzigd door Verwijderd op 22-10-2003 15:18 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Hmmzz...
Ik neem aan dat je tips wilt over hoe je dit kunt voorkomen? Lijkt mij op een aantal manieren te kunnen:
  1. maximaliseer - screenshot - minimaliseer
  2. maak alleen een screenshot als je app zichtbaar is
Tip: application.maximize

Als je een andere vraag wilde stellen: maak je opening ietsje duidelijker ;)

My personal website


Verwijderd

Topicstarter
dat is ongeveer wat ik zoek
jou oplossing,
code:
1
  application.maximize
werkt niet

[ Voor 14% gewijzigd door Verwijderd op 22-10-2003 15:29 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Verwijderd schreef op 22 October 2003 @ 15:27 dat application.message niet bestaat
Klopt, je hebt wel een application.minimize en een application.restore ;)

My personal website


Verwijderd

Topicstarter
o ja, stom van me |:(

het programma werkt op deze manier al aardig. ik moet nu alleen 0.5 seconde wachten voordat het programma weg is...

maar, dat is niet echt vervelend omdat ik maar 1x per 15 minuten een plaatje nodig heb

Verwijderd

Kan je de form zich niet laten tekenen op de bitmap:
form1.drawto(....)

Ik denk dat dat ook werkt als je form (applicatie) geminimaliseerd is. Kijk anders eens wat de grootte (clientwidth..) van de form is op het moment dat die geminimaliseerd is.

Verwijderd

Probeer toch een andere manier nog te vinden, mischein werkt die van 'PtDw'.

Want als het voor externe gebruikers bedoeld is dan lijkt het me niet dat ze dit soort gedrag van je applicatie leuk inden. :)

Want je steelt volgens mij dan wel hun focus als ze net ergens mee bezig zijn. :)

Verwijderd

Topicstarter
Verwijderd schreef op 22 oktober 2003 @ 15:39:
Kan je de form zich niet laten tekenen op de bitmap:
form1.drawto(....)
welke versie van delphi is dat dan?

Bij mij werkt dit niet :'( Ik heb hier Delphi7, dus daar zal het niet aan liggen.

[ Voor 18% gewijzigd door Verwijderd op 22-10-2003 17:33 ]


Verwijderd

Sorry het was niet drawto, ik dacht dat die er ook was, maar blijkbaar is er alleen de draw(from..) versie. Maar misschien werkt GetFormImage wel.

Verwijderd

Topicstarter
Ik heb het nu voor elkaar om de functie
code:
1
webbrowser1.drawto

te gebruiken. Werkt prima, maar ook bij deze maakt het programma een image van de desktop :(

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

De vraag wordt dan WAAROM je een screenshot van je app wil? Als je een bepaalde memo uit wil lezen, kun je de Lines.SaveToFile gebruiken. Als het om een metertje gaat, dan kun je waarschijnlijk de inputwaarden daarvan wel in en tekstbestandje gooien.

Zou je dus eens kunnen uitleggen wat de bedoeling is van je screenshot? Welke wawarden/gegevens op je form zijn dan zo belangrijk?

My personal website


Verwijderd

Topicstarter
in de webbrowser laad ik een site met een webcam (voor intern gebruik). daar wil ik om de zoveel minuten een plaatje van maken om te zien wat er veranderd. dit proces wil ik kunnen draaien zonder dat de gebruiker er last van heeft. (dus geminimaliseerd)

Verwijderd

Topicstarter
OZ-Gump, vind je het goed als ik je bij msn toevoeg? dan kan je het wat makkelijker vertellen.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Als de site in eigen beheer is, lijkt het me mogelijk om niet alleen de weergave van het plaatje in de browser te realiseren, maar ook het wegschrijven van dit plaatje ergens op het netwerk. Vervolgens kun je daar de controle op het plaatje er overheen gooien.

Als de site niet in eigen beheer is, lijkt het me niet makkelijk/mogelijk om een geminimaliseerd venster te rippen en hier een plaatje van te maken. Lijkt me dan overigens eigenlijk ook niet helemaal legaal...? O-)

Edit:
Als je met deze post niet vooruit kunt, is msn geen probleem...

[ Voor 8% gewijzigd door OZ-Gump op 27-10-2003 16:04 ]

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 27 October 2003 @ 16:03:
Als de site in eigen beheer is, lijkt het me mogelijk om niet alleen de weergave van het plaatje in de browser te realiseren, maar ook het wegschrijven van dit plaatje ergens op het netwerk. Vervolgens kun je daar de controle op het plaatje er overheen gooien.
wat bedoel je hiermee?

en, de webcam staat hier in mijn netwerk, dus ik ben niets illegaals aan het doen :)

Verwijderd

Topicstarter
geen ideeën meer? :X

Edit:
Ik wil dus een image maken van de webbrowser in mijn programma om er vervolgens plaatjes van te maken.
Dit wil ik doen als het programma geminimaliseerd is.

[ Voor 81% gewijzigd door Verwijderd op 27-10-2003 17:00 ]


  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 20:22
paste eens stukje html van die webcam, misschien kan je dat plaatje op een andere manier scoren

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf


  • Dala
  • Registratie: November 2000
  • Laatst online: 19-08 10:22
klopt het dat je gewoon om de zoveel tijd eigenlijk je webcam plaatje wil binneleeche? en opslaan?

edit:

zoja... daar heb ik al eens een progje voor geschreven:
http://members.home.nl/davy.landman/GoT/webcam_leecher.exe

[ Voor 42% gewijzigd door Dala op 28-10-2003 11:13 ]


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<SCRIPT LANGUAGE="JavaScript">
<!--//hide script
  if ((navigator.appName == "Microsoft Internet Explorer")&&(navigator.platform != "MacPPC")&&(navigator.platform != "Mac68k")) {
                document.write("<OBJECT ID=\"AxisCamControl\" CLASSID=\"CLSID:917623D1-D8E5-11D2-BE8B-00104B06BDE3\" WIDTH=\"640\" HEIGHT=\"480\" CODEBASE=\"/activex/AxisCamControl.cab#Version=1,0,2,15\">");
                document.write("<PARAM NAME=DisplaySoundPanel VALUE=0>");
                document.write("<PARAM NAME=URL VALUE=\"/axis-cgi/mjpg/video.cgi?camera=&resolution=640x480\">");
        
                document.write("</OBJECT>");
    
  } else {
    theDate = new Date();
        var output = "<img SRC=\"/axis-cgi/mjpg/video.cgi?camera=&resolution=640x480&";
    output += theDate.getTime()
    output += "\" ALT=\"Press Reload if no image is displayed\">";
    document.write(output);
  }
//end hide -->
</SCRIPT>


en, ik wil inderdaad om de zoveel minuten een plaatje binnenhalen van een webcam hier op het netwerk

  • Dala
  • Registratie: November 2000
  • Laatst online: 19-08 10:22
dus gebruik mijn progje? :D

gaat simpel genoeg..

of is het geen gewone jpg? :s

Verwijderd

Topicstarter
code:
1
img SRC=\"/axis-cgi/mjpg/video.cgi?camera=&resolution=640x480&";


dit is mischien wel een jpg, maar ik kan hier geen bestandsnaam uit halen :'(

[ Voor 13% gewijzigd door Verwijderd op 28-10-2003 14:47 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Die CGI geeft blijkbaar de bestandnaam van het image terug. Dus kan je dit met een http component gewoon binnenhalen en opslaan (kijk bijvoorbeeld eens naar Tidhttp).

[ Voor 8% gewijzigd door Creepy op 28-10-2003 15:11 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
oh, vertel....

ik heb namenlijk bijna niets met indy gedaan (niets met TidHttp)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 28 oktober 2003 @ 15:24:
oh, vertel....

ik heb namenlijk bijna niets met indy gedaan (niets met TidHttp)
Kijk eens in de help zou ik zeggen. Het TIdHTTP ding is makkelijk te gebruiken en er zijn nog meer componenten waarmee je gewoon URL's kan binnen halen (ja dat stukje CGI script is gewoon een url).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
in de help van delphi7 staat niets over INDY :'(

[ Voor 68% gewijzigd door Verwijderd op 28-10-2003 15:57 ]


Verwijderd

Topicstarter
Creepy schreef op 28 October 2003 @ 15:11:
Die CGI geeft blijkbaar de bestandnaam van het image terug. Dus kan je dit met een http component gewoon binnenhalen en opslaan (kijk bijvoorbeeld eens naar Tidhttp).
dan moet ik wel eerst het CGI bestand openen om vervolgens het plaatje op te slaan

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Klopt ja. En dat kan je doen door de url van de cgi binnen te halen. Typ voor de gein de url van de cgi eens rechtstreeks in in je browser en sta verbaasd van het resultaat :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
als ik de url in mijn browser tik, dan gebeurd er helemaal niets....

edit:
heb jij niet toevallig een voorbeetje ofzo?

[ Voor 34% gewijzigd door Verwijderd op 28-10-2003 17:02 ]


Verwijderd

Topicstarter
Dala schreef op 28 oktober 2003 @ 14:38:
dus gebruik mijn progje? :D

gaat simpel genoeg..

of is het geen gewone jpg? :s
als ik in jou prog het pad voor de CGI zet, krijg in JPEG error #25, denk dat jou programma geen CGI aan kan.

dan moet ik dus eerst de locatie van het plaatje zien te vinden voordat ik jou prog kan gebruiken.


edit:
Het lukt mij ook niet om de CGI te openen.

[ Voor 8% gewijzigd door Verwijderd op 29-10-2003 08:53 ]


Verwijderd

Topicstarter
de locatie van het plaatje heb ik nu gevonden

http: //10.144.1.65/axis-cgi/jpg/image.cgi?camera=

nu wil ik alleen nog deze site opslaan (inclusief de plaatjes)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 29 October 2003 @ 15:23:
de locatie van het plaatje heb ik nu gevonden

http: //10.144.1.65/axis-cgi/jpg/image.cgi?camera=

nu wil ik alleen nog deze site opslaan (inclusief de plaatjes)
nogmaals: kijk eens naat het idhttp component. Hiermee kan je die site binnenhalen (de html code in elk geval). Vervolgens kan je de html scannen voor de plaatjes en die weer opnieuw met het idhttp componenten binnen halen.

(hmm... had ik al gezegd dat je idhttp kon gebruiken? :D )

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
hoe kan dat dan?

ik krijg alleen een hoop "zooi" binnen met IDHTTP.Get :'(

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 29 oktober 2003 @ 15:45:
hoe kan dat dan?

ik krijg alleen een hoop "zooi" binnen met IDHTTP.Get :'(
Als je de URL van het plaatje doorgeeft? Dat klopt, die "zooi" is je plaatje. Niet de .text uitlezen he, daar heb je zo weinig aan. Je moet dat ding gewoon meteen naar een bestand saven (en ja, dat kan dat idhttp component ook, m.b.v. een stream)

[ Voor 7% gewijzigd door Creepy op 29-10-2003 15:52 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
en, hoe zou je dat willen doen? de uitkomst is namenlijk een string.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Verwijderd schreef op 29 oktober 2003 @ 15:57:
en, hoe zou je dat willen doen? de uitkomst is namenlijk een string.
en dat kan je niet naar een file outputten?...

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
ja vast, weet jij hoe?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Als je nou eens in de help zou kijken zou je zien dat er TWEE get methodes zijn. Bij de tweede geef je een variant van TStream mee waarin de inhoud komt te staan. EN laat er nou ook net zoiets zijn als een TMemoryStream en een TFIleStream (die ook allebei in de Delphi help staan).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja, als je zo blijft helpdesken dan kan ik 'm natuurlijk net zo goed op slot gooien

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.