Bonjour,
Je travail sur vb.net visual basic 2008. Mon objectif est de créer mon propre namespace sur l’explorateur et gérer les événements comme sur windows.
Pour la création du namespace avec les sous dossiers j’utilise une dll C++ et je peux gérer les événements en modifiant le code C++.
Comme dans le message map suivant, j’appelle la fonction Hello sur l’événement de double click sur un dossier dans le listView
J’ai une fonction wndProc pour le traitement des messages
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 BEGIN_MSG_MAP(MyshellView) NOTIFY_CODE_HANDLER(HDN_ITEMCLICK, Hello) COMMAND_ID_HANDLER(ID_NEWITEM_FOLDER, OnNewFolder) NOTIFY_CODE_HANDLER(LVN_BEGINLABELEDIT, OnLabelEditBegin) NOTIFY_CODE_HANDLER(LVN_ENDLABELEDIT, OnLabelEditEnd) END_MSG_MAP()
Pour importer mes fonctions dll vers mon projet VB, je procède à cette déclaration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 LRESULT CALLBACK MyShellView::WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) { . . lRes = :: DefWindowProc(hWnd,uMessage, wParam, lParam); return lRes; } template <class TBase> INT_PTR CALLBACK CDialogImplBaseT< TBase >::StartDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return pProc(hWnd, uMsg, wParam, lParam); } template <class TBase> INT_PTR CALLBACK CDialogImplBaseT< TBase >:: DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { CDialogImplBaseT< TBase >* pThis = (CDialogImplBaseT< TBase >*)hWnd; // set a ptr to this message and save the old value _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam); const _ATL_MSG* pOldMsg = pThis->m_pCurrentMsg; pThis->m_pCurrentMsg = &msg; // pass to the message map to process LRESULT lRes; BOOL bRet = pThis->ProcessWindowMessage(pThis->m_hWnd, uMsg, wParam, lParam, lRes, 0); if(bRet) { switch (uMsg) { case WM_COMPAREITEM: . // return directly bRet = (BOOL)lRes; break } . . return bRet; }
Maintenant mon but c’est de récupérer les événements de la dll vers mon projet Vb.net et gérer ma base de données suite au événement effectué .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Overloads Declare Sub Hello Lib _ "D:\ \Debug\Mydll.dll" ()
Avez-vous une idée comment faire pour catcher l’événement sur mon projet exe VB.net ?
Ca fait une semaine que je cherche sur internet et je trouve pas de solution, j’espère que mon problème est claire pour que vous puissiez m’aider.![]()
Merci d’avance à tous.
Partager