Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4

    Console Application con GUI [vb.net]

    Salve

    Volevo sapere se era possibile utilizzare un MessageBox in un progetto di console application...
    ho provato a usare un import del tipo Imports System.windows.forms dato che Public Class MessageBox è membro di System.Windows.Forms ma mi da errore : Errore 2 Nome 'MessageBox' non dichiarato.

    come posso risolvere ?

    grazie mille
    Al mondo ci sono 10 tipi di persone: quelle che sanno il linguaggio binario e quelle che non lo sanno....

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537

    Re: Console Application con GUI [vb.net]

    Originariamente inviato da rete27
    Salve

    Volevo sapere se era possibile utilizzare un MessageBox in un progetto di console application...
    ho provato a usare un import del tipo Imports System.windows.forms dato che Public Class MessageBox è membro di System.Windows.Forms ma mi da errore : Errore 2 Nome 'MessageBox' non dichiarato.

    come posso risolvere ?

    grazie mille
    codice:
    class Program
        {
            static void Main(string[] args)
            {
                MessageBox(0, "testo", "titolo", 0);
            }
    
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            static extern int MessageBox(int hwnd, string message, string title, int options);
        }

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537

    Re: Re: Console Application con GUI [vb.net]

    Originariamente inviato da U235
    codice:
    class Program
        {
            static void Main(string[] args)
            {
                MessageBox(0, "testo", "titolo", 0);
            }
    
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            static extern int MessageBox(int hwnd, string message, string title, int options);
        }

    scusa non ho visto che lo volevi in vb...

  4. #4
    Aggiungi ai riferimenti del progetto un riferimento a System.Windows.Forms.dll.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    come si traduce in vb.net il cod. che ho postato?

    lo chiedo perchè vorrei appurare delle cose (a livello di differnza tra i due linguaggi).

    grassie

  6. #6
    codice:
    Module Program 'si potrebbe usare anche una classe con soli metodi statici
        Public Sub Main(ByVal Args() As String)
            MessageBox(System.IntPtr.Zero, "testo", "titolo", 0)
        End Sub
        <System.Runtime.InteropServices.DllImport("user32.dll")> _
        Public Function MessageBox(ByVal hwnd As System.IntPtr, ByVal message As String, ByVal title As String, ByVal options As Integer) As Integer
        End Function
    End Module
    In ogni caso sconsiglio vivamente l'utilizzo di questo codice, il .NET Framework fornisce già una classe che fa questo mestiere ed è quindi bene utilizzarla.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Originariamente inviato da MItaly
    codice:
    Module Program 'si potrebbe usare anche una classe con soli metodi statici
        Public Sub Main(ByVal Args() As String)
            MessageBox(System.IntPtr.Zero, "testo", "titolo", 0)
        End Sub
        <System.Runtime.InteropServices.DllImport("user32.dll")> _
        Public Function MessageBox(ByVal hwnd As System.IntPtr, ByVal message As String, ByVal title As String, ByVal options As Integer) As Integer
        End Function
    End Module
    In ogni caso sconsiglio vivamente l'utilizzo di questo codice, il .NET Framework fornisce già una classe che fa questo mestiere ed è quindi bene utilizzarla.

    prima di tutto grazie

    è vero, il framework fa bene il suo lavoro, e li apposta nelle form. Ho provato a misurare il carico facendo in tutti e due i modi con il programma console, il risultato è che chiamando il metodo esterno si ha un lieve miglioramento delle prestazioni (minore memoria), e mi chiedevo se anche con vb chiamando solo il messagebox (da user32) si riscontrasse questo miglioramento.

    provero' anche in vb... e grazie della traduzione.

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    confermo anche in vb.net usa meno memoria user32.dll

  9. #9
    È normale, la chiamata diretta a MessageBoxW non richiede che il caricamento di user32.dll (che tra l'alto è sicuramente già caricata in memoria dagli altri processi, per cui il suo caricamento sarà velocissimo), mentre l'utilizzo della classe MessageBox richiede il caricamento di System.Windows.Forms.dll, una dll piuttosto grande e che tra l'altro dipende da user32.dll e da diverse altre librerie di sistema, che devono a loro volta essere caricate.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Originariamente inviato da MItaly
    È normale, la chiamata diretta a MessageBoxW non richiede che il caricamento di user32.dll (che tra l'alto è sicuramente già caricata in memoria dagli altri processi, per cui il suo caricamento sarà velocissimo), mentre l'utilizzo della classe MessageBox richiede il caricamento di System.Windows.Forms.dll, una dll piuttosto grande e che tra l'altro dipende da user32.dll e da diverse altre librerie di sistema, che devono a loro volta essere caricate.
    confermo ma comunque poca roba...

    hai provato la differenza?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.