16. februar 2010 - 20:59 Der er 7 kommentarer og
1 løsning

Screen grabber --

HEJ,

EN ven, som er journalist i en herværende institution, arbejder med WEB-baseret undervisningsmaterial til internt brug.

Har har brug for at kunne "fange" hvert enkelt skærmbillede i et indkøbt stort program.

Dvs. han kører det store program normalt. Finder et/ det skærmbillede, han kan/skal bruge, og ønsker at gemme dette billede som en JPEG fil (til senere redigering og brug) 

Det han har brug for er et "sovende Delphi program", som vågner når han trykker CTRL PRINT_SCREEN  (CPRS), henter det aktuelle  skærmbillede (evt. til Clip-boardet), omdanner det til en JPG fil, gemmer denne fil (directory er defineret ved initialisering) og "falder i søvn igen". Ny tryk CPRS, ny afhentning af billede, gemme på disk , og falde i søvn.
OSV- OSV- OSV....

Jeg har selve Screen til BMP <-> BMP til JPG delene (simpel udgave), men jeg mangler følgende:

Hvordan "fanger" CTRL-PRINT-SCREEN tasten ?  og
hvordan får jeg det sovende delphi-prgm til at trappre på netop den kode. (Det store program bruger ALT-funktioner, CTRL-funktioner, CTRL-ALT , F1 - F12  og alle tænkelige kombinationer af disse, så den eneste reelt ledige er CTRL_PRT-SCRN - (damn osse ) ) ?  og

Hvor finder jeg en Screen Grabber, som kan skelne mellem 3-4-5-6---> forskellige skærmbilleder ?

(Kan løses ved kun at køre det store program og delphi samtidigt)..

Ideer modtages med taknemmelig hed (og 60 point til den lykkelige vinder... )

Kris
Avatar billede preppydude Nybegynder
16. februar 2010 - 21:15 #1
Er ikke sikker på jeg forstod dit spørgsmål, så du må lige sige til hvis jeg er helt gal på den.

Den nemme løsning er at bruge et komponent fra JEDI kaldet JvApplicationHotKey. Der registrerer du bare hvilken shortcut der skal udløse et event kalder OnHotKey, og så er du klar. Når eventet så bliver fyret af, så fanger du bare programmets pixel-buffer og gemmer det som en JPEG fil.

Mht. navngivningen skal du bare køre et loop der tjekker om filen allerede eksisterer. Noget alá

function GetScreenshotFileName(const APath: String): String;
const
  SCREENSHOT_NAME = 'screenshot-%d';
var
  n: Integer;
begin
  n := 0;
  while (True) do
  begin
    if not (FileExists(APath+Format(SCREENSHOT_NAME, [n]))) then
      Break;
    Inc(n);
  end;

  Result := APath+Format(SCREENSHOT_NAME, [n]);
end;


Du kan hente JCL og JVCL her: http://sourceforge.net/projects/jvcl/files/JVCL%203/JVCL%203.39/JVCL339CompleteJCL211-Build3536.7z/download
16. februar 2010 - 22:01 #2
HEJ,
Tak for indlægget.

Hent den der JVL -komponet og vil teste den.

Kommer igen senere (ikke i aften (tirsdag) ) Skal på arbejde (mere damn) .

STOOOOOOR tak (foreløbig).

KRIS
Avatar billede hrc Mester
16. februar 2010 - 22:13 #3
Hvorfor køber han ikke bare SnagIt der kan lave timer-grab, optagelse af sekvenser og selvfølgelig almindelige grabs. Et eminent program - som koster et par hundrede.
Avatar billede preppydude Nybegynder
16. februar 2010 - 22:17 #4
Et par hundrede er også en del hvis man selv kan lave noget der passer ens behov perfekt på 10 minutter. ;)
Avatar billede hrc Mester
17. februar 2010 - 10:24 #5
Du kan ikke lave det SnagIt kan, på 10 minutter! Mener trialversionen virker 100% i en måned. Det "vindue" burde være stort nok til at han kan grabbe det han behøver. Det er et rigtig smart program som fortjener hver en krone - om altså behovet er der. Det er et af de småprogrammer man ikke kan leve foruden, først det har været på disken: Ultraedit, UltraCompare, CSV (SVN, Tortoise), Altap Salamander, WinRar, 7zip, Axialis IconWorkshop, Delphi osv
Avatar billede preppydude Nybegynder
17. februar 2010 - 17:00 #6
Har på ingen måde påstået jeg kan lave SnagIt på 10 minutter. Det jeg mente var at den simple ting som det program her skal kunne (det OP skal bruge), det kan laves på 10 minutter. :) Og så sparer han de penge.
Avatar billede hrc Mester
19. februar 2010 - 07:14 #7
Det kan godt være du kanlave en grabber på 10 minutter, men hvorfor ikke bare bruge et program der kan det og måske en hel masse andre ting samtidig; ting som OP måske ikke vidste fandtes. Noget jeg føler bliver overset var at jeg skrev at man kunne hente en trial som ville kunne løse OP's behov. Der er ingen grund til at programmere hvis andre allerede stiller deres ekspertise til rådighed - endda på en måde der ikke kommer til at koste noget.

Det vat det simple argument jeg forsøgte mig med.
23. december 2011 - 11:42 #8
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester