Hej Hej Arathorn, Jag har läst lite grann men om jag har tolkat det hela rätt så kan du om du attachar dig till en process få den att skriva ut det grafiska genom att skicka t.ex. wm_paintclient, där man även bifogar en panel... problemet är bara att man måste tillhöra samma process för att få det att fungera... Så mitt egentliga problem är ju att försöka få till nån windowshook för att kunna se om man kan skriva ut ett fönster. Jag vet att windowshook frågan har varit uppe tidigare men jag vet inte om nån har nån direkt lösning på det... Hej, på Macen gör dom ju så (alltså Jaguar och Panter) och det ser snyggt ut. Problemet med Windows är att ett applikationsfönster kan vara i ett av tre lägen: maximerat, normal och minimerat."screenshot" på minimerat fönster
Skulle vilja ta ett screenshot på ett minimerat fönster, har kollat runt lite på nätet och wm_printclient verkar vara det som man skall använda. Samtidigt står det att man bara kan använda det på fönster som tillhör samma process om man inte använder en windowhook...
Är det nån som har gjort nånting liknande som kan hjälpa en i mörkret famlande?
Hur kan jag ta ett screenshot på ett minimerat fönster?
******EDIT***********
Äsch, såg att hultan hade lagt upp ett exempel... ska testa det och sen återkommer jag om jag inte får det att fungera...
å jag som brukar klaga på folk att de inte söker :-P
*******EDIT 2**********
ok, det exemplet verkar inte riktigt var det jag är ute efter... jag vill ju inte aktivera fönstret utan bara ta ett screenshot på det trots att det är minimerat...Sv: "screenshot" på minimerat fönster
Nej, mitt exempel kräver att fönstret är synligt. Jag är inte säker på om det tekniskt går att ta en screenshot på ett formulär som är minimerat. Lite tveksam är jag eftersom jag alltid inbillat mig att screenshots är en minnesdump av den aktuella minnesarean som skärmen visar vid det aktuella tillfället. Har ingen aning om hur det fungerar i moderna operativsystem i o f s, men jag föreställer mig att det vid varje skärmuppdatering finns en pekare som pekar på en minnesaren som är pixelbredd*pixelhöjd*färgdjup (i bytes) antal bytes stor och att det är denna som man tar en hel eller delvis kopia av och minimerade fönster är ju uppenbarligen inte en del av denna area eftersom de inte är synliga, men jag kan vara helt snett ute här. /PerSv: "screenshot" på minimerat fönster
min tanke var iallafall att kunna ha typ en panel med alla fönster i en mindre storlek så att man lättare skulle kunna öppna "rätt" fönster, och även kunna se om det har hänt nåt i det fönstret...Sv: "screenshot" på minimerat fönster
En lustig detalj är att Windows API-funktionen för detta heter IsIconic(), inte IsMinimized() som man skulle kunna tro, beroende på i Windows 1, 2 och 3 så parkerades programmet som en ikon istället för en rektangel som idag.
Hursomhelst, i minimerat läge så är normalt all ritning bortkopplad och Windows lägger ut ikonen och namnet på ditt program åt dig i rektangeln på taskbaren. Det är inget som hindrar att man ritar där själv, men 99.99% av alla Windowsprogram gör inte det.
Men med API-hookning så bör det gå:
1) Sätta klass-ikonen för programmets fönster till NULL så att Windows skickar WM_PAINT meddelande fast programmet är mimimerat.
2) Koppla in sig på IsIconic() API-anropet så att det returnerar FALSE istället för TRUE. Programmet luras då att rita på vanligt sätt
Mer utredning av detta behövs...