Sviluppare funzionalita su Microsoft Office con VBA Regolare il volume di sistema

LoginRegistrati
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #11527 Risposta
    Fabio
    Fabio
    Partecipante

      Vorrei che in avvio quindi nella cartella di lavoro il volume di sistema venga regolato a 18.

      18 intendo il valore del volume di sistema, quindi qualsiasi sia il volume prima dell'avvio voglio che lo imposti a 18.

       

      Spero sia possibile con Vba in alternativa sempre con il vostro aiuto se credete sia più facile crearla in Vb.Net per me fa lo stesso, nel secondo caso farò chiamare l'eventuale file (volume.exe) ad Excel in avvio e credo che la discussione debba essere spostata nel ramo VB.

      #11545 Risposta
      Marius44
      Marius44
      Moderatore
      • Sfida #4
        9 pts

        Ciao

        Non credo sia semplicissimo ma prova a questo indirizzo:

        http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=66975&lngWId=1

         

        Ciao,

        Mario

        #11549 Risposta
        Fabio
        Fabio
        Partecipante

          Credevo era un software, ho scaricato il codice ma ...

          Ho trovato i seguenti file:

          *.cls, *.frm, *.frx, *.vbp

          Non so come leggerli.

          Quindi resterò in attesa di una risposta più facile e diretta.

          Mi piacerebbe avere il codice "Vba, Vb.Net" sotto mano, per apprendere nuove funzionalità e per inserirlo più comodamente nel mio progetto.

           

           

          #11560 Risposta

          vecchio frac
          Senior Moderator
          • Sfida #1
            136 pts

            Fabio ha scritto:

            se credete sia più facile crearla in Vb.Net per me fa lo stesso

            Per noi no però, perchè qui si parla solo di Excel e mondo Office che espone solo VBA.

            Fabio ha scritto:

            credo che la discussione debba essere spostata nel ramo VB.

            In questo forum non abbiamo una sezione dedicata a VB classico.

            Il link di Supermario propone di scaricare un insieme di elementi che messi insieme costituiscono un form e del codice VB. Credo che potrebbero essere adattati a VBA ma a te interessa la gestione del beep di sistema, credo. Quindi bisognerebbe analizzare il codice proposto per arrivarci. 

            Fabio ha scritto:

            Ho trovato i seguenti file

            ecco, tu confermi quello che ho detto un attimo fa. Quei file vano semplicemente importati nell'editor di VBA. Però credo che se si tratta di elementi VB, l'importazione semplice fallirà... bisognerebbe guardare i sorgente per capire come intervenire.

            Hai cercato semplicemente se c'è un'API di sistema che gestisce il volume? Inoltre: utilizzi un sistema a 32 o 64 bit?

            Ho googlato un attimo e ho trovato del codice carino che fa quello che chiedi, mediante una semplice API.

            #11561 Risposta

            vecchio frac
            Senior Moderator
            • Sfida #1
              136 pts

              Ecco il codice:

              Option Explicit
              
              Const VK_VOLUME_MUTE = &HAD
              Const VK_VOLUME_DOWN = &HAE
              Const VK_VOLUME_UP = &HAF
              
              #If VBA7 Then
                  Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
              #Else
                  Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
              #End If
              
              Sub VolUp()
                 keybd_event VK_VOLUME_UP, 0, 1, 0
                 keybd_event VK_VOLUME_UP, 0, 3, 0
              End Sub
              
              Sub VolDown()
                 keybd_event VK_VOLUME_DOWN, 0, 1, 0
                 keybd_event VK_VOLUME_DOWN, 0, 3, 0
              End Sub
              
              Sub VolToggle()
                 keybd_event VK_VOLUME_MUTE, 0, 1, 0
              End Sub

              Non è per niente difficile capire come usare queste routine ma se hai bisogno chiedi pure.

              #11601 Risposta
              Fabio
              Fabio
              Partecipante

                Io ho creato questa che speravo funzionasse ma non possiedo il file coredll.dll.

                Il volume Normal non l'ho mai potuto provare ha causa della mancanza del file coredll.dll.

                Si può fare in altro modo?

                Il codice proposto dal Vecchio Frac (alza, abbassa e silenzia) io invece vorrei impostarlo a 18 qualsiasi sia il volume di partenza.

                 

                Imports System.Runtime.InteropServices
                Public Class Form1
                    Public Enum Volumes As Integer
                        NORMAL = 1717986918
                    End Enum
                    Declare Function waveOutSetVolume Lib "CoreDll.dll" (ByVal device As IntPtr, ByVal volume As Integer) As Integer
                    Declare Function waveOutGetVolume Lib "CoreDll.dll" (ByVal device As IntPtr, ByRef volume As Integer) As Integer
                    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
                        waveOutSetVolume(IntPtr.Zero, CType(Volumes.NORMAL, Integer))
                        Dim intOttieni As Integer = 0
                        waveOutGetVolume(IntPtr.Zero, intOttieni)
                        Dim StrVolume As String = ""
                 
                        Select Case intOttieni
                            Case CType(Volumes.NORMAL, Integer)
                                StrVolume = "NORMALE"
                        End Select
                        MessageBox.Show(StrVolume)
                    End Sub
                End Class

                #11605 Risposta

                vecchio frac
                Senior Moderator
                • Sfida #1
                  136 pts

                  Ho testato il codice che ti ho illustrato e mi sembra funzionare (Excel 2013, Office 64 bit). Per raggiungere l'obiettivo probabilmente basta un ciclo che abbassa tutto a zero e poi alzarlo gradualmente al valore desiderato (sul mio sistema lo scalino è di due punti per ogni chiamata alla funzione). Anche se ritengo che forzare all'utente il volume dello speaker non sia una buona idea 🙂 

                  #11666 Risposta
                  Fabio
                  Fabio
                  Partecipante

                    Purtroppo mi sono accorto che la "Normalizzazione del volume" va fatta prima di Lanciatore.exe siccome come ho già spiegato ho perduto il codice sorgente "Vb" non posso utilizzare il codice.

                    Ma siccome sono sicuro che funziona, provenendo il codice (vba-Excel) da vecchio frac, chiudo la discussione!

                     

                    #11670 Risposta

                    vecchio frac
                    Senior Moderator
                    • Sfida #1
                      136 pts

                      Fabio ha scritto:

                      Io ho creato questa che speravo funzionasse ma non possiedo il file coredll.dll.

                      AL di là di tutto, il codice che hai illustrato è per VB.Net, e non va bene per Excel.

                      #11673 Risposta

                      vecchio frac
                      Senior Moderator
                      • Sfida #1
                        136 pts

                        Fabio ha scritto:

                        ho perduto il codice sorgente "Vb"

                        Dunque non sai cosa fanno "Lanciatore" e "Ripristina" ? Perchè se invece sì, potresti ripristinarli magari in vbs.

                        #11743 Risposta
                        Fabio
                        Fabio

                          Si dovevo spiegare che il codice era Vb.net, comunque per i file "*.exe " da me compilati in vb.net ho solo i file (exe) scampati ad una formattazione "perché salvati in altro hd " non mi ero ricordati di salvare l'intero progetto!!

                        LoginRegistrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: Regolare il volume di sistema
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni:



                        vecchio frac - 2040 risposte

                        albatros54
                        albatros54 - 646 risposte

                        patel
                        patel - 501 risposte

                        Marius44
                        Marius44 - 408 risposte

                        Luca73
                        Luca73 - 369 risposte