Torna indietro   Hardware Upgrade Forum > Software > Programmazione

FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Da Las Vegas, la visione di Larry Ellison e la concretezza di Clay Magouyrk definiscono la nuova traiettoria di Oracle: portare l’intelligenza artificiale ai dati, non i dati all’intelligenza, costruendo un’infrastruttura cloud e applicativa in cui gli agenti IA diventano parte integrante dei processi aziendali, fino al cuore delle imprese europee
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1
Dalla precisione estrema dei componenti alla gestione digitale dei processi: come la piattaforma ServiceNow consente ad Aston Martin Aramco Formula One Team di ottimizzare risorse IT e flussi operativi in un ambiente dove ogni millesimo di secondo conta
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-09-2011, 03:13   #1
kulosia
Member
 
Iscritto dal: Jan 2010
Messaggi: 149
[C#] Screenshot continuo consumo cpu alta!!

Salve, ho un problema con questa parte di codice:

Codice:
        Try
            pobjCapture = New RDC2_Library.Capture.cDirectX()
        Catch ex As Exception
            pobjCapture = New RDC2_Library.Capture.cGDI()
        End Try

        pobjCapture.GetSnapshot()

        pintState_Size = pobjCapture.Length
        pintState_Buffer = Runtime.InteropServices.Marshal.AllocHGlobal(pintState_Size)

        pobjCapture.ReleaseSnapshot()



        pobjThread_Capture = New Threading.Thread(AddressOf Thread_Capture)
        pobjThread_Capture.IsBackground = True
        pobjThread_Capture.Start()
ogni volta che compilo e avvio l'eseguibile la cpu con un amd 965 consuma 20% di cpu!! Percentuale troppo alta.. infatti se lo uso sul portatile con intel celeron da 20% arriva a 100%.. l'errore è in questa parte di codice in qundo cattura le immagini del desktop, e per vedere se effettivamente è qui il problema ho tolto pobjThread_Capture.Start() e infatti da 20% si riduce a 0% "Che differenza.." qualcuno può aiutarmi a modificare questa parte di codice per capire come fare ad usare meno cpu??

aspetto risposte vi prego è urgente stò realizzando un progetto!!
kulosia è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2011, 11:34   #2
BrutalBass
Junior Member
 
Iscritto dal: Jul 2011
Messaggi: 14
Quote:
Originariamente inviato da kulosia Guarda i messaggi
Salve, ho un problema con questa parte di codice:

Codice:
        Try
            pobjCapture = New RDC2_Library.Capture.cDirectX()
        Catch ex As Exception
            pobjCapture = New RDC2_Library.Capture.cGDI()
        End Try

        pobjCapture.GetSnapshot()

        pintState_Size = pobjCapture.Length
        pintState_Buffer = Runtime.InteropServices.Marshal.AllocHGlobal(pintState_Size)

        pobjCapture.ReleaseSnapshot()



        pobjThread_Capture = New Threading.Thread(AddressOf Thread_Capture)
        pobjThread_Capture.IsBackground = True
        pobjThread_Capture.Start()
ogni volta che compilo e avvio l'eseguibile la cpu con un amd 965 consuma 20% di cpu!! Percentuale troppo alta.. infatti se lo uso sul portatile con intel celeron da 20% arriva a 100%.. l'errore è in questa parte di codice in qundo cattura le immagini del desktop, e per vedere se effettivamente è qui il problema ho tolto pobjThread_Capture.Start() e infatti da 20% si riduce a 0% "Che differenza.." qualcuno può aiutarmi a modificare questa parte di codice per capire come fare ad usare meno cpu??

aspetto risposte vi prego è urgente stò realizzando un progetto!!
Quello è VB:NET non C#

comunque sia, segui questo tutorial:

http://www.youtube.com/watch?v=Z-P874sfzTI

il tuo codice è proprio brutto...
BrutalBass è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2011, 12:41   #3
kulosia
Member
 
Iscritto dal: Jan 2010
Messaggi: 149
Si hai pienamente ragione è vb:net scusami, ieri non ci avevo proprio fatto caso ero pienamente consapevole che era vb:net ma ho scritto c# perchè cercavo sui motori di ricerca alcune cose in c#.. comunque ho visto il video e ho provato in quest'altro modo, con processore amd 965 dal codice di prima arrivava a 20% ora a 9-10%.. quindi penso che su un processore intel celeron consumi intorno ai 50-60% che sono ancora alti!! penso che il problema sia proprio lo screen continuo.. perchè in pratica uso lo screen continuo arrivando al punto da diventare come un video e vedere il desktop a distanza con un client e un server.. se il problema è proprio lo screen continuo c'è un'altro metodo??
ho provato ad usare tipo programmi professionali come teamviewer e non consumano nulla! cosa usano loro per non arrivare a percentuali di cpu alte??
kulosia è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2011, 21:19   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
In C# vai con questo.

Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Drawing.Imaging;

namespace SCreenCapture
{
    class Program
    {
        static void Main(string[] args)
        {
            ScreenCapture sc = new ScreenCapture();
            sc.CaptureScreenToFile("Prova.tiff", ImageFormat.Tiff);            
        }

        public class ScreenCapture
        {
            /// <summary>
            /// Creates an Image object containing a screen shot of the entire desktop
            /// </summary>
            /// <returns></returns>
            public Image CaptureScreen()
            {
                return CaptureWindow(User32.GetDesktopWindow());
            }
            /// <summary>
            /// Creates an Image object containing a screen shot of a specific window
            /// </summary>
            /// <param name="handle">The handle to the window. (In windows forms, this is obtained by the Handle property)</param>
            /// <returns></returns>
            public Image CaptureWindow(IntPtr handle)
            {
                // get te hDC of the target window
                IntPtr hdcSrc = User32.GetWindowDC(handle);
                // get the size
                User32.RECT windowRect = new User32.RECT();
                User32.GetWindowRect(handle, ref windowRect);
                int width = windowRect.right - windowRect.left;
                int height = windowRect.bottom - windowRect.top;
                // create a device context we can copy to
                IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);
                // create a bitmap we can copy it to,
                // using GetDeviceCaps to get the width/height
                IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, width, height);
                // select the bitmap object
                IntPtr hOld = GDI32.SelectObject(hdcDest, hBitmap);
                // bitblt over
                GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, GDI32.SRCCOPY);
                // restore selection
                GDI32.SelectObject(hdcDest, hOld);
                // clean up
                GDI32.DeleteDC(hdcDest);
                User32.ReleaseDC(handle, hdcSrc);
                // get a .NET image object for it
                Image img = Image.FromHbitmap(hBitmap);
                // free up the Bitmap object
                GDI32.DeleteObject(hBitmap);
                return img;
            }
            /// <summary>
            /// Captures a screen shot of a specific window, and saves it to a file
            /// </summary>
            /// <param name="handle"></param>
            /// <param name="filename"></param>
            /// <param name="format"></param>
            public void CaptureWindowToFile(IntPtr handle, string filename, ImageFormat format)
            {
                Image img = CaptureWindow(handle);
                img.Save(filename, format);
            }
            /// <summary>
            /// Captures a screen shot of the entire desktop, and saves it to a file
            /// </summary>
            /// <param name="filename"></param>
            /// <param name="format"></param>
            public void CaptureScreenToFile(string filename, ImageFormat format)
            {
                Image img = CaptureScreen();
                img.Save(filename, format);
            }

            /// <summary>
            /// Helper class containing Gdi32 API functions
            /// </summary>
            private class GDI32
            {

                public const int SRCCOPY = 0x00CC0020; // BitBlt dwRop parameter
                [DllImport("gdi32.dll")]
                public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest,
                    int nWidth, int nHeight, IntPtr hObjectSource,
                    int nXSrc, int nYSrc, int dwRop);
                [DllImport("gdi32.dll")]
                public static extern IntPtr CreateCompatibleBitmap(IntPtr hDC, int nWidth,
                    int nHeight);
                [DllImport("gdi32.dll")]
                public static extern IntPtr CreateCompatibleDC(IntPtr hDC);
                [DllImport("gdi32.dll")]
                public static extern bool DeleteDC(IntPtr hDC);
                [DllImport("gdi32.dll")]
                public static extern bool DeleteObject(IntPtr hObject);
                [DllImport("gdi32.dll")]
                public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
            }

            /// <summary>
            /// Helper class containing User32 API functions
            /// </summary>
            private class User32
            {
                [StructLayout(LayoutKind.Sequential)]
                public struct RECT
                {
                    public int left;
                    public int top;
                    public int right;
                    public int bottom;
                }
                [DllImport("user32.dll")]
                public static extern IntPtr GetDesktopWindow();
                [DllImport("user32.dll")]
                public static extern IntPtr GetWindowDC(IntPtr hWnd);
                [DllImport("user32.dll")]
                public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
                [DllImport("user32.dll")]
                public static extern IntPtr GetWindowRect(IntPtr hWnd, ref RECT rect);
            }
        }
    }
}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme ASUS GeForce RTX 5080 Noctua OC Edition: una cus...
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo Dreame Aqua10 Ultra Roller, la pulizia di casa c...
Object First annuncia il nuovo Ootbi Min...
IA, workplace e sicurezza per guidare la...
Amazon chiarisce il blackout AWS del 20 ...
I browser agentici non sono ancora matur...
Monitor da sogno per gamer: Alienware QD...
Anche gli LLM possono "rimbecillirs...
Offerte DJI da non perdere: droni e vide...
Anche Redmi ha il suo Pro Max: arriver&a...
Nike Project Amplify, le scarpe che ti m...
LG OLED evo G5 da 48 pollici a soli 839€...
Ricoh ha anticipato l'arrivo di una nuov...
iPhone 17 Pro non ha rivali: la fotocame...
Leica M EV1: il futuro della fotografia ...
Passione retrò: arrivano THEC64 Mini Bla...
Google risolve il problema delle pause: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v