Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305

    creare una voce in un menu esistente

    ho visto dei prgrammi che in dei menu di windows (tra cui il menu della taskbar) inseriscono una voce, ad esempio nel menu che compare selezionando un qualsiasi file sul pc col tasto destro in cui vi è APRI, MODIFICA, PROPRIETà, INVIA A, ECC.. io vorrei creare una voce in questi menu . spero di essermi spiegata. ho provato a trovare l'handle della tray bar e di altre finestre di windows insomma non so piu che fare. help. sono principiante e uso vb5
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  2. #2

    Re: creare una voce in un menu esistente

    Originariamente inviato da luisa227
    ho visto dei prgrammi che in dei menu di windows (tra cui il menu della taskbar) inseriscono una voce, ad esempio nel menu che compare selezionando un qualsiasi file sul pc col tasto destro in cui vi è APRI, MODIFICA, PROPRIETà, INVIA A, ECC.. io vorrei creare una voce in questi menu . spero di essermi spiegata. ho provato a trovare l'handle della tray bar e di altre finestre di windows insomma non so piu che fare. help. sono principiante e uso vb5
    per trovare gli handle ti basta findwindow() e per aggiungere i menù una appendmenu() ma se sei principiante comincia a fare cose un po' meno complicate stai precorrendo un po' i tempi
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    grazie xegallo, avevo già provato con quel sistema, ho fatto un sacco di prove, ma senza risultato. infine mi fumava il cervello...

    ma come faccio a recuperare l'handle (e che handle devo prendere?) x mettere una voce nel menu ( tasto destro su il nome di un file)dei file

    sono riuscita a trovare l'handle della tray bar...ora non ricordo il procedimento esatto che avevo fatto cmq poi devo distruggere il menu esistente con "destroy" (mi sebra di ricordare che ce un api che si kiama cosi)

    non so bene "cosa" prendere per l'handle dei files...
    boh se non kiedo troppo con un esempio... altrimenti va bene cosi
    grazie lo stesso

    non so come definirmi: "principiante" perchè studio vb x conto mio e non so a che livello sono. le operazione base penso di conoscerle...boh..
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  4. #4
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Per darti una idea della complessità, per fare 1 progetto completo con gestione dei menu tramite API ho dovuto fare tutte queste dichiarazioni:

    codice:
    'dichiarazioni API
    Public Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
    Public Declare Function CreatePopupMenu Lib "user32" () As Long
    Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
    Public Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
    Public Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (a As Any, B As Any, ByVal C As Long)
    Public Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
    Public Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
    Public Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
    Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
    Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&) As Long
    Public Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
    Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Public Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
    Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook&) As Long
    Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
    'costanti
    Public Const MF_POPUP = &H10& 'menù popup
    Public Const MF_SEPARATOR = &H800& 'separatore
    Public Const MF_BYCOMMAND = &H0&
    Public Const MF_STRING = &H0&
    Public Const MF_CHECKED = &H8&
    Public Const MF_GRAYED = &H1&
    Public Const MF_BYPOSITION = &H400&
    Public Const MOD_ALT = &H1 'tasto ALT per shortcut
    Public Const MOD_CONTROL = &H2 'tasto CTRL per shortcut
    Public Const MOD_SHIFT = &H4 'tasto SHIFT per shortcut
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_HOTKEY = &H312
    Public Const WM_SYSCOMMAND = &H112
    Public Const WM_COMMAND = &H111
    Public Const WM_SETCURSOR = &H20
    Public Const WM_NCPAINT = &H85
    Public Const WM_MOVE = &H3
    Public Const SWP_FRAMECHANGED = &H20
    Public Const GWL_EXSTYLE = -20
    'type - enum
    Public Enum MenuFlags
     checked = &H1
     Hidden = &H2
     Grayed = &H4
     PopUp = &H8
     WindowList = &H20
     LastItem = &H100
    End Enum
    Public Type struct_mnu
     handle As Long
    End Type
    Public Type MenuStruct
     Reserved(0 To 54) As Long 'se usato con vb5 cambiare 54 in 48
     dwFlags As MenuFlags
     lpNextMenu As Long
     lpFirstItem As Long
     lpszName As Long
     hMenu As Long
     wID As Integer
     wShortcut As Integer
    End Type
    Public Type MenuStruct_exe
     Reserved(0 To 51) As Long 'la struttura è purtroppo diversa tra IDE e EXE
     dwFlags As MenuFlags
     lpNextMenu As Long
     lpFirstItem As Long
     lpszName As Long
     hMenu As Long
     wID As Integer
     wShortcut As Integer
    End Type
    Public Type CWPSTRUCT
        lParam As Long
        wParam As Long
        Message As Long
        hWnd As Long
    End Type
    Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    'dichiarazioni variabili e matrici
    Public mnu() As struct_mnu
    Public lPrevWndProc As Long 'per subclassing
    Public totshortcut As Integer 'totale shortcut creati,
    Public handle_menu As Long 'handle del menù della form
    Public handle_button_end As Long 'handle bottone
     'nella barra del titolo, mi serve per toglierlo
     'all'uscita del programma
    Public xl As Long
    Public hook_title_bar As Long
    'dichiarazioni per altezza barra del titolo
    Public Type NMLOGFONT
     lfHeight As Long
     lfWidth As Long
     lfEscapement As Long
     lfOrientation As Long
     lfWeight As Long
     lfItalic As Byte
     lfUnderline As Byte
     lfStrikeOut As Byte
     lfCharSet As Byte
     lfOutPrecision As Byte
     lfClipPrecision As Byte
     lfQuality As Byte
     lfPitchAndFamily As Byte
     lfFaceName(28) As Byte
    End Type
    Public Type NONCLIENTMETRICS
      cbSize As Long
      iBorderWidth As Long
      iScrollWidth As Long
      iScrollHeight As Long
      iCaptionWidth As Long
      iCaptionHeight As Long
      lfCaptionFont As NMLOGFONT
      iSMCaptionWidth As Long
      iSMCaptionHeight As Long
      lfSMCaptionFont As NMLOGFONT
      iMenuWidth As Long
      iMenuHeight As Long
      lfMenuFont As NMLOGFONT
      lfStatusFont As NMLOGFONT
      lfMessageFont As NMLOGFONT
     End Type
    Public Const SPI_GETNONCLIENTMETRICS = 41
    Public m_tNCM As NONCLIENTMETRICS
    Comunque se sei ancora convinta...

  5. #5
    ottima dimostrazione di copia incolla anche se ci suno a occhio almeno 5 funzioni in più

    cerchiamo di evitare di postare così tanto codice tanto + se è inutile.
    Grazie
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  6. #6
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    si, io non ci sono ankora arrivata a tante api cosi ma una decina me ne sono uscite fuori. comunque sono + convinta di prima...forse un giorno ci arriverò...ma almeno posso sapere dove ricavare info sul tipo di parametro da passare nella API? ALCUNE RICHIEdono dei parametri specifici che non ci sono scritti da nessuna parte..
    ad esempio oggi ho scoperto...non so come...diuna costante che se è &H2 corrisponde a Copia , se &H4 a RINOMINA... BOH...
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  7. #7
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305

    FORSE NON SERVONO TUTTE QUELLE API…

    allora…ho scoperto che creando una nuova kiave sotto HKEY_ CLASSES_ROOT\Folder\ shell\ del registro di sistema riesco a mettere una voce (ad esempio “MioProgr” che avvia il mio programma) nel famoso menu che si apre quando si clicca con il tasto destro del mouse su una cartella qualsiasi. Praticamente io vorrei fare la stessa cosa ma…

    1),,, per i file, non x le cartelle.
    2)…vorrei che dopo aver selezionato la cartella (o il file) e scegliendo, attraverso il menu che compare col tasto destro, la voce creata in precedenza (Cioè MioProg), si avviasse il mio programma e che venga passata al programma stesso una stringa contenente il percorso della cartella o del file selezionato.

    Spero questa volta di essermi spiagata bene. Ki mi può aiutare?
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  8. #8
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    DIMENTICAVO USO VB5, NON VB.NET!!!
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

  9. #9
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305

    Re: FORSE NON SERVONO TUTTE QUELLE API…

    Originariamente inviato da luisa227
    allora…ho scoperto che creando una nuova kiave sotto HKEY_ CLASSES_ROOT\Folder\ shell\ del registro di sistema riesco a mettere una voce (ad esempio “MioProgr” che avvia il mio programma) nel famoso menu che si apre quando si clicca con il tasto destro del mouse su una cartella qualsiasi. Praticamente io vorrei fare la stessa cosa ma…

    1),,, per i file, non x le cartelle.
    2)…vorrei che dopo aver selezionato la cartella (o il file) e scegliendo, attraverso il menu che compare col tasto destro, la voce creata in precedenza (Cioè MioProg), si avviasse il mio programma e che venga passata al programma stesso una stringa contenente il percorso della cartella o del file selezionato.

    Spero questa volta di essermi spiagata bene. Ki mi può aiutare?
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

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.