Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
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


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Metroid Prime Beyond: arriva un trailer ...
Fujifilm GFX Eterna 55: una soluzione co...
Stardew Valley arriva su Switch 2: una c...
E-bike fat legale con "pulsante mag...
Nintendo Virtual Boy: l'accessorio per S...
Popucom si presenta come uno dei miglior...
Super Mario Galaxy il film: l'idraulico ...
Stellantis, contro risposta a BYD: "...
Microsoft evita una sanzione in Europa p...
TCL a IFA 2025: TV Mini LED, smartphone ...
Neanche la politica è salva: l'Al...
I nuovi Pixel 10 in mostra a Milano con ...
Perplexity di nuovo in tribunale: Merria...
AirPods 4 al minimo su Amazon: la versio...
Sam Altman sempre più convinto: l...
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: 06:56.


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