Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - context menu
Forum - Visual Basic 6 - context menu

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:35
Domenica, 18/11/2007
Ciao!
Come posso fare in modo ke, se premuto un pulsante, il mio programma si aggiunga al context menu??

PM Quote
Avatar
gius (Ex-Member)
Expert


Messaggi: 294
Iscritto: 20/06/2007

Segnala al moderatore
Postato alle 14:22
Lunedì, 19/11/2007
context cosa?!:-|:-|

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:24
Lunedì, 19/11/2007
Adesso cerkerò di spiegarti con un esempio kosa è un context menu...

hai presente quando klikki con il tasto destro del mouse su un file?

Naturalmente ti appare un menu, quello è si kiama il context menu..

spero di essere stato kiaro:asd:...

PM Quote
Avatar
antometal (Member)
Guru


Messaggi: 691
Iscritto: 12/09/2007

Segnala al moderatore
Postato alle 16:36
Lunedì, 19/11/2007
innanzi tutto crei il menù lo metti deselezioni il visible

poi nel mouseup o mousedown della form metti

if button = vbrightbutton then Popup nomemenu

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:47
Lunedì, 19/11/2007
scusa, nn mi sn spiegato bene...
non voglio imitare il context menu ma voglio ke il mio programma vi si inserisca fra i vari elementi...

PM Quote
Avatar
gius (Ex-Member)
Expert


Messaggi: 294
Iscritto: 20/06/2007

Segnala al moderatore
Postato alle 15:35
Mercoledì, 21/11/2007
Prova questo

Codice sorgente - presumibilmente VB.NET

  1. in un modulo bas
  2.  
  3. Public Declare Function SetWindowLong Lib "user32"
  4. Alias "SetWindowLongA" (ByVal hwnd As Long, _
  5. ByVal nIndex As Long, ByVal dwNewLong As Long)
  6. As Long
  7. Public Declare Function CallWindowProc Lib "user32"
  8. Alias _
  9. "CallWindowProcA" (ByVal lpPrevWndFunc As Long,
  10. ByVal hwnd As Long, ByVal Msg As Long, _
  11. ByVal wParam As Long, ByVal lParam As Long) As
  12. Long
  13. Public Const WM_SYSCOMMAND = &H112
  14. ‘Messaggio ricevuto dalla finestra
  15. Public Const MF_SEPARATOR = &H800&
  16. ‘Linea che divide le voci di menu
  17. Public Const MF_STRING = &H0&
  18. ‘Specifica che la voce di menu è una stringa
  19. Public Const GWL_WNDPROC = (-4)
  20. ‘Indice per creare una sotto classe con
  21. SetWindowLong
  22. Public VecchiaProc As Long
  23. ‘Indirizzo Window Procedure di Default
  24. Public Const IDM_MenuApri As Long = 1010
  25. ‘Identificatore voce di menu Apri
  26. Public Const IDM_MenuChiudi As Long = 1020
  27. ‘Identificatore voce di menu chiudi
  28. Public Declare Function AppendMenu Lib "user32"
  29. Alias "AppendMenuA" _
  30. (ByVal hMenu As Long, _
  31. ByVal wFlags As Long, _
  32. ByVal wIDNewItem As Long, _
  33. ByVal lpNewItem As String) As Long
  34. Public Declare Function GetSystemMenu Lib "user32"
  35. _
  36. (ByVal hwnd As Long, _
  37. ByVal bRevert As Long) As Long
  38. Public Function SubMenuForm(param As Form)
  39. Dim IDSysMenu As Long, ValRet As Long
  40. IDSysMenu = GetSystemMenu(param.hwnd, 0&)
  41. ValRet = AppendMenu(IDSysMenu,
  42. MF_SEPARATOR, _
  43. 0&, vbNullString)
  44. ValRet = AppendMenu(IDSysMenu, MF_STRING, _
  45. IDM_MenuApri, "Apri pippino.exe")
  46. ValRet = AppendMenu(IDSysMenu, MF_STRING, _
  47. VecchiaProc = SetWindowLong(param.hwnd, _
  48. GWL_WNDPROC, AddressOf GestMenuForm)
  49. End Function
  50. Public Function GestMenuForm(ByVal hwnd As
  51. Long, _
  52. ByVal iMsg As Long, ByVal wParam As Long, _
  53. ByVal lParam As Long) As Long
  54. If iMsg = WM_SYSCOMMAND Then
  55. Select Case wParam
  56. Case IDM_MenuApri
  57. Apriprog
  58. Exit Function
  59. End Select
  60. End If
  61. GestMenuForm = CallWindowProc(VecchiaProc, _
  62. hwnd, iMsg, wParam, lParam)
  63. End Function
  64. Public Sub Apriprog()
  65. Shell App.Patch & "/pippino.exe"
  66. End Sub



:D:D:D
__________________________________________________

Gius nuovo moderatore della sezione visual basic:D:D:D

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 17:47
Mercoledì, 21/11/2007
Mi spiace ma il codice nn funge...
cioè manko me lo fà compilare, poi ci sn degli errori...

Ma ti funziona?

cmq nn capisco molto bene il pezzo:

[...]

ValRet = AppendMenu(IDSysMenu, MF_STRING, _
VecchiaProc = SetWindowLong(param.hwnd, ...

[...]

ValRet = AppendMenu(IDSysMenu, MF_STRING, _
rimane incompleto, cosa ci devo mette dopo?

PM Quote
Avatar
gius (Ex-Member)
Expert


Messaggi: 294
Iscritto: 20/06/2007

Segnala al moderatore
Postato alle 21:45
Mercoledì, 21/11/2007
Testo quotato

Postato originariamente da gius:

Prova questo

Codice sorgente - presumibilmente VB.NET

  1. in un modulo bas
  2.  
  3. Public Declare Function SetWindowLong Lib "user32"
  4. Alias "SetWindowLongA" (ByVal hwnd As Long, _
  5. ByVal nIndex As Long, ByVal dwNewLong As Long)
  6. As Long
  7. Public Declare Function CallWindowProc Lib "user32"
  8. Alias _
  9. "CallWindowProcA" (ByVal lpPrevWndFunc As Long,
  10. ByVal hwnd As Long, ByVal Msg As Long, _
  11. ByVal wParam As Long, ByVal lParam As Long) As
  12. Long
  13. Public Const WM_SYSCOMMAND = &H112
  14. ‘Messaggio ricevuto dalla finestra
  15. Public Const MF_SEPARATOR = &H800&
  16. ‘Linea che divide le voci di menu
  17. Public Const MF_STRING = &H0&
  18. ‘Specifica che la voce di menu è una stringa
  19. Public Const GWL_WNDPROC = (-4)
  20. ‘Indice per creare una sotto classe con
  21. SetWindowLong
  22. Public VecchiaProc As Long
  23. ‘Indirizzo Window Procedure di Default
  24. Public Const IDM_MenuApri As Long = 1010
  25. ‘Identificatore voce di menu Apri
  26. Public Const IDM_MenuChiudi As Long = 1020
  27. ‘Identificatore voce di menu chiudi
  28. Public Declare Function AppendMenu Lib "user32"
  29. Alias "AppendMenuA" _
  30. (ByVal hMenu As Long, _
  31. ByVal wFlags As Long, _
  32. ByVal wIDNewItem As Long, _
  33. ByVal lpNewItem As String) As Long
  34. Public Declare Function GetSystemMenu Lib "user32"
  35. _
  36. (ByVal hwnd As Long, _
  37. ByVal bRevert As Long) As Long
  38. Public Function SubMenuForm(param As Form)
  39. Dim IDSysMenu As Long, ValRet As Long
  40. IDSysMenu = GetSystemMenu(param.hwnd, 0&)
  41. ValRet = AppendMenu(IDSysMenu,
  42. MF_SEPARATOR, _
  43. 0&, vbNullString)
  44. ValRet = AppendMenu(IDSysMenu, MF_STRING, _
  45. IDM_MenuApri, "Apri pippino.exe")
  46. [b]ValRet = AppendMenu(IDSysMenu, MF_STRING, _
  47. VecchiaProc = SetWindowLong(param.hwnd, _
  48. GWL_WNDPROC, AddressOf GestMenuForm)[/b]
  49. End Function
  50. Public Function GestMenuForm(ByVal hwnd As
  51. Long, _
  52. ByVal iMsg As Long, ByVal wParam As Long, _
  53. ByVal lParam As Long) As Long
  54. If iMsg = WM_SYSCOMMAND Then
  55. Select Case wParam
  56. Case IDM_MenuApri
  57. Apriprog
  58. Exit Function
  59. End Select
  60. End If
  61. GestMenuForm = CallWindowProc(VecchiaProc, _
  62. hwnd, iMsg, wParam, lParam)
  63. End Function
  64. Public Sub Apriprog()
  65. Shell App.Patch & "/pippino.exe"
  66. End Sub



:D:D:D
__________________________________________________

Gius nuovo moderatore della sezione visual basic:D:D:D



Guarda bene prima di postare:ot:

Per gli errori dimmi quali sono e vediamo se li posso corregere

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 23:56
Mercoledì, 21/11/2007
beh io non ho letto il codice ma ho già visto che nella penultima riga c'è "app.patch", che a meno che non abbiano inserito un nuovo method, credo che non esista.
magari app.path
E COMUNQUE VANNO LE VIRGOLETTE PERCHE' ALTRIMENTI AL PRIMO SPAZIO LO SHELL VA TUTTO A ...
hai provato il codice prima di postarlo?

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo